我编写了一段代码,由于某些原因,只有在我发出延迟时才能生效。它应该是一个红绿灯
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语句