问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Arduino串口通信入门:输入与输出详解

创作时间:
作者:
@小白创作中心

Arduino串口通信入门:输入与输出详解

引用
CSDN
1.
https://m.blog.csdn.net/wangzhae/article/details/145572861

在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项目提供了强大的支持,我们可以利用它与各种外部设备进行数据交互,实现更复杂的功能。在后续的学习中,我们可以基于串口通信进一步探索更多有趣的项目。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号