2014-01-08 21 views
-1

我正在寫一個程序,它與我的麪包板上連接的LED相互作用,可以模擬上下彈跳的「球」。一切正常工作,直到反彈的高度遞減(模擬動量損失)爲止。 LED保持點亮,超過第9個LED並開始表演奇怪。Arduino增量運算符不影響變量?

存在的問題在這行代碼出現了:

digitalWrite(ledPin[activeLED], HIGH); 
activeLED += dir; 
if (activeLED == bounceLimit){ 
    dir = -1; 
    bounceLimit--; 
} 
if (activeLED == 0) { 
    dir = 1; 
} 

的activeLED是LED被點亮時,在連續的頂光,直至碰到bounceLimit變量,它改變方向和燈向下直到零並重新開始。問題在於,在下一次升高時,bounceLimit應該設置爲8(然後是7,6等),但是它似乎沒有設置得更低,並且LED繼續點亮到頂部並且然後開始行動怪異。

我設法通過增加另一個條件

if (activeLED == bounceLimit && dir = 1){ 
dir = -1; 
bounceLimit--; 
} 

但爲什麼額外的條件需要解決?無論如何,只有當方向向上時(1)才能擊中限制嗎?

+0

您應該查看'else'語句...或檢查您的變量值是什麼。 –

回答

0

因此,如果bounceLimit是(比如說)9開始,那麼當您觸碰頂部時,您將帶走等於8.但是隨後當LED在下一次迭代中下降時,有源LED也是8 ,這會再次觸發你的if語句。