当我们实现两个代码之间的通信时,使用串口通信是非常方便的,比如使用python指令控制Arduino控件的开关。这里有两个重要的环节:串口通信和上位机控制。
一、串口通信
串行接口简称串口,也称串行通信接口或串行通讯接口(通常指COM接口),是采用串行通信方式的扩展接口。串行接口 (Serial Interface) 是指数据一位一位地顺序传送,其特点是通信线路简单,只要一对传输线就可以实现双向通信(可以直接利用电话线作为传输线),从而大大降低了成本,特别适用于远距离通信,但传送速度较慢。
打开我们的Arduino编辑器,就可以看到板子所在端口的选项。
此处写的COM3就是指的是Arduino开发板所在的串口,如果需要通过Arudino来上传代码到开发板上所需要使用的就是这个串口来与Arduino开发板进行通信。
我们都知道Arduino有一个串口监视器(图右上角)和一个Serial.print()函数,如果我们使用Serial.print()函数的话,传过来的数据就能够成功的在串口监视器上显示出来。
Arduino主要起到的仅仅只有一个编译的作用,这个串口监视只是它的副业。
既然传过来的数据能够用Arduino来看,那么其他的软件如果能够打开的话效果就会非常好。
1、设置串口
这里我们使用python打开这个串口以实现串口通信,编译器使用pyCharm。
首先,安装pyserial:pip install pyserial。pyserial的作用在于提供一个从串口读取信息的接口。
现在我们已经拥有了串口通信的基础,导入依赖库(注意使用import serial而不是import pyserial)。
这里介绍一个基本函数serial.Serial(a,b,c)来设置一个串口,a为一个字符串代表串口的位置(如COM3),b为一个数字代表波特率,(值得注意的是Arduino中Serial.begin()所设定的东西一定要求与你读到的波特率相同),c为超时的时间,单位为s。
这里打开一个名字叫COM3的串口,以9600波特率,0.5秒作为超时。
2、读取信息
这里使用readline函数以读取一列数据。
至此,Arduino端向python端传输数据已经完成。
二、上位机控制
由于Arduino的控制很有可能需要其他代码传送运行结果给它,所以上位机对于Arduino的控制也是十分有意义的。利用上位机的控制,我们能够实现代码直接控制开关的结果。例如输入一个数然后开关打开灯亮。
1、Arduino函数介绍
此处要介绍三个新的函数Serial.read() Serial.available() pinMode()
1.Serial.read()
这个函数的作用在于从COM接口读取一个字节的数据
2.Serial.available()
这个函数的作用在于查看COM接口是否有数据读入
3.pinMode((串口号),OUTPUT) 将一个端口设置为输出口
二、接口实现
Arduino端口
我们需要实现以下功能:
1.灯原来亮
2.按下0后灯灭
3.按下1后灯亮
首先我们需要向Arduino芯片内写入代码,但有一点需要注意,如果要将二极管LED直接接到接口上的话只能接13号接口,因为13号接口自带正好适合LED的电阻。
void
python端口
此处python接口采用serial中的write函数来向串口中写入数据,注意一下输入的一定要是ASCII字符,否则Arduino接口无法读出。
import