Arduino入门2——串口驱动函数及用法
- IO
- 串口
上期,我们简单的认识了一下Arduino,浅浅的入了个门,这一期我们介绍以下Arduino串口常用的函数及用法
IO
常用串口库函数如下:
函数名 | 用法及解析 |
---|---|
pinMode() | 用于IO口初始化 |
digitalWrite() | 对IO口写入高低电平 |
digitalRead() | 读取IO口的高低电平 |
analogReference() | 配置AD采集的参考电压 |
analogWrite() | 对应IO口实现AD转换,精度可达10位 |
analogRead() | 对应IO口实现DA转换,精度为8位 |
下面是对应的一些用法:
-
pinMode()
-
digitalWrite()
-
digitalRead()
-
analogReference()
-
analogWrite()
-
analogRead()
串口
常用串口库函数如下:
函数名 | 用法及解析 |
---|---|
Serial.begin(9600) | 用于串口初始化,参数为波特率 |
Serial.print(val,fromat) | 串口输出函数,val为输出的内容,fromat为输出格式,可以省略,省略时默认为十进制 |
Serial.println(val,fromat) | 串口输出函数,相对于Serial.print的区别是自带换行 |
Serial.write(val) | 串口输出函数,发送单个字节或字符串 |
Serial.available() | 用于检测串口是否接收到数据,返回值为读取数据的长度 |
Serial.read() | 串口读取函数,每次读取一个字节并返回,当串口没有接收到数据时,返回-1,读取完数据后,下次调用会读取下个字节 |
Serial.parselnt() | 串口解析函数,用来读取接收到的数据中的整数,在读取到整数后读取到字符会停止,读取后缓冲区内的内容会被清除。比如读取的内容为123adc456,则需要读取两次,第一次读取到123.第二次读取adc456,但由于adc为字符,所有只读取456。 |
Serial.parseFloat() | 也是串口解析函数,用来读取小数 |
下面是对应的一些用法:
- 示例1:
void setup() {// put your setup code here, to run once:Serial.begin(9600); //串口初始化
}void loop() {// put your main code here, to run repeatedly:Serial.print("Hello"); //发送字符串Serial.print('A'); //发送字符Serial.println(25); //默认以10进制发送数字25Serial.println(25,DEC); //十进制发送数字25 -》 25Serial.println(25,BIN); //二进制发送数字25 -》 11001Serial.println(25,OCT); //八进制发送数字25 -》 31Serial.println(25,HEX); //八进制发送数字25 -》 19Serial.print(1.2345); //发送1.23,默认保留2位小数,四舍五入delay(50000);
}
- 结果1:
- 示例2:
void setup() {// put your setup code here, to run once:Serial.begin(9600); //串口初始化
}void loop() {// put your main code here, to run repeatedly:for(int i = 0 ;i<Serial.available();i++) //判断是否介绍到数据,{Serial.write(Serial.read()); //依次打印介绍的数据Serial.println(); //换行delay(500); // 延时,让显示更直观}}
- 结果2:
- 示例3:
void setup() {// put your setup code here, to run once:Serial.begin(9600); //串口初始化
}void loop() {// put your main code here, to run repeatedly:for(int i = 0 ;i<Serial.available();i++) //判断是否介绍到数据,{Serial.print(Serial.parseInt()); //依次打印接收的整数Serial.println(); //换行delay(500); // 延时,让显示更直观}
- 结果3:
- 建立开发板与电脑串口连接,像电脑发送姓名、年龄、身高等信息
//1. 建立开发板与电脑串口连接,像电脑发送姓名、年龄、身高等信息
void setup() {// put your setup code here, to run once:Serial.begin(9600);
}void loop() {// put your main code here, to run repeatedly:Serial.write("naem: 不想写代码的我");Serial.println();Serial.write("age: 18");Serial.println();Serial.write("height: 180");Serial.println();delay(1000);
}
- 实现通过串口监视器给开发板发送信息,在把接收的信息发送回去
//实现通过串口监视器给开发板发送信息,在把接收的信息发送回去
void setup() {// put your setup code here, to run once:Serial.begin(9600);
}void loop() {// put your main code here, to run repeatedly:for(int i =0; i<Serial.available();i++){Serial.write(Serial.read());Serial.println();delay(500);}}
- 实现加法计算器
//实现加法计算器,
int Add(int a,int b)
{Serial.print(a);Serial.print('+');Serial.print(b);Serial.print('=');Serial.println(a+b);return a+b;
}
void setup() {// put your setup code here, to run once:Serial.begin(9600);
}void loop() {// put your main code here, to run repeatedly:if(Serial.available()){Add(Serial.parseInt(),Serial.parseInt());}```