欢迎光临散文网 会员登陆 & 注册

【Arduino 101】最全超声波测距模块攻略!附修正方法。

2023-08-01 12:57 作者:东拉西北广播电台  | 我要投稿

以下是我修正后的代码

#include <DFRobot_DHT11.h>

DFRobot_DHT11 DHT; //DHT-11 库文件


#define Trig 11

#define Echo 12

#define Buzzer 2


#define DHTPIN 4

#define DHTTYPE DHT11


float sound_spd = 343; //声速初始值

float distance, humid, temp; //距离,湿度,温度

int LEDs; //LED点亮个数


void setup() {

Serial.begin(115200);

pinMode(Trig, OUTPUT);

pinMode(Echo, INPUT);

pinMode(Buzzer, OUTPUT);

}


void loop() {


//**************************************************************************************************测距

// Write a pulse to the HC-SR04 Trigger Pin//做一个10uS的TTL,激发测距模块。

digitalWrite(Trig, LOW);

delayMicroseconds(2);

digitalWrite(Trig, HIGH);

delayMicroseconds(10);

digitalWrite(Trig, LOW);


distance = (pulseIn(Echo, HIGH) / 2) * sound_spd / 10000; //测距公式


// Send results to Serial Monitor//在串口监视器显示距离

Serial.print("Distance = ");

if (distance >= 400 || distance <= 2) {

Serial.println("Out of Range");

} else {

Serial.print(distance);

Serial.println(" cm");

}


//***********************************************************************************************报警模式

if (distance <= 20) {

tone(Buzzer, 1000);

LEDs = round(distance / 2);

for (int D = 10; D >= 10 - LEDs; D--) {

digitalWrite(D, HIGH);

}

delay(distance * 30);

noTone(Buzzer);

for (int i = 10; i >= 6; i--) {

digitalWrite(i, LOW);

}

}

//***********************************************************************************************修正模式

else {

noTone(Buzzer);

for (int i = 10; i >= 6; i--) {

digitalWrite(i, HIGH);

}

DHT.read(DHTPIN);

humid = DHT.humidity;

temp = DHT.temperature;

sound_spd = 331.4 + (0.606 * temp) + (0.0124 * humid); //声速修正公式


// Send results to Serial Monitor//在串口监视器显示温度,湿度,以及修正以后的声速

Serial.print(" Correction: ");

Serial.print("\t");

Serial.print(" Temperature = ");

Serial.print(DHT.temperature);

Serial.print("C");

Serial.print("\t");

Serial.print(" Humidity = ");

Serial.println(DHT.humidity);

Serial.print("%");

Serial.print("\t");

Serial.print(" Sound Speed = ");

Serial.print(sound_spd);

Serial.println("m/s");

Serial.println(" ");

delay(1000);

}


delay(50);

}

【Arduino 101】最全超声波测距模块攻略!附修正方法。的评论 (共 条)

分享到微博请遵守国家法律