随手写了一个小程序,目标是串口收到:‘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);
}
}
}
