一、超声波模块:(HC-SR04)

超声波发射器向某一方向发射超声波,在发射的同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计时。声波在空气中的传播速度为340m/s,根据计时器记录的时间t,就可以计算出发射点距障碍物的距离s,即:s=340m/s× t / 2 。这就是所谓的时间差测距法。
二、实验简介
1、元件:arduino uno、HC-SR04、杜邦线
2、工作原理:(可以看一下时序图)
1)通过某个引脚(IO)给至少10us的高电平信号触发测距;
2)触发测距以后模块自动发送8个40khz的方波,自动检测是否有信号返回;
3)如果有信号返回,通过IO输出一高电平,高电平持续时间就是超声波从发射到返回的时间
4)测试距离=(高电平时间*声速(340M/S))/2;
3、接线
| arduino | HC-SR04 |
| GND | GND |
| +5V | VCC |
| 11 | Trig(触发信号输入) |
| 12 | Echo(回响信号输出) |
(Trig和Echo的引脚看自己的选择标记了PWM那一侧的,可以在程序里面改)
4、程序
/*Arduino Uno--->HC-SR04 超声波测距传感器模块 */ //定义模块的接线引脚,可以自己定义int TrigPin = 11; //Trig引脚int EchoPin = 12; //Echo引脚//定义参数变量long duration, cm, inches; //初始化void setup() { //串行端口开始 Serial.begin (9600);//设置波特率 //定义输入和输出 pinMode(TrigPin, OUTPUT); pinMode(EchoPin, INPUT);//输入输出对于板子而言,前面是对模块来说} //可以看做死循环执行一个函数void loop(){ // 该传感器由10微秒以上的高脉冲触发。 // 预先给予一个短的低脉冲,以确保一个干净的高脉冲: digitalWrite(TrigPin, LOW); delayMicroseconds(5); digitalWrite(TrigPin, HIGH); delayMicroseconds(10); digitalWrite(TrigPin, LOW); // 从传感器读取的信号:一个高脉冲的 //持续时间是从发送开始的时间(以微秒为单位) // 接收到它的回声的一个对象 duration = pulseIn(EchoPin, HIGH); // 把时间转换成距离 cm = (duration/2) / 29.1; inches = (duration/2) / 74; //串口打印数据(英寸&厘米) //Serial.print("距离:");//可以把前面的两个注释用的斜杠去了看一下效果 Serial.print(inches); Serial.print("in, "); Serial.print(cm); Serial.print("cm"); Serial.println(); //延时200ms进入下一次循环 //暂时可以理解为数值越小串口发送的越快 delay(200);}5、运行程序
在arduino IDE写好代码后,编译一下,烧录进板子,打开串口监视器可以看到打印的内容
连接板子:工具选项中选择正确的COM口
烧录程序:编译--->烧录

串口监视器打开步骤:工具---->串口监视器(快捷键Ctrl+shift+M)

(大佬轻喷)
版权声明:本文为weixin_39546092原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。