查看: 2094|回复: 4

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

[复制链接]
  • TA的每日心情
    奋斗
    2020-5-27 15:41
  • 签到天数: 868 天

    连续签到: 1 天

    [LV.10]以坛为家III

    发表于 2016-12-9 13:04:56 | 显示全部楼层 |阅读模式
    分享到:
    本帖最后由 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基准电压值。 当输入端悬空时,显示采集出的干扰值。
    1.JPG
    使用板载的电位器吧,注意不让引出头的电压大于2.55V。
    2.JPG
    主程序
    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

    查看全部评分

    回复

    使用道具 举报

  • TA的每日心情
    开心
    昨天 00:02
  • 签到天数: 3942 天

    连续签到: 13 天

    [LV.Master]伴坛终老

    发表于 2016-12-9 13:26:03 | 显示全部楼层
    两块板配合用很好
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2020-5-27 15:41
  • 签到天数: 868 天

    连续签到: 1 天

    [LV.10]以坛为家III

     楼主| 发表于 2016-12-9 13:31:17 | 显示全部楼层
    toofree 发表于 2016-12-9 13:26
    两块板配合用很好

    ,懒得给电位器接线了
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    2017-10-15 13:21
  • 签到天数: 183 天

    连续签到: 1 天

    [LV.7]常住居民III

    发表于 2016-12-9 14:17:43 | 显示全部楼层
    谢谢分享                     
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    2024-5-31 10:44
  • 签到天数: 1492 天

    连续签到: 1 天

    [LV.10]以坛为家III

    发表于 2016-12-9 14:22:05 | 显示全部楼层
    不错,这个AD确实和别的arduino板卡不同,资料还是要仔细看的
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

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



    手机版|小黑屋|与非网

    GMT+8, 2024-11-23 04:43 , Processed in 0.174619 second(s), 28 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.