Arduino Mega 2560超声波测距,测得距离显示,蜂鸣器小于规定值报警,矩阵键盘输入规定值
时间: 2023-08-16 14:06:39 浏览: 162
arduino 超声波测距
好的,这里是修改后的代码:
```c
#define trigPin 13
#define echoPin 12
#define buzzerPin 11
#define minDistance 20
#define expectedDistance 50
#include <LiquidCrystal.h>
#include <Keypad.h>
const byte ROWS = 4;
const byte COLS = 4;
char keys[ROWS][COLS] = {
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
byte rowPins[ROWS] = {9, 8, 7, 6};
byte colPins[COLS] = {5, 4, 3, 2};
LiquidCrystal lcd(22, 23, 24, 25, 26, 27);
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
void setup() {
Serial.begin(9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(buzzerPin, OUTPUT);
lcd.begin(16, 2);
}
void loop() {
long duration, distance;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = duration * 0.034 / 2;
Serial.print(distance);
Serial.println(" cm");
lcd.setCursor(0, 0);
lcd.print("Distance:");
lcd.setCursor(0, 1);
lcd.print(distance);
if (distance < minDistance) {
tone(buzzerPin, 1000);
delay(500);
noTone(buzzerPin);
}
char key = keypad.getKey();
if (key) {
lcd.clear();
int inputDistance = (int) key - 48; //将字符转换为整数
if (inputDistance == expectedDistance) {
lcd.print("Input OK");
} else {
lcd.print("Input Error");
}
}
}
```
这个代码与之前的代码类似,但有两个主要修改:
1. 增加了一个expectedDistance变量,表示输入的规定值为50厘米。
2. 修改了矩阵键盘的处理方式。现在,当按下矩阵键盘上的数字键时,程序将把数字字符转换为整数,并将其存储在inputDistance变量中。然后,程序将检查inputDistance是否等于expectedDistance。如果是,屏幕将显示"Input OK",否则屏幕将显示"Input Error"。
希望这个代码可以帮助你完成你的项目,如果你有任何问题,请随时问我。
阅读全文