2016-11-26 16 views
0

我需要設置所有的LED爲低,除了我想要在高。 目前,我必須發送一個特定的請求到所有的LED,以確保以前的LED將被設置爲低。如果我將這個邏輯應用於很多LED,代碼將會很長。Arduino - 關掉所有的LED,但保持在自動化

有沒有辦法說領導

問題

  • 組高,但低所有其他人?

此代碼將打開led。

if (readString.indexOf("?wall01_02") > 0) { 
     digitalWrite(led, HIGH); 
     digitalWrite(led1, LOW); 
     digitalWrite(led2, LOW); 
     digitalWrite(led3, LOW); 
下一次

我要發送到LED1的請求,但我也不得不關閉之前的LED發光管。

if (readString.indexOf("?wall01_01") > 0) { 
      digitalWrite(led, LOW); 
      digitalWrite(led1, HIGH); 
      digitalWrite(led2, LOW); 
      digitalWrite(led3, LOW); 
+0

如果你把他們所有* *先關閉,然後打開你想要的? – Kittsil

+0

我想要點亮一個,然後我想打開另一個燈,但只要我沒有將它改爲低電平,我以前打開的那個燈就會亮起。 – Sebastian

+0

我知道。但是你問:「如果沒有讓我的代碼真的很長,我該如何關閉所有代碼?」答案是,「把它們全部關掉,然後把你想要的那個放回去。」 – Kittsil

回答

2

我不能寫評論。

爲什麼不一個int數組,像這樣:

#define ledArray 4 
int ledPins[ledArray] = {1, 3, 7, 14}; 

if(readString.indexOf("?wall01_02") > 0) { 
    lightsOff(led); 
} 

if(readString.indexOf("?wall01_01") > 0) { 
    lightsOff(led1); 
} 

void lightsOff(int led) { 
    int i; 
    for(i = 0; i < ledArray; ++i) { 
     digitalWrite(ledPins[i], (ledPins[i] != led) ? LOW : HIGH); 
    } 
}