11.6
今天学习了声音传感器编程,并显示距离的程序。学习内容全在最后自己编写的程序里:
#include<LiquidCrystal.h> //显示头文件
LiquidCrystal lcd(12, 11, 5, 4, 6, 7); //显示管脚初始化
unsigned int EchoPin = 2; //触发声音发出管脚
unsigned int TrigPin = 3; //声音返回信号接收管脚
unsigned long Time_Echo_us = 0;
unsigned long Len_mm = 0;
void setup() {
lcd.begin(16, 2);
Serial.begin(9600); //Serial: output result to Serial monitor
pinMode(EchoPin, INPUT);
pinMode(TrigPin, OUTPUT); // 发送高脉冲引脚用于触发测量 (>10us)
Serial.print("setup ");
}
void loop() {
digitalWrite(TrigPin, HIGH); //开始发送 高电平,US-100开始测量距离
delayMicroseconds(20); // 设置高脉冲宽度为20us (>10us)
digitalWrite(TrigPin, LOW); // 结束高脉冲
Time_Echo_us = pulseIn(EchoPin, HIGH); // 敲击是第一个上升沿,返回波是第二个上升沿,两沿宽度
if((Time_Echo_us < 60000) && (Time_Echo_us > 1)) //有效的宽度范围 (1, 60000).
{
Len_mm = (Time_Echo_us*34/100)/2; //计算距离
lcd.clear(); //清屏
tone(8, map(Len_mm, 1000, 10000,3951,131 ),250); //发出警告声音
lcd.setCursor(0,1); //显示定位:第0列第1行
lcd.print("Distance:"); //直接输出“Distance:”
lcd.print(Len_mm/10); //输出距离
lcd.print("cm");
}
delay(Len_mm/2); //调整发出信号周期,距离越近间 // 隔时间越短
}