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 中获取答案。
我的一个程序有点问题。我的电路(主要)由一个 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 中获取答案。