好的,所以我在Arduino Uno上开始了我的Project 2。它涉及3个闪烁的LED。最初的想法是绿色指示灯将点亮,直到按下一个开关,这将使另外两个LED连续闪烁。但是,我试图让绿色LED保持闪烁,直到我按下开关(而不是在按下开关之前被动点亮)。所以我对if语句进行了一次小调整,但这没有用(led闪烁一次然后继续点亮)。
int switchState=0;
void setup() {
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
pinMode(2, INPUT);
// put your setup code here, to run once:
}
void loop() {
switchState= digitalRead(2);
if (switchState==LOW) {
digitalWrite(3, HIGH);
delay(1000);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
}
else {
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(5, HIGH);
delay(250);
digitalWrite(4, HIGH);
digitalWrite(5, LOW);
delay(250);
}
// put your main code here, to run repeatedly:
}
绿色LED分配给pd3,另外两个LED分配给pd4和pd5。
那么为什么在验证条件后(无论是否按下开关),LED是否只闪烁一次 - 不应该继续闪烁?但是当我在第二个digitalWrite(3,LOW)之后插入另一个延迟时,它工作了。对此有何解释?我是新手,所以请明确说明。
答案 0 :(得分:0)
案例1:
用户不按下开关至少> delay(1000);
再次投放。
在本节中:
switchState= digitalRead(2);
if (switchState==LOW) // <---- User is not pressing switch so we
{ // enter the if.
digitalWrite(3, HIGH);
delay(1000);
digitalWrite(3, LOW);
// Adding delay here makes it blink.
digitalWrite(4, LOW);
digitalWrite(5, LOW);
}
完成digitalWrite(3, LOW);
之后,在循环重复之前它是微/毫秒,然后再次输入if。 LED实际上确实闪烁了,但它是如此之快,你无法看到它。只要用户没有按下按钮,LED就会保持亮起状态。
案例2: 用户按下按钮并在完成if语句后至少运行一次。 LED进入其他位置时保持关闭状态。
else
{
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(5, HIGH);
delay(250);
digitalWrite(4, HIGH);
digitalWrite(5, LOW);
delay(250);
}
LED再次设置为LOW,然后保持OFF。
这有帮助吗?