回答

收藏

[评测分享] 【Arrow 有好料】DFR0654多路电压精密测量

#板卡评测 #板卡评测 2215 人阅读 | 0 人回复 | 2024-02-15

【实验目的】使用DFR0654实现一个多路电压表
【实验器材】
1、DFR0654开发板
2、OLED屏
3、ADS1115开发板
【实现步骤】
1、按照帖子【Arrow 有好料】DFR0654自制温湿度计 - 板卡试用 - 与非网 (eefocus.com)驱动好OLED屏
2、下载ADS1115库。
3、编写代码如下:
  1. /*!
  2. * @file readVoltage.ino
  3. * @brief connect ADS1115 I2C interface with your board (please reference board compatibility)
  4. * @n The voltage value read by A0 A1 A2 A3 is printed through the serial port.
  5. *
  6. * @copyright   Copyright (c) 2010 DFRobot Co.Ltd (http://www.dfrobot.com)
  7. * @license     The MIT License (MIT)
  8. * @author [luoyufeng](yufeng.luo@dfrobot.com),
  9. * @version  V1.0
  10. * @date  2019-06-19
  11. * @url https://github.com/DFRobot/DFRobot_ADS1115
  12. */


  13. #include <Wire.h>
  14. #include <DFRobot_ADS1115.h>
  15. #include <GyverOLED.h>
  16. DFRobot_ADS1115 ads(&Wire);
  17. GyverOLED<SSD1306_128x64, OLED_BUFFER> oled;

  18. void setup(void)
  19. {
  20.     Serial.begin(115200);
  21.   oled.init();
  22.   oled.clear();   // очистить дисплей (или буфер)

  23.   // --------------------------
  24.   oled.home();            // курсор в 0,0
  25.   oled.setScale(2);
  26.   oled.print("ADS1115Dmo!");   // печатай что угодно: числа, строки, float, как Serial!
  27.   oled.update();
  28.     ads.setAddr_ADS1115(ADS1115_IIC_ADDRESS1);   // 0x48
  29.     ads.setGain(eGAIN_TWOTHIRDS);   // 2/3x gain
  30.     ads.setMode(eMODE_SINGLE);       // single-shot mode
  31.     ads.setRate(eRATE_128);          // 128SPS (default)
  32.     ads.setOSMode(eOSMODE_SINGLE);   // Set to start a single-conversion
  33.     ads.init();
  34. }

  35. void loop(void)
  36. {
  37.     if (ads.checkADS1115())
  38.     {
  39.         int16_t adc0, adc1, adc2, adc3;
  40.         adc0 = ads.readVoltage(0);
  41.         Serial.print("A0:");
  42.         Serial.print(adc0);
  43.         Serial.print("mV,  ");
  44.         adc1 = ads.readVoltage(1);
  45.         Serial.print("A1:");
  46.         Serial.print(adc1);
  47.         Serial.print("mV,  ");
  48.         adc2 = ads.readVoltage(2);
  49.         Serial.print("A2:");
  50.         Serial.print(adc2);
  51.         Serial.print("mV,  ");
  52.         adc3 = ads.readVoltage(3);
  53.         Serial.print("A3:");
  54.         Serial.print(adc3);
  55.         Serial.println("mV");

  56.           oled.clear();   // очистить дисплей (или буфер)

  57.   // --------------------------
  58.       oled.home();   
  59.       oled.setScale(2);
  60.       oled.setCursor(0,0);  
  61.       oled.print("A0:");
  62.       oled.print(adc0);
  63.       oled.print("mv");
  64.       oled.setCursor(0,2);
  65.       oled.print("A1:");
  66.       oled.print(adc1);
  67.       oled.print("mv");
  68.       oled.setCursor(0,4);
  69.       oled.print("A2:");
  70.       oled.print(adc2);
  71.       oled.print("mv");
  72.       oled.setCursor(0,6);
  73.       oled.print("A3:");
  74.       oled.print(adc3);
  75.       oled.print("mv");
  76.       oled.update();
  77.     }
  78.     else
  79.     {
  80.         Serial.println("ADS1115 Disconnected!");
  81.     }

  82.     delay(1000);
  83. }
复制代码
3、将代码下载到开发板,然后把ADS1115的SDA、SCL与开发板SDA、SCL相连,就可以测试出来ADS1115的4路电压了。
【实验效果】

【总结】
DFR0654开发板非常优秀,能够使用灵活的库来快速实现开发项目。
分享到:
回复

使用道具 举报

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

本版积分规则

关闭

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