【发布时间】:2019-05-25 19:23:08
【问题描述】:
我在 Arduino UNO 中处理中断问题。在这个项目中,我想当门打开时 LED 闪烁 10 次,当门再次关闭时,停止闪烁 LED 并退出该功能。但在此代码中,LED 仅打开和关闭一次,并且不再闪烁。 我的另一个问题是,当门打开或关闭时,有时在系列监视器中会出现多次打开或关闭的单词。
const byte LED_Red = 13;
const byte DOOR_SENSOR = 2; // magnetic door sensor pin
volatile int SensorState = LOW; // 0 close - 1 open wwitch
void setup()
{
Serial.begin(9600);
pinMode(LED_Red, OUTPUT);
pinMode(DOOR_SENSOR, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(DOOR_SENSOR), DoAction, CHANGE);
}
void DoAction()
{
SensorState = digitalRead(DOOR_SENSOR);
if (SensorState == HIGH) {
Serial.println("Opened");
blinkLED(10, 500);
}
else {
Serial.println("Closed");
}
}
void blinkLED(int repeats, int time)
{
for (int i = 0; i < repeats; i++) {
if (SensorState == HIGH) {
digitalWrite(LED_Red, HIGH);
delay(time);
digitalWrite(LED_Red, LOW);
delay(time);
}
else
return;
}
}
void loop()
{
}
【问题讨论】: