使用HC-SR04超声波传感器和Arduino MEGA 2560实现简单测距
一、一个超声波传感器的使用
1.接线部分
我使用Arduino MEGA 2560为例给大家展示一下接线
Vcc---------------5v
Trig---------------D50
Echo-------------D51
Gnd--------------Gnd
如果你使用的是Arduino uno可以按照实际情况来改变Trig和Echo的接线,因为Arduino uno没有D50和D51。
2.代码部分
//一个超声波
#define Trig 50 //引脚Tring 连接 IO D50
#define Echo 51 //引脚Echo 连接 IO D51
float cm; //距离变量
float temp;
void setup()
{
Serial.begin(9600);
//定义引脚
pinMode(Trig, OUTPUT);
pinMode(Echo, INPUT);
void ceju1();
}
void loop()
{
ceju1();
}
void ceju1()
{
//给Trig发送一个低高低的短时间脉冲,触发测距
digitalWrite(Trig, LOW); //给Trig发送一个低电平
delayMicroseconds(2); //等待 2微妙
digitalWrite(Trig,HIGH); //给Trig发送一个高电平
delayMicroseconds(10); //等待 10微妙
digitalWrite(Trig, LOW); //给Trig发送一个低电平
temp = float(pulseIn(Echo, HIGH)); //存储回波等待时间,
//pulseIn函数会等待引脚变为HIGH,开始计算时间,再等待变为LOW并停止计时
//返回脉冲的长度
//声速是:340m/1s 换算成 34000cm / 1000000μs => 34 / 1000
//因为发送到接收,实际是相同距离走了2回,所以要除以2
//距离(厘米) = (回波时间 * (34 / 1000)) / 2
//简化后的计算公式为 (回波时间 * 17)/ 1000
cm = (temp * 17 )/1000; //把回波时间换算成cm
Serial.print("Echo =");
Serial.print(temp);//串口输出等待时间的原始数据
Serial.print(" | | Distance = ");
Serial.print(cm);//串口输出距离换算成cm的结果
Serial.println("cm");
delay(100);
}
3.在串口看测到的数据
二、两个超声波传感器的使用
1.接线部分
我使用Arduino MEGA 2560为例给大家展示一下接线
Vcc---------------5v
Trig---------------D50
Echo-------------D51
Gnd--------------Gnd
Vcc---------------5v
Trig1--------------D52
Echo1------------D53
Gnd--------------Gnd
如果你使用的是Arduino uno可以按照实际情况来改变Trig和Echo的接线,因为Arduino uno没有D50、D51、
D52、D53。
2.代码部分
//两个超声波
#define Trig 50 //引脚Tring 连接 IO D50
#define Echo 51 //引脚Echo 连接 IO D51
#define Trig1 52 //引脚Tring 连接 IO D52
#define Echo1 53 //引脚Echo 连接 IO D53
float cm; //距离变量
float temp;
float cm1; //距离变量
float temp1;
void setup() {
Serial.begin(9600);
//定义引脚
pinMode(Trig, OUTPUT);
pinMode(Echo, INPUT);
pinMode(Trig1, OUTPUT);
pinMode(Echo1, INPUT);
void ceju1();
void ceju2();
}
void loop()
{
ceju1();
ceju2();
}
void ceju1()
{
//给Trig发送一个低高低的短时间脉冲,触发测距
digitalWrite(Trig, LOW); //给Trig发送一个低电平
delayMicroseconds(2); //等待 2微妙
digitalWrite(Trig,HIGH); //给Trig发送一个高电平
delayMicroseconds(10); //等待 10微妙
digitalWrite(Trig, LOW); //给Trig发送一个低电平
temp = float(pulseIn(Echo, HIGH)); //存储回波等待时间,
//pulseIn函数会等待引脚变为HIGH,开始计算时间,再等待变为LOW并停止计时
//返回脉冲的长度
//声速是:340m/1s 换算成 34000cm / 1000000μs => 34 / 1000
//因为发送到接收,实际是相同距离走了2回,所以要除以2
//距离(厘米) = (回波时间 * (34 / 1000)) / 2
//简化后的计算公式为 (回波时间 * 17)/ 1000
cm = (temp * 17 )/1000; //把回波时间换算成cm
Serial.print("Echo =");
Serial.print(temp);//串口输出等待时间的原始数据
Serial.print(" | | Distance = ");
Serial.print(cm);//串口输出距离换算成cm的结果
Serial.println("cm");
delay(100);
}
void ceju2()
{
//给Trig发送一个低高低的短时间脉冲,触发测距
digitalWrite(Trig1, LOW); //给Trig发送一个低电平
delayMicroseconds(2); //等待 2微妙
digitalWrite(Trig1,HIGH); //给Trig发送一个高电平
delayMicroseconds(10); //等待 10微妙
digitalWrite(Trig1, LOW); //给Trig发送一个低电平
temp1 = float(pulseIn(Echo1, HIGH)); //存储回波等待时间,
//pulseIn函数会等待引脚变为HIGH,开始计算时间,再等待变为LOW并停止计时
//返回脉冲的长度
//声速是:340m/1s 换算成 34000cm / 1000000μs => 34 / 1000
//因为发送到接收,实际是相同距离走了2回,所以要除以2
//距离(厘米) = (回波时间 * (34 / 1000)) / 2
//简化后的计算公式为 (回波时间 * 17)/ 1000
cm1 = (temp1 * 17 )/1000; //把回波时间换算成cm
Serial.print("Echo1 =");
Serial.print(temp1);//串口输出等待时间的原始数据
Serial.print(" | | Distance = ");
Serial.print(cm1);//串口输出距离换算成cm的结果
Serial.println("cm");
delay(100);
}
3.在串口看测到的数据
4.实物图连接
如果对你有用,点赞收藏哦!
创作不易,还需要你们的支持
后续还会更新更多Arduino和传感器的使用。