我多次尝试编写一个代码,根据灯光(在当前房间中)是打开还是关闭,将使2个RGB LED闪烁或以某种方式保持亮起。 当灯亮起时,2个RGB应该一次一秒地交替闪烁蓝色。 当灯熄灭时,两个RGB应该打开,并保持红色。 我正在使用2个RGB,电线,面包板,电阻器,光敏电阻和arduino UNO(不是原版,但它是一个非常接近的复制品...除了事实之外,你不能说两者之间有任何区别它没有说" UNO")。 RGB连接到引脚5,6,7和8,9,10。光敏电阻位于引脚13中。 这是我目前的代码(它在c#,btw中):
int sensPin = 13;
void setup()
{
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
pinMode(7,OUTPUT);
pinMode(8,OUTPUT);
pinMode(9,OUTPUT);
pinMode(10,OUTPUT);
pinMode(13,INPUT);
Serial.begin(9600);
}
void loop()
{
int prVal = analogRead(sensPin);
Serial.write(prVal);
if(prVal>225)
{
digitalWrite(5,HIGH);
digitalWrite(6,HIGH);
digitalWrite(7,HIGH);
digitalWrite(8,LOW);
digitalWrite(9,HIGH);
digitalWrite(10,HIGH);
delay(500);
digitalWrite(5,LOW);
digitalWrite(6,HIGH);
digitalWrite(7,HIGH);
digitalWrite(8,HIGH);
digitalWrite(9,HIGH);
digitalWrite(10,HIGH);
delay(500);
}
else
{
digitalWrite(5,HIGH);
digitalWrite(6,HIGH);
digitalWrite(7,LOW);
digitalWrite(8,HIGH);
digitalWrite(9,HIGH);
digitalWrite(10,LOW);
delay(10);
}
}
我遇到的问题是两个RGB都保持红色......无论如何。我已经尝试摆弄电线,并进行三重检查以查看是否所有内容都已正确插入,但没有发生任何变化。另一件我觉得奇怪的是,在随机点,几分钟,RGB(房间里的灯光没有改变,没有触摸或移动硬件)将开始交替闪烁蓝色,然后再回来保持红色。
任何,所有的建议和帮助表示赞赏。
〜编辑〜 我改变了我的代码(和硬件)。由于评论中提出的建议,我将光敏电阻放在引脚12中,并相应地更改了我的代码。此外,变量已更改(名称为sensPin,现在它被声明为prPin),但没有更多。这就是我所拥有的:
int prPin = 12;
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>225)
{
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);
}
}
我上传了代码并运行了,但是上次发生了同样的事情。 我可能有一块坏板吗?我不认为是这样,但有机会。我测试了板上的所有东西,一切似乎都没问题......我不知道发生了什么。 再一次,我会感谢任何帮助,无论是一个小小的提示或建议,还是一个明确的彻底答案。我是一本开放的书,所以我接受你抛出的任何东西。
答案 0 :(得分:1)
只有具有专用硬件的某些引脚才能用作模拟输入。它们标记为A0-A5,不与数字引脚IO0-IO13重叠。
定义时
int prPin = 12;
然后不要指望打电话
analogRead(prPin)
带来有意义的结果。
答案 1 :(得分:0)