Arduino Uno:
嗨,我正在尝试按下button1时将变量'sspeed'增加0.01,按下button2时减少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;
}
希望你能提供帮助,谢谢。
答案 0 :(得分:2)
b1 = low
是一项任务。这将始终将b1设置为低并且还评估为低,恰好为0,恰好是假的。 b1 == low
可能是您想要的比较。一旦你解决了这个问题,你会发现这段代码将“自动重复”到快速。接下来你要学习的是按钮弹跳。您可能想要阅读Arduino页面上有关此操作的内容:http://playground.arduino.cc/code/bounce
答案 1 :(得分:0)
如前所述,b1 = LOW
是一个总是返回true的赋值。为了避免这个常见的错误,甚至可能是一个错字,您可以使用Yoda conditions,即将值放入变量。
if (LOW == b1)
然后,如果您错过了一个=
符号,则会出现编译错误并检测到该错误。
关于弹跳,您可以使用短暂的延迟来避免它。
if (LOW == b1)
{
delay(5);
sspeed += 0.01;
}