树莓派通过ADC0832采集模拟量
来源:互联网 发布:ubuntu c语言开发环境 编辑:程序博客网 时间:2024/05/01 08:16
树莓派通过ADC0832采集模拟量
花费了近两个小时的时间,终于成功地将基于51MCU平台的ADC0832代码移植到了树莓派上。
ADC0832芯片的具体参数和用法我就不做解释了,网上一抓一大把。现在,将我写的代码呈现出来,供大家参考,本人才疏学浅,代码如有僻陋,敬请拍砖!
下图是ADC0832与树莓派的连接图,只需要三根线:
#include <wiringPi.h>#include <stdio.h>typedef unsigned char uchar;typedef unsigned int uint;#define ADC_CS 0#define ADC_CLK 1#define ADC_DIO 2uchar get_ADC_Result(void){uchar i;uchar dat1=0, dat2=0;digitalWrite(ADC_CS, 0);digitalWrite(ADC_CLK,0);digitalWrite(ADC_DIO,1);delayMicroseconds(2);digitalWrite(ADC_CLK,1);delayMicroseconds(2);digitalWrite(ADC_CLK,0);digitalWrite(ADC_DIO,1); delayMicroseconds(2);digitalWrite(ADC_CLK,1);delayMicroseconds(2);digitalWrite(ADC_CLK,0);digitalWrite(ADC_DIO,0);delayMicroseconds(2);//这里若写ADC_DIO为1,则选用通道1进行AD转换digitalWrite(ADC_CLK,1);digitalWrite(ADC_DIO,1); delayMicroseconds(2);digitalWrite(ADC_CLK,0);digitalWrite(ADC_DIO,1); delayMicroseconds(2);for(i=0;i<8;i++){digitalWrite(ADC_CLK,1);delayMicroseconds(2);digitalWrite(ADC_CLK,0); delayMicroseconds(2);pinMode(ADC_DIO, INPUT);dat1=dat1<<1 | digitalRead(ADC_DIO);}for(i=0;i<8;i++){dat2 = dat2 | ((uchar)(digitalRead(ADC_DIO))<<i);digitalWrite(ADC_CLK,1); delayMicroseconds(2);digitalWrite(ADC_CLK,0); delayMicroseconds(2);}digitalWrite(ADC_CS,1);return(dat1==dat2) ? dat1 : 0;}int main(void){uchar analogVal;if(wiringPiSetup() == -1){ //when initialize wiring failed,print message to screenprintf("setup wiringPi failed !");return 1; }pinMode(ADC_CS, OUTPUT);pinMode(ADC_CLK, OUTPUT);while(1){pinMode(ADC_DIO, OUTPUT);analogVal = get_ADC_Result();printf("Current value : %d\n", analogVal);delay(500);}return 0;}
1 0
- 树莓派通过ADC0832采集模拟量
- AIO 模拟量采集 电路
- STM32L152 ADC单通道采集模拟量
- 无线采集,模拟量采集,模拟量传输----西安达泰电子
- 开关电源在模拟量采集系统中应用
- CC2530基础实验之采集模拟量传感器值
- 基于STM8的ADC0832采集及蓝牙通信系统
- 四模拟量采集器组zigbee转串口数据采集
- 【STM32 .Net MF开发板学习-09】AD模拟量采集
- CC2530基础实验之采集光照模拟量控制LED状态
- 树莓派使用PCF8591读取模拟量传感器
- ADC0832驱动
- 模拟量读取
- 模拟量视图
- 采集--封装模拟登陆
- 开关量和模拟量的区别
- 树莓派通过命令行调音量百分比不正确的问题
- ADC0832转换数据
- 远程调用之RMI、Hessian、Burlap、Httpinvoker、WebService的比较
- 欧拉回路 fzu Problem 2112 Tickets
- cocos2d-x遇到的触屏处理事件问题
- LIB和DLL的区别与使用
- 使用控制項Timer與ProgressBar的鼠标点击游戏,带排名
- 树莓派通过ADC0832采集模拟量
- C++多态性
- select for update学习总结
- 第十二届北京师范大学程序设计竞赛热身赛第一场 C. Adidas vs Adivon
- java.util.concurrent介绍
- shell判断和比较
- 如何在不同编程语言中获取现在的Unix时间戳(Unix timestamp)?
- 归并算法
- dos命令大全