【问题标题】:Serial port not sending data串口不发送数据
【发布时间】:2014-05-06 07:53:33
【问题描述】:

昨天,我开始了一些串口通信。今天,我试图打开我昨天使用的完全相同的草图。它可以工作,但是几分钟后我再次上传它时,它根本不起作用。

代码如下:

#include "Blink_main.h"

int pin = 1;

void pulsePin(int abc, int length){
    digitalWrite(abc, true);
    delay(length);
    digitalWrite(abc, false);
}

void setup() {
    pinMode(pin, OUTPUT);
    Serial.begin(9600);
    Serial.println("Hi serial!");
    pulsePin(pin, 1000);
}

void loop() {
    if(Serial.available() > 0){
            Serial.println(Serial.read());
            pulsePin(pin, 1000);
    }
}

打开应用程序时,我没有看到“Hi serial!”消息,发送内容时,我没有收到消息,也没有看到 LED 闪烁。为什么会这样?

【问题讨论】:

  • Serial.available 会返回 0 吗?如果您的第一个 if 为假,请尝试使用不同的引脚。
  • 这个问题似乎是题外话,因为它可能是一个电子硬件问题。

标签: c serial-port arduino embedded


【解决方案1】:

您正在使用引脚 1 闪烁 LED,将 LED 移动到另一个引脚,因为它用作串行 TX

数字引脚 0-1/串行输入/输出 - TX/RX - 如果您还使用串行通信(例如 Serial.begin),这些引脚不能用于数字 I/O(digitalRead 和 digitalWrite)。

【讨论】:

    【解决方案2】:

    看起来问题出在 Arduino 板上。

    首先,尝试上传一个串行示例草图。 如果还是不行,请尝试重新安装驱动程序或更改使用的 COM 端口。

    如果问题仍然存在,则可能是 ATMEGA8U2 或 ATMEGA16U2 死了。您可以直接在引脚 0 和 1 上使用外部 USB 转 UART 进行测试

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-19
      • 2017-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多