Arduino增量运算符不影响变量?

时间:2014-01-08 01:26:29

标签: c if-statement arduino increment led

我正在编写一个与我的面包板上连接的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)时才会触及限制吗?

1 个答案:

答案 0 :(得分:0)

因此,如果bounceLimit是(例如)9开始,当你到达顶部时,你需要一个让bounceLimit等于8.但是当LED在下一次迭代中下降时然后,活动LED也是8,再次触发if语句。