查看: 1785|回复: 0

【ESP32-E Arduino开发板】ADC数据采集与显示

[复制链接]
  • TA的每日心情
    奋斗
    2023-5-10 20:09
  • 签到天数: 1742 天

    连续签到: 1 天

    [LV.Master]伴坛终老

    发表于 2021-7-19 09:18:20 | 显示全部楼层 |阅读模式
    分享到:
    在FireBeetle Board-ESP32的内部,配置有12 位的模数转换器,其最大输出值为4095,而 Arduino UNO 的ADC只有10 位,最大输出值为1023。因此,在精度上它比普通的 UNO 要高,且转换速率要快,并可用Arduino analogRead 函数来直接读取。
    ADC的数据采集程序如图1所示,
                                  
    1.jpg
    图1  ADC数据采集
    实现数据采集的电路连接如图2所示,是通过电位调节模块来提供采集的模拟信号,并连接到模拟量输入口A0。
    2.jpg
    图2 电路连接
    经程序的编译和上传,其借助串口监视器的输出结果如图3所示。
    3.jpg
    图3 数据采集结果
    此外,我们还可以为它配上数码管显示,并实现检测值与电压值的同步显示,其效果如图4所示。
    显示数码管双值显示的主要程序如下:
    void setup() {
      pinMode(LED_PIN, OUTPUT);
      pinMode(CS,OUTPUT);
      pinMode(CLK,OUTPUT);
      pinMode(DIN,OUTPUT);
      delay(50);
      Init_MAX7219();
      delay(200);
      Write_Max7219(0xff,0x00);
    }
    void loop() {
      int v,d;
      float s;
      v=analogRead(A0);
      Write_Max7219(1,v%10);
      if(v>10) Write_Max7219(2,v%100/10);
      else Write_Max7219(2,0x0f);
      if(v>100) Write_Max7219(3,v%1000/100);
      else Write_Max7219(3,0x0f);
      if(v>1000) Write_Max7219(4,v/1000);
      else Write_Max7219(4,0x0f);
      s=v*3.3/409.5;
      d=s;
      Write_Max7219(5,0x0f);
      Write_Max7219(6,d%10);
      Write_Max7219(7,(d%100/10)|0x80);//(v%100/10)&&0x80
      Write_Max7219(8,0x0f);  
      digitalWrite(LED_PIN, HIGH);
      delay(1000);
      digitalWrite(LED_PIN, LOW);
      delay(1000);
    }
    4.jpg
    图4 双值显示

    回复

    使用道具 举报

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

    本版积分规则

    关闭

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

    手机版|小黑屋|与非网

    GMT+8, 2024-11-19 12:26 , Processed in 0.108259 second(s), 16 queries , MemCache On.

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

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.