chilkings

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;
  }
}

分类:

技术点:

相关文章:

  • 2021-06-27
  • 2021-09-16
  • 2022-12-23
  • 2021-08-21
  • 2021-10-06
猜你喜欢
  • 2021-11-29
  • 2022-12-23
  • 2021-10-30
  • 2021-05-26
  • 2022-03-02
  • 2021-08-20
  • 2022-12-23
相关资源
相似解决方案