随手写了一个小程序,目标是串口收到:‘b’关闭 Pin 13 的LED;当收到 ‘s’ 是打开 LED.
程序如下,很奇怪的现象是:板子上 PIN 13 的LED一直是熄灭的。有兴趣的朋友在看答案之前可以先自己琢磨一下。
#define LED_PIN 13 void setup() { Serial.begin(9600); pinMode(LED_PIN, OUTPUT); } void loop() { while (Serial.available() > 0) { if ('b'==Serial.read();) { digitalWrite(LED_PIN, LOW); } if ('s'==Serial.read();) { digitalWrite(LED_PIN, HIGH); } } }
真相只有一个,当 Serial Port Available之后,如果你取走了字符,下一个判断就是空了,所以第二个条件永远无法满足……
#define LED_PIN 13 void setup() { Serial.begin(9600); pinMode(LED_PIN, OUTPUT); } void loop() { char c; while (Serial.available() > 0) { c=Serial.read(); if ('b'==c) { digitalWrite(LED_PIN, LOW); } if ('s'==c) { digitalWrite(LED_PIN, HIGH); } } }