2017-07-18 161 views
0

我正在嘗試爲Arduino Uno編寫代碼。我有四(6)行六(6)個LED燈,我試圖讓他們自己在櫃檯上跑。下面是我的編碼,但我遇到了一個燈打開但不會關閉的問題。我目前使用TinkerCad來嘗試排除故障。儘管代碼可以處理所有四(4)行燈光,但我僅在void loop()中編碼了一行。任何建議是有幫助的!Arduino Uno編碼

// Test for board 

int LEDblue = 13; 
int LEDblueON = 1000; 
int LEDblueOFF = 1000; 

int LEDgreen = 12; 
int LEDgreenON = 2000; 
int LEDgreenOFF = 2000; 

int LEDyellow = 11; 
int LEDyellowON = 4000; 
int LEDyellowOFF = 4000; 

int LEDred = 10; 
int LEDredON = 8000; 
int LEDredOFF = 8000; 

int CounterBlue = 0; 
int CounterGreen = 0; 
int CounterYellow = 0; 
int CounterRed = 0; 

void setup() 
{ 
    pinMode (LEDblue, OUTPUT); 
    pinMode (LEDgreen, OUTPUT); 
    pinMode (LEDyellow, OUTPUT); 
    pinMode (LEDred, OUTPUT); 
} 

void loop() 
{ 
    if (CounterBlue <LEDblueON); 
    { 
    digitalWrite(LEDblue, HIGH); 
    } 
    if (CounterBlue=LEDblueON+LEDblueOFF); 
    { 
    digitalWrite(LEDblue, LOW); 
    } 
    if(CounterBlue>LEDblueON+LEDblueOFF); 
    { 
    (CounterBlue= 0); 
    } 
    delay(1); 
} 
+2

你永遠不會改變'CounterBlue'。和';'在if條件看起來不正確之後。 'CounterBlue = LEDblueON + LEDblueOFF'不是一個比較。 –

+0

我將「CounterBlue = ...」更改爲「CounterBlue Ajohnson

+0

變量的名稱是'Counter *',你不計算它。如果您編寫的代碼根據變量的不同值執行不同的操作,則預計該變量會在某個時間點發生更改。 –

回答

0

主要問題是,在你的if語句的條件例如

if (CounterBlue <LEDblueON); 
    { 
    digitalWrite(LEDblue, HIGH); 
    } 

括號前有一個;。如果將其更改爲

if (CounterBlue <LEDblueON) 
    { 
    digitalWrite(LEDblue, HIGH); 
    } 

它應該可以正常工作。