本帖最后由 云天 于 2021-8-14 19:00 编辑  
 
【Arduino环境配置】 
通过wiki文档进行配置https://wiki.dfrobot.com.cn/_SKU ... rd_ESP32_E#target_7 
 
  
 
【超声波传感器】 
URM09 Ultrasonic Sensor Gravity Analog V1.0 超声波传感器 
这是一款开放式双探头超声波测距模块,采用Gravity标准PH2.0-3P立式贴片座接口,输出为模拟电压,兼容arduino、树莓派等各种3.3V或5V逻辑电平的主控板。 该模块自带温度补偿,避免高温或低温环境对测量结果产生影响。模拟电压值输出,ADC简单转化即可直接读取距离值,简化操作步骤,降低实验难度。经测试,平整墙面的有效测距量程为2–500cm,分辨率为1cm,误差约为±1%。 
由于esp32芯片模拟输入精度和电压问题,esp32芯片相关主控板(firebeetle、掌控板)无法正常作为精确测距使用。 
 
 
 
  
 
友情提示:由于esp32芯片模拟输入精度和电压问题,esp32芯片相关主控板(firebeetle、掌控板)无法正常作为精确测距使用(需搭配AD转换模块DFR0553才可正常使用)。 
 
【16位AD转换模块】 
 
  
 
DFRobot I2C ADS1115 16位AD转换模块可对模拟量信号进行精确的采集与转换,通过这款AD模块,树莓派主控板就能非常方便的使用种类丰富的Gravity系列模拟量传感器,测量各类信号,感知这个世界。 
 
【DFRobot_ADS1115库】 
 
通过wiki文档进行配置https://wiki.dfrobot.com.cn/_SKU_DFR0553_I2C_16-Bit_ADC_Module 
 
  
 
【程序代码】 
 
			
			
			- 
 - #include <Wire.h>
 - #include <DFRobot_ADS1115.h>
 - 
 - DFRobot_ADS1115 ads(&Wire);
 - 
 - void setup(void)
 - {
 -     Serial.begin(115200);
 -     ads.setAddr_ADS1115(ADS1115_IIC_ADDRESS0);   // 0x48
 -     ads.setGain(eGAIN_TWOTHIRDS);   // 2/3x gain
 -     ads.setMode(eMODE_SINGLE);       // single-shot mode
 -     ads.setRate(eRATE_128);          // 128SPS (default)
 -     ads.setOSMode(eOSMODE_SINGLE);   // Set to start a single-conversion
 -     ads.init();
 - }
 - 
 - void loop(void)
 - {
 -     if (ads.checkADS1115())
 -     {
 -         int16_t adc0, adc1, adc2, adc3;
 -         adc0 = ads.readVoltage(0);
 -         Serial.print("A0:");
 -         Serial.print(adc0*550/3284);//3.3V=3300mv,(空载:3284)最大量程500cm,模块测距极值为550cm(比有效最大量程值略大)
 -         Serial.println("cm,  ");
 -        
 -     }
 -     else
 -     {
 -         Serial.println("ADS1115 Disconnected!");
 -     }
 - 
 -     delay(1000);
 - }
 
  复制代码
  
  
 
  
 
【距离控灯】 
- 
 - 
 - #include <Wire.h>
 - #include <DFRobot_ADS1115.h>
 - 
 - DFRobot_ADS1115 ads(&Wire);
 - 
 - void setup(void)
 - {
 -    Serial.begin(115200);
 -    ads.setAddr_ADS1115(ADS1115_IIC_ADDRESS0);   // 0x48
 -    ads.setGain(eGAIN_TWOTHIRDS);   // 2/3x gain
 -    ads.setMode(eMODE_SINGLE);       // single-shot mode
 -    ads.setRate(eRATE_128);          // 128SPS (default)
 -    ads.setOSMode(eOSMODE_SINGLE);   // Set to start a single-conversion
 -    ads.init();
 -    pinMode(16,OUTPUT);
 - }
 - 
 - void loop(void)
 - {
 -    if (ads.checkADS1115())
 -    {
 -        int16_t adc0;
 -        int distance;
 -        adc0 = ads.readVoltage(0);
 -        distance=int(adc0*550/3284);//3.3V=3300mv,(空载:3284)最大量程500cm,模块测距极值为550cm(比有效最大量程值略大)
 -        if (distance<15){
 -         digitalWrite(16,HIGH);
 -        }
 -        else{
 -         digitalWrite(16,LOW);
 -        }
 -    
 -        Serial.print(distance);
 -        Serial.println("cm,  ");
 -        
 -    }
 -    else
 -    {
 -        Serial.println("ADS1115 Disconnected!");
 -    }
 - 
 -    delay(500);
 - }
 
  复制代码 【演示视频】 
 |