自制Arduino便携式超声波测距仪
一、 电路连接
二、 代码实现
此制作受油管大神Paul教学视频启发
一、电路连接:
二、代码实现
#include <Wire.h>
#include <LiquidCrystal_I2C.h> //I2C液晶显示库
LiquidCrystal_I2C Lcd(0x27, 16, 2);
int trig = 2; //接Trig引脚
int echo = 3; //接Echo引脚
int buttonP = 9; //接按键引脚,按键另一引脚接地
int buttonOld; //原来的按键引脚值
int buttonNew; //新的按键引脚值
int flag = 0;
int j = 0;
float distance; //距离,采用浮点数
void setup() {
// put your setup code here, to run once:
pinMode(trig, OUTPUT);
pinMode(echo, INPUT);
pinMode(buttonP, INPUT);
digitalWrite(buttonP, HIGH); //直接为按键引脚赋予高电平
Lcd.init();
Lcd.backlight();
Lcd.clear();
}
void loop() {
// put your main code here, to run repeatedly:
digitalWrite(trig, LOW);
delayMicroseconds(2);
digitalWrite(trig, HIGH);
delayMicroseconds(10);
digitalWrite(trig, LOW); //发射超声波
distance = pulseIn(echo, HIGH)/58.00; //按声速340m/s计算距离;
if(flag == 0){
Lcd.clear(); //清屏
Lcd.setCursor(0, 0);
Lcd.print(“Distance Is: “);
Lcd.setCursor(0, 1);
Lcd.print(distance);
Lcd.print(” cm”);
}
buttonOld = digitalRead(buttonP); //读取按键引脚电平,高为1,低为0;按键按下即导通,此时为低电平。
//在按键下降沿判断
if(buttonOld1 && buttonNew0){
Lcd.clear();
Lcd.setCursor(0, 0);
Lcd.print(“Distance Is: “);
Lcd.setCursor(0, 1);
Lcd.print(distance);
Lcd.print(” cm”);
j += 1;
flag = j%2; //每按下一次flag的值在0,1之间变换;
}
buttonNew = buttonOld;
delay(150);
}
实现效果如下:
PS:本人Arduino才入门, 做的不好的地方欢迎大家批评指正。