好了,我已经在Arduino Uno上开始了我的项目2。它包括3个闪烁的leds。最初的想法是,绿色发光二极管将被点亮,直到按下开关,这将使其他两个发光二极管连续闪烁。然而,我已经尝试让绿色的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:
}绿色指示灯分配给pd3,另外两个指示灯分配给pd4和pd5。
那么,为什么在条件验证后(无论开关是否被按下),led只闪烁一次-它不应该继续闪烁吗?然而,当我在第二个digitalWrite(3,低)之后插入另一个延迟时,它起作用了。对此有何解释?我是个新手,所以请把你的解释说清楚。
发布于 2015-04-19 06:38:14
情况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语句至少一次之后。进入else时,指示灯熄灭。
else
{
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(5, HIGH);
delay(250);
digitalWrite(4, HIGH);
digitalWrite(5, LOW);
delay(250);
}LED再次设置为低电平,然后保持熄灭。
这有帮助吗?
https://stackoverflow.com/questions/29723481
复制相似问题