如何使蜂鸣器保持开启(LDR警报)?

时间:2017-04-24 09:15:51

标签: arduino arduino-uno

我在Arduino中有一个检查LDR传感器的程序。如果超过设定值,则会触发警报。如何设置它,一旦触发它一直保持开启,直到检测到按钮按下以解除它?

代码:

const int ledPin = 8;
const int buzzerPin = 4;
const int ldrPin = A0;
void setup () {
  Serial.begin(9600);
  pinMode(ledPin, OUTPUT);
  pinMode(buzzerPin, OUTPUT);
  pinMode(ldrPin, INPUT);
}

void loop() {
  int ldrStatus = analogRead(ldrPin);
  if (ldrStatus >= 30) {
    noTone(buzzerPin);
    digitalWrite(ledPin, LOW);
  } else {
    tone(buzzerPin, 100);
    digitalWrite(ledPin, HIGH);
    delay(100);
    noTone(buzzerPin);
    digitalWrite(ledPin, LOW);
    delay(100);
    Serial.println("----------- ALARM ACTIVATED -----------");
  }
}

1 个答案:

答案 0 :(得分:0)

您应该使用FLAG来触发警报而不是直接使用阈值。

if (ldrStatus >= 30) {
   AlarmFlag = true; //Set alarm
}
...
if (digitalRead(pushButton) == LOW){
   AlarmFlag = false; //Turn off alarm
}
...
if (AlarmFlag == true){
  Serial.println("ALARM ON");
  ...
}