arduino 一次性读取serial_使用python指令控制Arduino控件

当我们实现两个代码之间的通信时,使用串口通信是非常方便的,比如使用python指令控制Arduino控件的开关。这里有两个重要的环节:串口通信和上位机控制。

一、串口通信

串行接口简称串口,也称串行通信接口或串行通讯接口(通常指COM接口),是采用串行通信方式的扩展接口。串行接口 (Serial Interface) 是指数据一位一位地顺序传送,其特点是通信线路简单,只要一对传输线就可以实现双向通信(可以直接利用电话线作为传输线),从而大大降低了成本,特别适用于远距离通信,但传送速度较慢。

打开我们的Arduino编辑器,就可以看到板子所在端口的选项。

v2-b4a8c7e56c45f3bee75cfcdbcc845eb4_b.jpg

此处写的COM3就是指的是Arduino开发板所在的串口,如果需要通过Arudino来上传代码到开发板上所需要使用的就是这个串口来与Arduino开发板进行通信。

我们都知道Arduino有一个串口监视器(图右上角)和一个Serial.print()函数,如果我们使用Serial.print()函数的话,传过来的数据就能够成功的在串口监视器上显示出来。

v2-b9470eab1aaa43852b11719b2dcae439_b.jpg

Arduino主要起到的仅仅只有一个编译的作用,这个串口监视只是它的副业。

既然传过来的数据能够用Arduino来看,那么其他的软件如果能够打开的话效果就会非常好。

1、设置串口

这里我们使用python打开这个串口以实现串口通信,编译器使用pyCharm。

首先,安装pyserial:pip install pyserial。pyserial的作用在于提供一个从串口读取信息的接口。

v2-a3d8a57e4b3b41cca55b2fe5cb76c558_b.jpg

现在我们已经拥有了串口通信的基础,导入依赖库(注意使用import serial而不是import pyserial)。

这里介绍一个基本函数serial.Serial(a,b,c)来设置一个串口,a为一个字符串代表串口的位置(如COM3),b为一个数字代表波特率,(值得注意的是Arduino中Serial.begin()所设定的东西一定要求与你读到的波特率相同),c为超时的时间,单位为s。

v2-e3ae250dcbb0f7c36aa61fec82c763ac_b.jpg

这里打开一个名字叫COM3的串口,以9600波特率,0.5秒作为超时。

2、读取信息

这里使用readline函数以读取一列数据。

v2-c4d86e69d0815d0398574d705d27e871_b.jpg

至此,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 
知乎视频​www.zhihu.com
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值