Arduino
的串行通信
刚开始看到引脚读写函数的时候觉得很鸡肋,还不如以前端口直接赋值简单。但是继续往下看
Arduino
提
供的通讯函数就发现真的是要比以前方便多了
...
上次把键盘做好,现在要把键盘按下的信息通过串口发给
PC
,如果以前用单片机自己来写串口程序做,对
有基础的人来说其实也不难
...
但是如果用
Arduino
来做,会发现简直是傻瓜操作,合适初学者,也合适有
基础的懒人
...
先了解一下相关的一些串口通信函数:
Serial.begin(int speed)
初始化串口比特率函数,直接输入相应的数值就把串口通信的寄存器设置为对应的比特率了,够傻瓜吧
..
当然,可以使用的值也不是随便设的,一般
4800 9600 14400……
等等
Serial.available()
串口输入数据读取前的判断函数,返回值为
1
串口
buff
中有数据
0
串口
buff
中无数据或者数据已经读取
出来过。经常
if(Serial.available())
来询问监视串口。
Serial.read()
从串口
buff
中读取数据进来
..
比如
infomaition = Serial.read();
则
buff
中的数据会赋值给
infomaition
变量
Serial.print(data)
把
data
从串口把数据发送出去
...
注意的是使用找个函数的时候可以有几种发送方法:
1
Serial.print(data)
这样的话
Arduino
会把
data
发送成字符串
ASCII
出去。如
int data = 79 ; Serial.print(data) ;
那串口发送出
去的就是
string"79"
的
ASCII..
2
Serial.print(data,DEC)
这样发送的是
data
的
10
进制字符串。如
int
data
=
79;
Serial.print(data,DEC);
那串口发出去的就是
string"79"
3
Serial.print(data,HEX)
这样发送的是
data
的
16
进制字符串。如
int
data
=
79;
Serial.print(data,HEX);
那串口发出去的就是
string"4F"
4
Serial.print(data,OCT)
这样发送的是
data
的
8
进制字符串。如
int
data
=
79;
Serial.print(data,OCT);
那串口发出去的就是
string"117"
5
Serial.print(data,BIN)
这样发送的是
data
的二进制字符串。如
int
data
=
79;
Serial.print(data,BIN);
那串口发出去的就是
string"1001111"
6
Serial.print(data,BYTE)
这样是把
data
作为
ASCII
码对应的字符后发送。如
int data = 79; Serial.print(data,BYTE);
那串口发出去
的就是
string"O"
Serial.println(data)
功能类似上面的发送函数,也是把数据发送出去,不同的是发送的数据后面带上换行符号
有了上面的这些函数,就可以轻松的和
PC
进行串口通讯了。现在做个实验:先根据键盘按下的按键向
PC
发送对应的键值,然后
PC
接受到键值做相应的判断处理后将结果返回给
Arduino
执行。
因为要检查出按键的具体键值,上次用来实验输入输出的键盘代码是不能用了。这次键盘的原理和上次一
样,先行扫描,然后读取
4
条列线,如果有按键按下则把扫到的键值从串口发送出去。
先定义变量:
int KeyOPin =2;
int KeyIPin =6;
int LedPin = 13;