使用Arduino和超声波传感器实现简单测距

一、一个超声波传感器的使用

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和传感器的使用。

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是北豼不太皮吖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值