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

Handling Serial Input on Arduino with Interrupts on a specific character?

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

我想做的是允许用户在自动化仍然 运行 时向蓝牙串行端口(连接到硬件串行引脚或软件串行引脚)写入一系列命令,并且当他们send new-line,将一系列命令发送到机器人的其他部分。

我使用过其他微控制器并在引脚拉高或拉低时编写了一个简单的中断,但我不确定如何处理字符中断。我认为中断是执行此操作的最佳方式,但我对 Arduino 没有太多经验,所以有很多我不知道的功能。

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

我还想补充一点,因为这是一个教育项目,我想完全使用 Arduino,一些朋友和同事推荐了替代芯片或 MCU,它们具有这些功能,但我想对新手保持友好程序员和工程师。

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

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

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

您所描述的需要 中断,但您可以使用我编写(修改)的扩展版本的 HardwareSerial,称为 NeoHWSerial。它调用您从中断服务例程(请参阅文档)提供的函数。