[英]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.