Arduino Mega 2560超声波测距,测得距离显示,蜂鸣器小于设定值报警,矩阵键盘输入设定值
时间: 2023-08-16 13:06:39 浏览: 216
好的,这里是修改后的代码:
```c
#define trigPin 13
#define echoPin 12
#define buzzerPin 11
#define setDistance 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 < setDistance) {
tone(buzzerPin, 1000);
delay(500);
noTone(buzzerPin);
}
char key = keypad.getKey();
if (key) {
lcd.clear();
if (key == '*') {
lcd.print("Input:");
} else if (key == '#') {
lcd.print("Checking...");
delay(1000);
if (lcd.readString() == "Input:" + String(setDistance)) {
lcd.clear();
lcd.print("Input OK");
} else {
lcd.clear();
lcd.print("Input Error");
}
} else {
lcd.print(key);
}
}
}
```
这个代码与之前的代码类似,但有以下主要修改:
1. 增加了一个setDistance变量,表示设定的距离为50厘米。
2. 修改了矩阵键盘的处理方式。现在,当按下矩阵键盘上的数字键时,程序将把数字字符添加到屏幕上。当按下星号键时,程序将在屏幕上显示"Input:"。当按下井号键时,程序将检查屏幕上的输入是否等于"Input:50"。如果是,屏幕将显示"Input OK",否则屏幕将显示"Input Error"。
希望这个代码可以帮助你完成你的项目,如果你有任何问题,请随时问我。
阅读全文