2015-09-26 138 views
0

我试了很多次,根据灯(在当前房间里)是打开还是关闭,会使2个RGB LED闪烁或以某些方式保持打开。 当灯亮起时,2个RGB应该每次一秒钟闪烁蓝色。 当灯熄灭时,两个RGB都应打开,并保持红色。 我使用2个RGB,电线,面包板,电阻,光敏电阻和arduino UNO(不是原始的,但它是一个非常接近的复制品......除了事实之外,你不能分辨两者之间的任何区别它不会说“UNO”)。将RGB的连接销5,6,7,和8,9,10,光敏电阻处于销13 这是我目前的代码(这是在C#,顺便说一句):c中的光敏电阻和RGB LED#

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

听起来像是你不知道它的硬件或软件......如何投入一些调试输出,找出? – Ian

+0

你使用什么类型的Arduino?乌诺?兆丰?莱昂纳多?或其他?在Arduino Uno中,引脚13连接到LED,可能对读取模拟值不利。 – MikeCAT

+0

@Ian我已经知道我的问题不是硬件,因为我已经重复检查了我的电路,并且一切正常。我真的需要知道我在编码中缺少什么或者做错了什么,所以我可以解决这个问题。 –

回答

1

只有某些具有专用硬件的引脚可用作模拟输入。它们被标记为A0-A5,并且不与数字引脚IO0-IO13重叠。

当你定义

int prPin = 12; 

那就不要指望调用

analogRead(prPin) 

一个有意义的结果。

+0

非常感谢!我假设针编号(在代码中)我输入A0或A(任何针),对不对? –

0

根据Ben Voight提到的最后一个代码示例,您会与数字IO和ADC(模数转换器)混淆。

我建议使用WS2812型RGB LED,它们在Arduino上很好地支持需要1个支持PWM的数字IO(带有〜)。

但是你也会问C#,这个设备叫做NusbioMCU,它允许任何.NET语言控制不同形状的RGB LED WS2812(Strip,Ring,Square)。它也有4个ADC,可以用来连接你的光敏电阻。还有很多[Github上的示例] [1]。

enter image description here