【问题标题】:Arduino: Increasing and decreasing a variable with buttonsArduino:使用按钮增加和减少变量
【发布时间】:2015-04-12 12:14:58
【问题描述】:

Arduino IDE 上的 Arduino Uno:

您好,我正在尝试在按下按钮 1 时将变量“速度”增加 0.01,并在按下按钮 2 时将其减少 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;
}

希望你能帮忙,谢谢。

【问题讨论】:

  • 您可能指的是if (b1 == LOW),而不是作业。
  • 成功了,谢谢!

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


【解决方案1】:

b1 = low 是一个分配。这将始终将 b1 设置为低,并且评估为低,恰好是 0,恰好被插入为假。 b1 == low 可能是您想要的比较。修复此问题后,您会注意到此代码将“自动重复”快速。您将学习的下一件事是按钮弹跳。您可能想在 Arduino 页面上阅读如何处理此问题:http://playground.arduino.cc/code/bounce

【讨论】:

    【解决方案2】:

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

    if (LOW == b1)
    

    那么,如果你漏掉了一个= 符号,你就会出现编译错误并检测到那个错误。

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

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

    【讨论】:

      猜你喜欢
      • 2020-09-21
      • 1970-01-01
      • 1970-01-01
      • 2019-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多