首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Arduino闪烁led问题

Arduino闪烁led问题
EN

Stack Overflow用户
提问于 2015-04-19 06:13:07
回答 1查看 1.7K关注 0票数 1

好了,我已经在Arduino Uno上开始了我的项目2。它包括3个闪烁的leds。最初的想法是,绿色发光二极管将被点亮,直到按下开关,这将使其他两个发光二极管连续闪烁。然而,我已经尝试让绿色的led一直闪烁,直到我按下开关(而不是在按下开关之前它被被动地点亮)。因此,我对if语句做了一个小调整,但这并不起作用( led闪烁了一次,然后继续亮着)。

代码语言:javascript
复制
    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,低)之后插入另一个延迟时,它起作用了。对此有何解释?我是个新手,所以请把你的解释说清楚。

EN

回答 1

Stack Overflow用户

发布于 2015-04-19 06:38:14

情况1:用户没有按下开关开关,至少要让> delay(1000);再次运行。在本节中:

代码语言:javascript
复制
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时,指示灯熄灭。

代码语言:javascript
复制
else
{
   digitalWrite(3,LOW);
   digitalWrite(4,LOW);
   digitalWrite(5, HIGH);
   delay(250);
   digitalWrite(4, HIGH);
   digitalWrite(5, LOW);
   delay(250);
}

LED再次设置为低电平,然后保持熄灭。

这有帮助吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29723481

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档