c-Arduino增量运算符不影响变量



我正在编写一个程序,该程序与我的面包板上连接的LED进行交互,该程序将模拟上下弹跳的"球"。直到反弹高度下降(模拟动量损失),一切都正常工作。LED在第9个LED之后一直亮着,开始表现得很奇怪。

出现在这行代码中的问题:

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

活动LED是被点亮的LED,它们依次点亮到顶部,直到它达到边界极限变量,在那里它改变方向并向下发光,直到零,然后再次向上开始。问题在于,下次它上升时,boundLimit应该设置得更低,为8(然后是7、6等),但它似乎没有设置得更低,LED继续亮到顶部,然后开始表现得很奇怪。

我设法通过添加另一个条件来修复它

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

但为什么需要额外的条件呢?难道只有当方向向上时,极限才会达到吗?

因此,如果bounceLimit是(比如)9开始,当你到达顶部时,你拿走一个,使bounceLimit等于8。但是,当LED在下一次迭代中熄灭时,活动LED也是8,这会再次触发if语句。

最新更新