RGB,光敏电阻和if-else环路?

时间:2015-09-28 02:30:08

标签: loops if-statement rgb

我对我的程序有点麻烦。我的电路由(主要)arduino UNO,两个RGB LED和一个光敏电阻组成。我当前的代码(用c ++编程)操作硬件如下:当房间里的灯亮时,两个LED在一个循环中每秒交替闪烁一次蓝色/关闭。当灯熄灭或光敏电阻未检测到任何光线时,两个LED均亮起,并保持亮红色。 我的代码:

int prPin = A0;

void setup()
{
  pinMode(5,OUTPUT);
  pinMode(6,OUTPUT);
  pinMode(7,OUTPUT);
  pinMode(8,OUTPUT);
  pinMode(9,OUTPUT);
  pinMode(10,OUTPUT);
  pinMode(prPin,INPUT);
  Serial.begin(9600);
}

void loop()
{
  int prVal = analogRead(prPin);
  Serial.write(prVal);
    if(prVal>450)
    {
      digitalWrite(5,HIGH);
      digitalWrite(6,HIGH);
      digitalWrite(7,HIGH);
      digitalWrite(8,LOW);
      digitalWrite(9,HIGH);
      digitalWrite(10,HIGH);
      delay(1000);
      digitalWrite(5,LOW);
      digitalWrite(6,HIGH);
      digitalWrite(7,HIGH);
      digitalWrite(8,HIGH);
      digitalWrite(9,HIGH);
      digitalWrite(10,HIGH);
      delay(1000);
    }
    else
    {
      digitalWrite(5,HIGH);
      digitalWrite(6,HIGH);
      digitalWrite(7,LOW);
      digitalWrite(8,HIGH);
      digitalWrite(9,HIGH);
      digitalWrite(10,LOW);
      delay(10);
    }
}

我遇到的问题是当灯熄灭时,LED将不会根据“else”语句/循环运行,直到它完成通过“if”语句/循环。 任何建议或答案都表示赞赏。我是一本打开的书,所以我会带你们给我的任何东西。

1 个答案:

答案 0 :(得分:1)

我建议你阅读following

使用millis代替delay更有效率!修复问题也很容易,因为循环不会再延迟,因此没有延迟从一个状态切换到另一个状态。

修改

Here是关于millis方法的更多细节。

我建议您从Arduino SE上的copy of your question获得答案。