【发布时间】:2014-01-08 01:26:28
【问题描述】:
我正在编写一个程序,该程序与连接在我的面包板上的 LED 进行交互,该程序将模拟一个上下弹跳的“球”。一切正常,直到反弹高度减小(模拟动量损失)。 LED 一直亮着超过第 9 个 LED 并开始表现怪异。
这行代码出现的问题:
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)的时候才会达到极限吗?
【问题讨论】:
-
您可能应该查看
else语句...或检查您的变量值是什么。
标签: c if-statement arduino increment led