求助:arduino串口通讯问题
int led = 13;void setup() {
// USB串口通讯 控制 13 引脚 Led
Serial.begin(9600);
pinMode(led, OUTPUT);
Serial.println("Off is 0 , On is 1."); //0是关,1是开
}
void loop() {
// put your main code here, to run repeatedly:
while (Serial.available() == 0); //获取值
int val = Serial.read() - '0';
if (val == 1) //是1,执行打开
{
Serial.println("Led is On");
digitalWrite(led, HIGH);
}
else if (val == 0) //是0,执行关闭
{
Serial.println("Led is Off");
digitalWrite(led, LOW);
}
else
{
Serial.println("Please enter 1 or 0"); //请输入1或0
}
// Serial.println(val);
while(Serial.read() >= 0){}//清空串口缓存
}
代码执行后,串口通讯输入两个数字,比如输入11,会执行两次,如何只执行1次呢。 你的程式好像是想忽略第一個數字以後的輸入.
由於你用的是 9600bps, 傳輸比較慢, 在執行 read() 之後加一個 delay(1) 就可以了.
最後的清空改成這樣比較好:
while (Serial.available()) {
Serial.read();
delay(1);
} Super169 发表于 2015-10-14 14:13 static/image/common/back.gif
你的程式好像是想忽略第一個數字以後的輸入.
由於你用的是 9600bps, 傳輸比較慢, 在執行 read() 之後加一個 ...
感谢你的回复,加上延时后可以解决这个问题了。非常感谢!! Super169 发表于 2015-10-14 14:13 static/image/common/back.gif
你的程式好像是想忽略第一個數字以後的輸入.
由於你用的是 9600bps, 傳輸比較慢, 在執行 read() 之後加一個 ...
做个记号,不懂再来看看
页:
[1]