【问题标题】:Handling Serial Input on Arduino with Interrupts on a specific character?使用特定字符的中断处理 Arduino 上的串行输入?
【发布时间】:2015-11-22 01:26:49
【问题描述】:

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

我正在尝试做的是允许用户在自动化仍在运行并且发送换行符时向蓝牙串行端口(连接到硬件串行引脚或软件串行引脚)写入一系列命令,一系列命令被发送到机器人的其他部分。

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

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

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

【问题讨论】:

    标签: arduino serial-port interrupt


    【解决方案1】:

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

    while (Serial.available()) {
      char c = Serial.read();
    
      // code that watches for certain characters
      .
      .
      .
    }
    

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

    【讨论】:

    • 你让我的周末积压工作缩短了很多!我一定会使用你的图书馆!
    • 我有没有机会让 NeoHWSerial 库与 SAMD21 一起工作?
    • 请使用github 询问有关存储库的问题或cmets。如果您愿意远程提供帮助,另请参阅 Issue #1
    猜你喜欢
    • 1970-01-01
    • 2013-01-25
    • 1970-01-01
    • 2021-10-11
    • 2013-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-10
    相关资源
    最近更新 更多