【问题标题】:Arduino increment operators does not affect variable?Arduino增量运算符不影响变量?
【发布时间】: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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-01
    • 2011-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-19
    • 1970-01-01
    相关资源
    最近更新 更多