RGB、光敏电阻和 if-else 循环?

RGB, photoresistor, and if-else loop?

我的一个程序有点问题。我的电路(主要)由一个 arduino UNO、两个 RGB LED 和一个光敏电阻组成。我当前的代码(用 c++ 编程)是这样操作硬件的:当房间里的灯亮起时,两个 LED 每秒交替 blue/off 一次循环。当灯熄灭或光敏电阻未感应到任何光时,两个 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" statement/loop 运行,直到它完成 "if" statement/loop. 任何建议或答案表示赞赏。我是一本打开的书,所以我会接受你们给我的任何东西。

我建议你阅读 following

使用 millis 而不是 delay 更强大、更高效!解决您的问题也很容易,因为循环不会再延迟,因此不会延迟从一种状态切换到另一种状态。

编辑

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

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