超声波测距代码_arduino&超声波模块

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

a1fdb26c446635ac6500101275d6cf48.png

       超声波发射器向某一方向发射超声波,在发射的同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计时。声波在空气中的传播速度为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、接线

arduinoHC-SR04
GND       GND
+5V     VCC
11  Trig(触发信号输入)       
12Echo(回响信号输出) 

(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口

烧录程序:编译--->烧录

e020b05d3fa41d2dc9ade38ab1be7e87.png

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

f3bb1de2839380ba57df225b17f57a6b.png

(大佬轻喷)65e2cbb9609d93b3d6cb053b4e4663fc.png


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