Arduino 第五章:串口输入和输出

Arduino 第五章:串口输入和输出

引言

在 Arduino 的学习进程中,我们已经掌握了数字输出等基础操作。而串口通信,作为 Arduino 与外部设备进行数据交互的重要手段,是迈向更复杂项目的关键一步。串口通信就像是 Arduino 的“嘴巴”和“耳朵”,让它能够与计算机、传感器、其他微控制器等设备进行信息的传递和交流。在这第五章中,我们将深入探讨 Arduino 的串口输入和输出功能。

串口通信基础概念

什么是串口通信

串口通信(Serial Communication)是一种在一条通信线路上逐位传输数据的通信方式。它具有简单、可靠、成本低等优点,广泛应用于各种电子设备之间的数据传输。在 Arduino 中,串口通信主要通过 TX(发送)和 RX(接收)引脚来实现。

波特率

波特率(Baud Rate)是串口通信中的一个重要概念,它表示每秒传输的比特数。常见的波特率有 9600、115200 等。在进行串口通信时,通信双方(如 Arduino 和计算机)必须设置相同的波特率,否则数据传输将出现错误。

Arduino 串口输出

硬件连接

对于 Arduino Uno 等常见开发板,只需要通过 USB 线将 Arduino 连接到计算机即可。USB 线不仅为 Arduino 提供电源,还实现了 Arduino 与计算机之间的串口通信。

代码实现

以下是一个简单的 Arduino 串口输出示例代码:

void setup() {
  // 初始化串口通信,设置波特率为 9600
  Serial.begin(9600); 
}

void loop() {
  // 向串口发送字符串
  Serial.println("Hello, Serial Communication!"); 
  // 延迟 1 秒
  delay(1000); 
}

代码解释

  • setup() 函数:在程序启动时,Serial.begin(9600) 用于初始化串口通信,并将波特率设置为 9600。这一步是使用串口输出的必要操作。
  • loop() 函数Serial.println("Hello, Serial Communication!") 用于向串口发送字符串,并在末尾添加换行符。delay(1000) 使程序暂停 1 秒,这样每隔 1 秒就会发送一次字符串。

查看串口输出

将上述代码上传到 Arduino 后,打开 Arduino IDE 中的串口监视器。在串口监视器中,将波特率设置为与代码中相同的 9600,就可以看到 Arduino 不断发送的字符串信息。
在这里插入图片描述

Arduino 串口输入

硬件连接

同样,使用 USB 线将 Arduino 连接到计算机即可。

代码实现

以下是一个简单的 Arduino 串口输入示例代码:

void setup() {
  // 初始化串口通信,设置波特率为 9600
  Serial.begin(9600); 
}

void loop() {
  // 检查串口是否有数据输入
  if (Serial.available() > 0) {
    // 读取串口输入的一个字符
    char incomingChar = Serial.read();
    // 将读取的字符回显到串口监视器
    Serial.print("You sent: ");
    Serial.println(incomingChar);
  }
}

代码解释

  • setup() 函数:与串口输出示例一样,使用 Serial.begin(9600) 初始化串口通信。
  • loop() 函数Serial.available() 用于检查串口缓冲区中是否有可用的数据。如果有数据(返回值大于 0),则使用 Serial.read() 读取一个字符,并将其存储在 incomingChar 变量中。然后使用 Serial.print()Serial.println() 将读取的字符回显到串口监视器。

测试串口输入

在这里插入图片描述

将上述代码上传到 Arduino 后,打开串口监视器,将波特率设置为 9600。在串口监视器的输入框中输入字符,按下回车键,就可以看到 Arduino 将输入的字符回显出来。

综合应用:根据串口输入控制 LED 灯

硬件连接

将一个 LED 灯的负极连接到 Arduino 的 GND 引脚,正极通过一个 220Ω 电阻连接到 Arduino 的数字引脚 5。同时,使用 USB 线将 Arduino 连接到计算机以实现串口通信。当串口监听输入1的时候灯亮、输入0灯灭;usb线不要拔下;
在这里插入图片描述

代码实现

const int ledPin = 5;

void setup() {
  // 初始化串口通信,设置波特率为 9600
  Serial.begin(9600); 
  // 将 LED 引脚设置为输出模式
  pinMode(ledPin, OUTPUT); 
}

void loop() {
  // 检查串口是否有数据输入
  if (Serial.available() > 0) {
    // 读取串口输入的一个字符
    char incomingChar = Serial.read();
    if (incomingChar == '1') {
      // 如果输入为 '1',点亮 LED 灯
      digitalWrite(ledPin, HIGH);
      Serial.println("LED is ON");
    } else if (incomingChar == '0') {
      // 如果输入为 '0',熄灭 LED 灯
      digitalWrite(ledPin, LOW);
      Serial.println("LED is OFF");
    }
  }
}

代码解释

  • 变量定义const int ledPin = 13; 定义了 LED 灯连接的引脚为 13。
  • setup() 函数:初始化串口通信,设置波特率为 9600,并将 LED 引脚设置为输出模式。
  • loop() 函数:检查串口是否有数据输入。如果输入为 ‘1’,则点亮 LED 灯并发送提示信息到串口监视器;如果输入为 ‘0’,则熄灭 LED 灯并发送提示信息。
    在这里插入图片描述

总结

通过本章的学习,我们了解了 Arduino 串口通信的基本概念,掌握了串口输入和输出的实现方法,并且通过综合应用示例学会了根据串口输入控制外部设备。串口通信为我们拓展 Arduino 项目提供了强大的支持,我们可以利用它与各种外部设备进行数据交互,实现更复杂的功能。在后续的学习中,我们可以基于串口通信进一步探索更多有趣的项目。

04-16 879
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值