声之翼——超声波模块
上诗一首:
早蝉【唐】白居易--
六月初七日,江头蝉始鸣。
石楠深叶里,薄暮两三声。
首先,我们先来做一个小实验,来初步了解一下超声波模块。
实验材料:
Arduino开发板 x1
USB数据线 x1
杜邦线 若干
超声波模块 x1
硬件连接图:
实物连接图:
程序代码:
int Echo = A5; // Echo回声脚(P2.0) int Trig =A4; // Trig 触发脚(P2.1) void setup() { Serial.begin(9600); // 初始化串口 //初始化电机驱动IO为输出方式 //初始化超声波引脚 pinMode(Echo, INPUT); // 定义超声波输入脚 pinMode(Trig, OUTPUT); // 定义超声波输出脚 } void Distance_test() // 量出前方距离 { digitalWrite(Trig, LOW); // 给触发脚低电平2μs delayMicroseconds(2); digitalWrite(Trig, HIGH); // 给触发脚高电平10μs,这里至少是10μs delayMicroseconds(10); digitalWrite(Trig, LOW); // 持续给触发脚低电 float Fdistance = pulseIn(Echo, HIGH); // 读取高电平时间(单位:微秒) Fdistance= Fdistance/58; //为什么除以58等于厘米, Y米=(X秒*344)/2 // X秒=( 2*Y米)/344 ==》X秒=0.0058*Y米 ==》厘米=微秒/58 Serial.print("Distance:"); //输出距离(单位:厘米) Serial.println(Fdistance); //显示距离 Distance = Fdistance; } void loop() { Distance_test(); delay(250); }
实验效果是这样的:
注意这里输出单位是: CM
下面来说说原理:
总结:
实验中使用到的函数调用:
串口监视器:
Serial.begin(9600); // 初始化串口, 设置比特率
Serial.print("Distance:"); //输出距离(单位:厘米) 不带“\n”输出
Serial.println(Fdistance); //输出显示距离 带“\n”输出
LCD显示屏:
#include <LiquidCrystal.h> //申明1602液晶的函数库
//申明1602液晶的引脚所连接的Arduino数字端口,8线或4线数据模式,任选其一
//LiquidCrystal lcd(12,11,10,9,8,7,6,5,4,3,2); //8数据口模式连线声明
LiquidCrystal lcd(3,4,7,8,11,12,13); //4数据口模式连线声明
lcd.home(); //把光标移回左上角,即从头开始输出
lcd.print(" Distance: "); //显示
lcd.setCursor(6,2); //把光标定位在第2行,第6列
lcd.clear(); //清屏