文章目录
前言
提示:以下是本篇文章正文内容,下面案例可供参考
一、简介arduino串口通信常用API
提示:串口通信原理见:串口原理
arduino中的串口通信使用的是 Serial 类,我们直接调用类中的接口即可。
串口用于Arduino控制板和一台计算机或其他设备之间的通信。所有的Arduino控制板有至少一个串口(又称作为UART或USART)。它通过0(RX)和1(TX)数字引脚经过串口转换芯片连接计算机USB端口与计算机进行通信。因此,如果你使用这些功能的同时你不能使用引脚0和1作为输入或输出。
1. Serial.begin()
作用:设置串行口波特率。
语法
Serial.begin(speed)
仅适用于Arduino Mega : Serial1.begin(speed) Serial2.begin(speed) Serial3.begin(speed)
参数:speed: 位/秒 (波特) - long
返回值:无
2. Serial.print()
作用:往串口缓冲区发送数据。
语法
Serial.print(val)
Serial.print(val,格式)
参数
val:打印输出的值 - 任何数据类型
格式:指定进制(整数数据类型)或小数位数(浮点类型)
返回:字节 print()将返回写入的字节数,但是否使用(或读出)这个数字是可设定的
3. Serial。println()
作用:往串口缓冲区发送数据,并换行。
语法
Serial.println(val)
Serial.println(val, format)
参数:
val: 打印的内容 - 任何数据类型都可以
format: 指定基数(整数数据类型)或小数位数(浮点类型)
返回值:字节(byte)
println()将返回写入的字节数,但可以选择是否使用它。
4. Serial.read()
作用:读取持续输入的数据
语法
serial.read()
Arduino Mega独有:
serial1.read()
serial2.read()
serial3.read()
参数:无
返回值:传入的串口数据的第一个字节(或-1,如果没有可用的数据)- int
5. Serial.available()
作用:获取从串口读取有效的字节数(字符)。
语法
Serial.available()
仅适用于Arduino Mega :
Serial1.available()
Serial2.available()
Serial3.available()
参数:无
返回值:可读取的字节数
6. if (Serial)
作用:判断串口是否准备好。
语法
对于所有的arduino板:
if (Serial)
Arduino Leonardo 特有:
if (Serial1)
Arduino Mega 特有:
if (Serial1)
if (Serial2)
if (Serial3)
参数:无
返回值:为布尔值。如果指定的串行端口是可用的,则返回true。如果查询Leonardo的USB CDC串行连接之前,它是准备好的,将只返回false。
二、arduino串口通信代码演示
1.arduino与电脑通信
void setup() {
Serial.begin(115200); //设置串口波特率为115200
pinMode(D2,OUTPUT); //初始化D2口,用于测试串口,连接蜂鸣器
digitalWrite(D2,HIGH); //我使用的蜂鸣器为低电平触发,所以初始化为高电平
//说明使用串口时也可以在这里判断一下串口是否准备好,我在此处并没有使用
}
void loop() {
char cmd; //用来接受串口发送过来的数据
// int val;
if(Serial.available() > 0) //判断串口缓冲区是否有数据
{
cmd = Serial.read(); //读取串口缓冲区的数据
//val = strtol(&cmd,NULL,10);
if(cmd == '1') //判断是否为字符1,是则打开蜂鸣器,并向串口缓冲区发送open beep!
{
Serial.println("open beep!");
digitalWrite(D2,LOW);
}
else //若不为字符1,则关闭蜂鸣器,并向串口缓冲区发送close beep!
{
Serial.println("close beep!");
digitalWrite(D2,HIGH);
}
}
}
实验结果:(后期补充)
未完待续…