功能网站建设/品牌推广方案ppt
一、LattePanda简介LattePanda是市面上首款Win10开发板,可以完美运行Win10操作系统,搭载一颗英特尔赛扬四核处理器,内置蓝牙和WiFi模组,支持USB3.0接口、HDMI视频输出、3.5mm音频接口,100/1000Mbps以太网口,集成一块Arduino Leonardo单片机,方便拓展各种传感器模块。
这里向大家介绍使用Python指令控制LattePanda上Arduino控件的开关。这里有两个重要的环节:串口通信和上位机控制。二、串口通信串行接口简称串口,也称串行通信接口或串行通讯接口(通常指COM接口),是采用串行通信方式的扩展接口。串行接口 (Serial Interface) 是指数据一位一位地顺序传送,其特点是通信线路简单,只要一对传输线就可以实现双向通信(可以直接利用电话线作为传输线),从而大大降低了成本,特别适用于远距离通信,但传送速度较慢。打开LattePanda上的Arduino编辑器,就可以看到开发板所在端口。
此处写的COM6就是指的是Arduino开发板所在的串口,如果需要通过Arudino来上传代码到开发板上所需要使用的就是这个串口来与Arduino开发板进行通信。我们都知道Arduino有一个串口监视器和一个Serial.print()函数,如果我们使用Serial.print()函数的话,传过来的数据就能够成功的在串口监视器上显示出来。设置串口这里我们使用python打开这个串口以实现串口通信。首先,需要安装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秒作为超时。三、上位机控制由于Arduino的控制很有可能需要其他代码传送运行结果给它,所以上位机对于Arduino的控制也是十分有意义的。利用上位机的控制,我们能够实现代码直接控制开关的结果。例如输入一个数然后开关打开灯亮。这里要介绍三个新的函数Serial.read() 、Serial.available()、 pinMode()1.Serial.read()这个函数的作用在于从COM接口读取一个字节的数据2.Serial.available()这个函数的作用在于查看COM接口是否有数据读入3.pinMode((串口号),OUTPUT) 将一个端口设置为输出口四、接口实现Arduino端口我们需要实现以下功能:默认灯原来亮,按下0后灯灭,按下1后灯亮首先我们需要向Arduino芯片内写入代码,这里设置13号端口作为输出端口,初始状态设置为高电平。




void setup() { // put your setup code here, to run once: Serial.begin(9600); pinMode(13,OUTPUT); digitalWrite(13,HIGH);}char var;void loop() { // put your main code here, to run repeatedly: while(Serial.available()>0) { var=Serial.read(); if(var=='0') digitalWrite(13,LOW); if(var=='1') digitalWrite(13,HIGH); }}
python端口这里python接口采用serial中的write函数来向串口中写入数据,注意一下输入的一定要是ASCII字符,否则Arduino接口无法读出。# 使用python指令控制Arduino控件import serial# 打开串口serialPort = "COM6" # 串口baudRate = 9600 # 波特率ser = serial.Serial(serialPort, baudRate, timeout=0.5)print('参数设置:串口=%s,波特率=%d' % (serialPort,baudRate))# 收发数据demo1 = b"0"demo2 = b"1"while 1: c = input('请输入指令:') c = ord(c) if(c == 48): ser.write(demo1) if(c == 49): ser.write(demo2)ser.close()