Arduino的。为什么我的代码会延迟工作

时间:2014-04-29 00:27:45

标签: arduino

我编写了一段代码,由于某些原因,只有在我发出延迟时才能生效。它应该是一个红绿灯

 int switchState = 0;

void setup() {
  pinMode(5, OUTPUT); // red light
  pinMode(4, OUTPUT); // yellow light
  pinMode(3, OUTPUT); // green light
  pinMode(2, INPUT);  // button, when pressed lights switch
  digitalWrite(5, HIGH);
}

void loop() {
  switchState = digitalRead(2);
  if(switchState == HIGH){  
    if(digitalRead(5) == HIGH) { // if the light is red
      digitalWrite(5, LOW);      // turn off red light
      digitalWrite(3, HIGH);     // turn on green light
      delay(500);                                   //It's this delay
    }
    else {                       // light is green
      digitalWrite(3, LOW);      // turn off green light
      digitalWrite(4, HIGH);     // turn on yellow light
      delay(500);                // yellow light turned on for a bit just like traffic light
      digitalWrite(4, LOW);      // turn off yellow light
      digitalWrite(5, HIGH);     // turn on red light
    }
  }
}  

我想也许是因为我按住“太长时间”按钮并且循环跑了两次并且通过添加延迟我已经创造了足够的时间来释放我的手指,是这样的情况还是还有其他事情要去上?

编辑:没有延迟,即使红灯亮起,它也会一直跳到else语句

1 个答案:

答案 0 :(得分:1)

您似乎遇到了Debouncing的一些问题。 more info

按钮不能从打开到关闭干净地切换,由于机械性质,存在一些抖动。