2015-04-12 196 views
-1

Arduino的乌诺上的Arduino IDE变量:的Arduino:增加和减少的按钮

嗨,我想通过0.01增加“sspeed”变量当按下按钮1,和0.01时降低它按下按钮2。

目前它不会工作。我知道它不是与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

你可能是指'if(b1 == LOW)'而不是赋值。 –

+0

工作,谢谢! – Harry

回答

2

b1 = low是一项任务。这将始终将b1设置为低,并将其评估为低,这恰好为0,这恰好被误称为假。 b1 == low可能是你想要的比较。一旦你解决这个问题,你会注意到这个代码会“自动重复”以加快速度。接下来你会学到的是按钮反弹。你可能想要阅读在Arduino页面上做什么:http://playground.arduino.cc/code/bounce

0

如前所述,b1 = LOW是一个总是返回true的赋值。为了避免这种常见的错误,甚至可能是一个错字,你可以使用Yoda conditions,也就是把值和变量放在一起。

if (LOW == b1) 

然后,如果你错过了一个=标志,你将有一个编译错误,并检测错误。

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

if (LOW == b1) 
{ 
    delay(5); 
    sspeed += 0.01; 
} 
相关问题