一段Arduino的代码,它实现了一个基于测试火焰的功能,当距离大于一定值时,LED灯和蜂鸣器会发出警报。同时,还有一个按键可以手动触发警报。
时间: 2024-02-21 12:56:56 浏览: 107
好的,以下是一个基于 Arduino 的火焰测试代码,当距离大于一定值时触发警报,同时还有一个按键可以手动触发警报:
```
const int flamePin = A0; // 火焰传感器连接的引脚
const int ledPin = 13; // LED 灯连接的引脚
const int buzzerPin = 9; // 蜂鸣器连接的引脚
const int buttonPin = 2; // 手动触发警报的按键连接的引脚
const int threshold = 500; // 火焰传感器的阈值
const int distanceThreshold = 100; // 警报触发的距离阈值
void setup() {
pinMode(flamePin, INPUT);
pinMode(ledPin, OUTPUT);
pinMode(buzzerPin, OUTPUT);
pinMode(buttonPin, INPUT_PULLUP);
}
void loop() {
int flameValue = analogRead(flamePin);
if (flameValue > threshold) { // 火焰检测
digitalWrite(ledPin, HIGH);
tone(buzzerPin, 1000); // 发出警报声音
delay(100);
noTone(buzzerPin);
} else {
digitalWrite(ledPin, LOW);
}
int distance = ultrasonicDistance(); // 超声波距离检测
if (distance < distanceThreshold || digitalRead(buttonPin) == LOW) { // 距离小于阈值或按键被按下
digitalWrite(ledPin, HIGH);
tone(buzzerPin, 1000); // 发出警报声音
delay(100);
noTone(buzzerPin);
}
}
int ultrasonicDistance() {
const int trigPin = 12; // 超声波传感器的 trig 引脚
const int echoPin = 11; // 超声波传感器的 echo 引脚
long duration, distance;
pinMode(trigPin, OUTPUT);
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
pinMode(echoPin, INPUT);
duration = pulseIn(echoPin, HIGH);
distance = duration / 58.2;
return distance;
}
```
希望这个代码能够满足你的需求,如果还有疑问请随时提出。
阅读全文