簡體   English   中英

Arduino:使用按鈕增加和減少變量

[英]Arduino: Increasing and decreasing a variable with buttons

Arduino IDE 上的 Arduino Uno:

嗨,我試圖在按下按鈕 1 時將變量 'sspeed' 增加 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;
}

希望能幫到你,謝謝。

b1 = low是一個賦值。 這將始終將 b1 設置為低,並評估為低,恰好是 0,這恰好被解釋為 false。 b1 == low可能是你想要的比較。 一旦你解決了這個問題,你會注意到這段代碼會“自動重復”得很快。 您將學習的下一件事是按鈕彈跳。 您可能想在 Arduino 頁面上閱讀如何處理此問題: http : //playground.arduino.cc/code/bounce

如前所述, b1 = LOW是一個總是返回 true 的賦值。 為了避免這種常見的錯誤,甚至可能是拼寫錯誤,您可以使用Yoda 條件,即先輸入值,然后再輸入變量。

if (LOW == b1)

然后,如果您錯過了一個=符號,您將遇到編譯錯誤並檢測到該錯誤。

關於彈跳,您可以使用短暫的延遲來避免它。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM