arduino超声波lcd报警,距离越近蜂鸣器响的频率越高,再加上led灯的代码
时间: 2024-03-23 11:42:10 浏览: 158
这是一个基于Arduino、超声波传感器、LCD显示屏和LED灯的报警系统代码:
```
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // 初始化LCD显示屏
int trigPin = 9; // 超声波传感器的trig引脚连接到Arduino的9号引脚
int echoPin = 10; // 超声波传感器的echo引脚连接到Arduino的10号引脚
int buzzerPin = 8; // 警报器引脚连接到Arduino的8号引脚
int ledPin = 7; // LED灯引脚连接到Arduino的7号引脚
void setup() {
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(buzzerPin, OUTPUT);
pinMode(ledPin, OUTPUT);
lcd.begin(16, 2); // 设置LCD显示屏的列数和行数
lcd.print("Ultrasonic Alarm"); // 在LCD上显示“Ultrasonic Alarm”
}
void loop() {
long duration, distance;
// 产生10微秒的高电平脉冲,触发超声波发射器
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// 接收超声波信号并计算距离
duration = pulseIn(echoPin, HIGH);
distance = duration / 2 / 29.1; // 计算距离,单位厘米
// 如果距离小于20厘米,触发报警器和LED灯
if (distance < 20) {
// 计算蜂鸣器的响应频率,距离越近频率越高
int freq = map(distance, 0, 20, 1000, 5000);
tone(buzzerPin, freq);
lcd.setCursor(0, 1);
lcd.print("Danger!");
// 计算LED灯的闪烁频率,距离越近频率越高
int ledFreq = map(distance, 0, 20, 500, 2000);
digitalWrite(ledPin, HIGH);
delayMicroseconds(ledFreq/2);
digitalWrite(ledPin, LOW);
delayMicroseconds(ledFreq/2);
} else {
noTone(buzzerPin);
lcd.setCursor(0, 1);
lcd.print("Distance: ");
lcd.print(distance);
lcd.print("cm");
digitalWrite(ledPin, LOW);
}
delay(500); // 等待500毫秒
}
```
这个代码和前面的代码类似,但是加入了蜂鸣器的控制。当距离小于20厘米时,蜂鸣器会响起,响声频率随着距离的变化而变化,距离越近频率越高。你可以根据你的需求修改蜂鸣器的响声频率。同时,LED灯的闪烁频率也随着距离的变化而变化,距离越近频率越高。你可以根据你的需求修改LED灯的闪烁频率。
阅读全文