4回答

1收藏

【赚周年币】技术贴-----(4)FireduinoADC采集学习

#线上活动 #线上活动 2417 人阅读 | 4 人回复 | 2016-12-09

本帖最后由 wambob 于 2016-12-9 13:23 编辑

https://www.cirmall.com/bbs/thread-57695-1-1.html
     上篇用模拟驱动了OLED,接着学习ADC采集,并显示到OLED上。
     粗心的,导致ADC采集数据不对。
     先看看Fireduino上的ADC介绍吧,不能把它当成以前的mcu来看了。
  1. 选择ADC的基准电压(等同于可以输入电压的最大值)。Fireduino只能够选择内部基准电压,并且只有一个基准电压可以选取,为2.56V。
复制代码
例程里的是2.55v。
        读取模拟引脚的输入电压测量值(不可大于基准电压)。
       Fireduino一共有8个10bit的ADC(逐次逼近型)输入口,分别是A0~A7。调用此函数的时候,ADC会将基准电压分成1024份,然后一份一份的叠加,
      直到最接近当前模拟引脚的电压为止,此时叠加的值就是电压测量值。
      所以实际上引脚上的电压值为:V = value/1024*Vef(V:实际测量电压值,value为电压测量值,即此函数的返回值,Vef为基准电压,2.56V)。
   使用的API
  1. analogRead(pin)
复制代码
这和Arduino的相同。
返回值ADC测量值,取值为0~1023。   获取当前电压值的方法是:当前电压值 = (ADC测量值/1023)*  ADC基准电压值。 当输入端悬空时,显示采集出的干扰值。

使用板载的电位器吧,注意不让引出头的电压大于2.55V。

主程序
  1. #include "SSD1306.h"
  2. char  dushu[100] ;
  3. uint8_t i;
  4. uint32_t val=0;

  5. int analogPin = A1;
  6. void setup()
  7. {  /* add setup code here */
  8.   Serial.begin(9600);
  9.         OLED_pin_Init();  
  10.   oled_init();   
  11. }

  12. void loop()
  13. {
  14.   /* add main program code here */  
  15.    OLED_Clear();
  16.    //memset(dushu,0,100);
  17.    float voltage;                  //  variable for save the voltage of pin A0
  18.    val = analogRead(analogPin);    // read the input pin
  19.    //voltage = (float)val / 1023.0 * 2.55;
  20.    sprintf(dushu,"%7.6f" , (float)val / 1023.0 * 2.55);   
  21.    //printf("%7.6f", (float)val / 1023.0 * 2.55 );
  22.    OLED_ShowString(0,0,"Fireduino",24);
  23.    //OLED_ShowString(10,25,"Hello World!",16);
  24.    OLED_ShowString(10,30,dushu,16);   
  25.    OLED_Refresh_Gram();//更新显示到OLED     
  26.    delay(1000);+-
  27.    
  28.   
  29. }
复制代码
下载代码时,XP系统的串口有时不好使,想死机那样,使用升级模式下载非常好,但是每次都得按Update和reset。
Fireduino_1306.rar (8.18 KB, 下载次数: 2)




评分

参与人数 1 +15 收起 理由
loveeeboard + 15

查看全部评分

分享到:
回复

使用道具 举报

回答|共 4 个

倒序浏览

沙发

toofree

发表于 2016-12-9 13:26:03 | 只看该作者

两块板配合用很好
板凳

wambob

发表于 2016-12-9 13:31:17 | 只看该作者

toofree 发表于 2016-12-9 13:26
两块板配合用很好

,懒得给电位器接线了
地板

jackten

发表于 2016-12-9 14:17:43 | 只看该作者

谢谢分享                     
5#

wudianjun2001

发表于 2016-12-9 14:22:05 | 只看该作者

不错,这个AD确实和别的arduino板卡不同,资料还是要仔细看的
您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条