使用特定字符的中断处理Arduino上的串行输入?

时间:2015-11-22 01:26:49

标签: arduino serial-port interrupt

我正在开展一个教育机器人项目,该项目应该允许通过蓝牙控制机器人。机器人是一个现成的机器人,具有Arduino正常自动驾驶的串行接口。

我尝试做的是允许用户在蓝牙串口(连接到硬件串行引脚或软件串行引脚)时写入一系列命令,同时自动化仍然在运行以及当他们发送新线路时,系列命令被发送到机器人的其他部分。

当引脚被拉高或拉低时,我已经使用了其他微控制器并编写了一个简单的中断,但我不确定如何处理字符上的中断。我认为中断是最好的方法,但我对Arduino没有多少经验,所以很多功能我都不知道。

TL; DR:如果我希望arduino在某个字符到达串口时执行代码,我应该使用中断方法吗?

我还想补充一点,因为这是一个教育项目,我想完全留在Arduino,几位朋友和同事已经推荐了具有该功能的替代芯片或MCU,但我希望对新程序员和工程师。

1 个答案:

答案 0 :(得分:1)

内置的HardwareSerial不支持中断驱动的字符处理。使用典型的轮询方法可以获得许多草图:

while (Serial.available()) {
  char c = Serial.read();

  // code that watches for certain characters
  .
  .
  .
}

您所描述的需要中断的内容并没有任何内容,但您可以使用我编写(修改过)的称为NeoHWSerial的扩展版本的HardwareSerial。它调用您从中断服务程序提供的函数(参见文档)。