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

Arduino: Increasing and decreasing a variable with buttons

Arduino 上的 Arduino Uno IDE:

您好,我正在尝试在按下 button1 时将变量 'sspeed' 增加 0.01,并在按下 button2 时将其减小 0.01。

目前无法使用。我知道它不是与 arduino 的连接,因为我已经尝试过串行打印 'b1' 其中 returns 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;
}

希望能帮到你,谢谢。

b1 = low 是一个赋值。这将始终将 b1 设置为低,并且评估为低,恰好为 0,恰好被解释为假。 b1 == low 大概就是你要的比较。修复此问题后,您会注意到此代码将 "autorepeat" 变快。您将学习的下一件事是按钮弹跳。您可能想在 Arduino 页面上阅读如何处理:http://playground.arduino.cc/code/bounce

如前所述,b1 = LOW 是一个始终 return 为真的赋值。为避免这种常见错误,甚至可能是拼写错误,您可以使用 Yoda conditions,即先输入值再输入变量。

if (LOW == b1)

然后,如果您错过了一个 = 符号,您将遇到编译错误并检测到该错误。

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

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