在Arduino环境下基于ESP32的两个超声波发射模块
您好!在Arduino环境下,可以使用ESP32开发板来实现两个超声波发射模块的功能。下面是一个示例代码,可以实现同时控制两个超声波发射模块的功能:
#define TRIGGER_PIN1 4
#define ECHO_PIN1 5
#define TRIGGER_PIN2 6
#define ECHO_PIN2 7
void setup() {
Serial.begin(9600);
pinMode(TRIGGER_PIN1, OUTPUT);
pinMode(ECHO_PIN1, INPUT);
pinMode(TRIGGER_PIN2, OUTPUT);
pinMode(ECHO_PIN2, INPUT);
}
void loop() {
// 发射超声波1
digitalWrite(TRIGGER_PIN1, LOW);
delayMicroseconds(2);
digitalWrite(TRIGGER_PIN1, HIGH);
delayMicroseconds(10);
digitalWrite(TRIGGER_PIN1, LOW);
// 接收超声波1的返回信号
long duration1 = pulseIn(ECHO_PIN1, HIGH);
float distance1 = duration1 * 0.034 / 2; // 将信号时长转换为距离(单位:厘米)
// 发射超声波2
digitalWrite(TRIGGER_PIN2, LOW);
delayMicroseconds(2);
digitalWrite(TRIGGER_PIN2, HIGH);
delayMicroseconds(10);
digitalWrite(TRIGGER_PIN2, LOW);
// 接收超声波2的返回信号
long duration2 = pulseIn(ECHO_PIN2, HIGH);
float distance2 = duration2 * 0.034 / 2; // 将信号时长转换为距离(单位:厘米)
// 打印距离
Serial.print("Distance 1: ");
Serial.print(distance1);
Serial.print(" cm");
Serial.print("\t");
Serial.print("Distance 2: ");
Serial.print(distance2);
Serial.print(" cm");
Serial.println();
delay(1000); // 延迟1秒
}
在上述代码中,我们使用了4个GPIO引脚来控制两个超声波发射模块的触发和接收。TRIGGER_PIN1和ECHO_PIN1用于控制超声波1,TRIGGER_PIN2和ECHO_PIN2用于控制超声波2。在loop函数中,我们通过发送触发信号,然后使用pulseIn函数来接收返回信号,并将其转换为距离值。最后,我们使用串口打印出两个超声波的距离值,并延迟1秒后重复执行。
请注意,上述代码只是一个示例,您可以根据自己的需求进行修改和扩展。希望对您有帮助
原文地址: http://www.cveoy.top/t/topic/hRnQ 著作权归作者所有。请勿转载和采集!