arduino超声波lcd报警,距离越近警报器响的频率越开,再加上led灯的代码
时间: 2024-03-23 13:42:09 浏览: 55
这是一个基于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) {
digitalWrite(buzzerPin, HIGH);
lcd.setCursor(0, 1);
lcd.print("Danger!");
// 计算LED灯的闪烁频率,距离越近频率越高
int freq = map(distance, 0, 20, 500, 2000);
digitalWrite(ledPin, HIGH);
delayMicroseconds(freq/2);
digitalWrite(ledPin, LOW);
delayMicroseconds(freq/2);
} else {
digitalWrite(buzzerPin, LOW);
lcd.setCursor(0, 1);
lcd.print("Distance: ");
lcd.print(distance);
lcd.print("cm");
digitalWrite(ledPin, LOW);
}
delay(500); // 等待500毫秒
}
```
这个代码和上一个代码类似,但是加入了LED灯的控制。当距离小于20厘米时,LED灯会闪烁,闪烁频率随着距离的变化而变化,距离越近频率越高。你可以根据你的需求修改LED灯的闪烁频率。
阅读全文