Arduino:使用按钮增加和减少变量

时间:2015-04-12 12:14:58

标签: c++ arduino arduino-uno arduino-ide

Arduino IDE上的

Arduino Uno:

嗨,我正在尝试按下button1时将变量'sspeed'增加0.01,按下button2时减少0.01.

目前无法使用。我知道它不是与arduino的连接,因为我已经尝试了串行打印'b1',它根据天气的低或高返回0或1。 所以我猜我在代码中做错了。

我的代码如下:

float sspeed = 0.00;

void setup()
{
  Serial.begin(9600);

                            //(the buttons are 2 pin)
  pinMode(2, INPUT_PULLUP); //button1
  pinMode(3, INPUT_PULLUP); //button2
}

void loop()
{
  int b1 = digitalRead(2);
  int b2 = digitalRead(3);

  Serial.println(sspeed);

  if (b1 = LOW) sspeed = sspeed + 0.01;
  if (b2 = LOW) sspeed = sspeed - 0.01;
}

希望你能提供帮助,谢谢。

2 个答案:

答案 0 :(得分:2)

b1 = low是一项任务。这将始终将b1设置为低并且还评估为低,恰好为0,恰好是假的。 b1 == low可能是您想要的比较。一旦你解决了这个问题,你会发现这段代码将“自动重复”到快速。接下来你要学习的是按钮弹跳。您可能想要阅读Arduino页面上有关此操作的内容:http://playground.arduino.cc/code/bounce

答案 1 :(得分:0)

如前所述,b1 = LOW是一个总是返回true的赋值。为了避免这个常见的错误,甚至可能是一个错字,您可以使用Yoda conditions,即将值放入变量。

if (LOW == b1)

然后,如果您错过了一个=符号,则会出现编译错误并检测到该错误。

关于弹跳,您可以使用短暂的延迟来避免它。

if (LOW == b1)
{
    delay(5);
    sspeed += 0.01;
}