我对我的程序有点麻烦。我的电路由(主要)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”语句/循环。 任何建议或答案都表示赞赏。我是一本打开的书,所以我会带你们给我的任何东西。
答案 0 :(得分:1)
我建议你阅读following。
使用millis
代替delay
更有效率!修复问题也很容易,因为循环不会再延迟,因此没有延迟从一个状态切换到另一个状态。
修改强>
Here是关于millis方法的更多细节。
我建议您从Arduino SE上的copy of your question获得答案。