serialEvent()
作為串口中斷回調函數,需要注意的是,這里的中斷與硬件中斷有所不同,這個回調函數只會在loop()
執行完后才會執行,所以在loop()
里的程序不能寫成阻塞式的,只能寫成輪詢式的。
/*通過串口控制LED燈的亮滅,輸入o開燈,輸入f關燈*/
#define led 13
char led_recv_status = 0;
bool stringComplete = false;
void setup()
{
pinMode(led,OUTPUT);
digitalWrite(led, LOW);
Serial.begin(115200);
Serial.println("please select 'o' or 'f' to control led:");
}
void loop()
{
if(stringComplete == true)
{
if(led_recv_status == 'o')
{
digitalWrite(led, HIGH); //led on
Serial.println("led on");
}
else if(led_recv_status == 'f')
{
digitalWrite(led, LOW); //led off
Serial.println("led off");
}
stringComplete = false;
}
}
void serialEvent()
{
while (Serial.available())
{
led_recv_status = (char)Serial.read();
stringComplete = true;
}
}