我正在编写一个与我的面包板上连接的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)时才会触及限制吗?
答案 0 :(得分:0)
因此,如果bounceLimit
是(例如)9开始,当你到达顶部时,你需要一个让bounceLimit
等于8.但是当LED在下一次迭代中下降时然后,活动LED也是8,再次触发if语句。