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