程序员我爱编程

Arduino 串行通讯

2018-05-28  本文已影响0人  import_hello

本文翻译自 Arduino 串行通讯的官方文档。

本文的最新版本位于:https://github.com/iwhales/arduino_notes
转载请注明出处:https://www.jianshu.com/u/5e6f798c903a

1. 简介

Serial Communication URL

Arduino 板卡使用 Serial 与电脑或其它设备进行通讯。所有 Arduino 板卡至少拥有一个串行端口(也称URAT 或USART):Serial。Serial 工作于数字引脚 0 (RX) 和 1 (TX) ,同时也通过 USB 与电脑通讯。因此,如果需要使用 Serial 功能,便不能同时将引脚 0 和 1 用作数字输入和输出。 我们可以通过 Arduino IDE 内置的串口监视器与 Arduino 板卡进行通讯。在 IDE 的工具栏中点击串口监视器的图标,并将波特率设置为 begin() 的实参值,便可与 Arduino 进行串口通讯。

位于 TX/RX 引脚上的串行通讯采用 TTL 电平(根据电路板的设计方式,可能采用 5V 或 3.3V)。请勿将 TX/RX 引脚直接连接到 RS232 串行端口;RS232 的工作电压是 +/- 12V,可能会对 Arduino 造成损坏。

Arduino Mega 拥有三个额外的串行端口: Serial1 位于 19 (RX) 和 18 (TX) 引脚;Serial2 位于 17 (RX) 和 16 (TX) 引脚;Serial3 位于 15 (RX) 和 14 (TX) 引脚。如果想使用这些引脚与 PC 进行通讯,则需要自行提供 USB-to-serial 适配器 —— 因为这些额外的串行端口并没有被连接到 Mega 自带的 USB-to-serial 适配器上。如果想要通过这些额外的串行端口与外部 TTL 串行设备进行通讯,那么需要将外部设备的 TX 和 RX 引脚分别连接至 Mega 的 RX 和 TX 引脚,同时将 Mega 的地线与外部设备的地线直接相连。

Arduino Due 拥有三个额外的 3.3V TTL 串行端口:Serial1 位于 19 (RX) 和 18 (TX) 引脚;Serial2 位于 17 (RX) 和 16 (TX) 引脚;Serial3 位于 15 (RX) 和 14 (TX) 引脚。引脚 0 和 1 同样也被连接到了 ATmega16U2 USB-to-TTL 串口芯片的对应引脚,用于连接 USB 调试端口。此外,SAM3X 芯片还拥有一个原生 USB-serial 端口——SerialUSB' 。

Arduino Leonardo 在引脚 0 (RX) 和 1 (TX) 上使用 Serial1 进行通讯,Serial1 也是 5V TTL。Serial 用作 USB CDC 通讯。欲了解更多信息,请参阅 Leonardo 的相关页面。

2. 函数

if (Serial)

Serial.available()

Serial.availableForWrite()

Serial.begin()

Serial.end()

Serial.find()

Serial.findUntil()

Serial.flush()

Serial.parseFloat()

Serial.parseInt()

Serial.peek()

Serial.print()

Serial.println()

Serial.read()

Serial.readBytes()

Serial.readBytesUntil()

Serial.setTimeout()

Serial.write()

void setup(){
  Serial.begin(9600);
}

void loop(){
  Serial.write(45); // send a byte with the value 45

   int bytesSent = Serial.write(“hello”); //send the string “hello” and return the length of the string.
}

Description

Writes binary data to the serial port. This data is sent as a byte or series系列 of bytes; to send the characters representing表示的 the digits of a number use the print() function instead.

Serial.serialEvent()

串口数据可用

上一篇下一篇

猜你喜欢

热点阅读