Arduino-Python3命令API
这个api是从最初的python-arduino-command-api派生而来的,以添加对python 3的支持。
Arduino-Python3命令API是用于
使用连接的计算机与Arduino微控制器板通信
标准串行IO,通过物理线路
或者无线的。它是使用自定义协议编写的,类似于firmata
这允许用户使用python代码为arduino快速创建程序原型,或者
简单的读取/控制/故障排除/实验
硬件连接到Arduino板而无需重新编译草图并将其重新加载到板本身。
Arduino-Python3命令API中的方法名设计为
尽可能与Arduino编程语言对应
简单使用示例(LED闪烁)#!/usr/bin/env python"""Blinks an LED on digital pin 13in 1 second intervals"""fromArduinoimportArduinoimporttimeboard=Arduino()# plugged in via USB, serial com at rate 115200board.pinMode(13,"OUTPUT")whileTrue:board.digitalWrite(13,"LOW")time.sleep(1)board.digitalWrite(13,"HIGH")time.sleep(1)
要求:python3.7在windows和macos上测试。
pyserial2.6或更高版本
任何具有至少14KB闪存的Arduino兼容微控制器
安装:
从命令行运行pip install arduino-python3或从源目录运行python setup.py build install以安装此库。
设置:验证Arduino板是否以
setup()prototype.ino中的函数(第407行)。如有必要,请在那里更改。
使用Arduino IDE将prototype.ino草图加载到Arduino板上。
在Arduino板和计算机之间建立某种串行I/O通信(通过物理USB电缆,
蓝牙、XBEE等+相关驱动程序)
将Arduino中的导入Arduino添加到Python脚本中以与Arduino通信
有关示例的集合,请参见examples.py。此文件包含复制
许多Arduino演示草图的功能。
测试:
tests目录包含库的一些基本测试。对于每个版本来说,广泛的代码覆盖率都有点难以预期,因为一个积极的测试实际上涉及到
连接并发出命令到实时Arduino,托管任何硬件
测试特定功能所必需的。但基本沟通测试的核心
在合并到master分支之前,至少应在此处维护并使用它。
安装后,可以从源目录运行交互式测试:$ python tests/test_main.py
可以使用以下命令从源目录运行自动测试:$ python tests/test_arduino.py
课程arduino(波特)-设置与当前连接并通电的通信
Arduino.board=Arduino("115200")#Example
将自动检测连接的Arduino的设备名/COM端口。
如果有多个Arduino板连接,
所需的COM端口也可以作为可选参数传递:board=Arduino("115200",port="COM3")#Windows exampleboard=Arduino("115200",port="/dev/tty.usbmodemfa141")#OSX example
读取Arduino的超时也可以指定为可选
参数:board=Arduino("115200",timeout=2)#Serial reading functions will#wait for no more than 2 seconds
方法
数字I/Oarduino.digitalwrite(管脚号,状态)打开/关闭数字管脚
arduino.digital read(管脚号)数字管脚的读取状态#Digital read / write exampleboard.digitalWrite(13,"HIGH")#Set digital pin 13 voltagestate_1=board.digitalRead(13)#Will return integer 1board.digitalWrite(13,"LOW")#Set digital pin 13 voltagestate_2=board.digitalRead(13)#Will return integer 0arduino.pin mode(pin_编号,i o_模式)设置pin i/o模式
arduino.pulsein(管脚号,状态)测量脉冲
arduino.pulsein_set(管脚号,状态)通过预处理测量脉冲>#Digital mode / pulse exampleboard.pinMode(7,"INPUT")#Set digital pin 7 mode to INPUTduration=board.pulseIn(7,"HIGH")#Return pulse width measurement on pin 7
模拟I/Oarduino.AnalogRead(针数)返回模拟值
arduino.AnalogWrite(管脚号,值)设置模拟值#!/usr/bin/env python"""Blinks an LED on digital pin 13in 1 second intervals"""fromArduinoimportArduinoimporttimeboard=Arduino()# plugged in via USB, serial com at rate 115200board.pinMode(13,"OUTPUT")whileTrue:board.digitalWrite(13,"LOW")time.sleep(1)board.digitalWrite(13,"HIGH")time.sleep(1)0
移位寄存器arduino.shift in(数据针、时钟针、位序)移入一个字节并返回它
arduino.shift out(数据管脚、时钟管脚、位序、值)将给定字节移出
位顺序应为"msbFirst"或"lsbFirst"
伺服库功能
最多可支持8个伺服系统。arduino.servos.attach(pin,min=544,max=2400)创建伺服实例。一次只能使用8个伺服系统。
arduino.servos.read(pin)返回连接到指定pin的伺服角度
arduino.servos.write(针,角度)将针上的附加伺服移动到指定角度
arduino.servos.write microseconds(pin,us)在指定的pin上以微秒为单位向伺服写入值
arduino.servos.detach(销)分离指定销上的伺服#!/usr/bin/env python"""Blinks an LED on digital pin 13in 1 second intervals"""fromArduinoimportArduinoimporttimeboard=Arduino()# plugged in via USB, serial com at rate 115200board.pinMode(13,"OUTPUT")whileTrue:board.digitalWrite(13,"LOW")time.sleep(1)board.digitalWrite(13,"HIGH")time.sleep(1)1
软件串行功能arduino.softwarserial.begin(ss_rxpin,ss_txpin,ss_device_baud)初始化软件串行设备
指定的管脚。
一次只能使用一个软件串行设备。现有的软件串行实例将
在python和arduino板上调用此方法将被覆盖。
arduino.softwareserial.write(data)使用arduino"write"功能将数据发送到现有软件
串行连接。
arduino.softwarserial.read()从现有软件串行连接返回一个字节#!/usr/bin/env python"""Blinks an LED on digital pin 13in 1 second intervals"""fromArduinoimportArduinoimporttimeboard=Arduino()# plugged in via USB, serial com at rate 115200board.pinMode(13,"OUTPUT")whileTrue:board.digitalWrite(13,"LOW")time.sleep(1)board.digitalWrite(13,"HIGH")time.sleep(1)2
EEPROMarduino.eeprom.read(address)从eeprom读取一个字节
arduino.eeprom.write(地址、值)向eeprom写入一个字节
arduino.eeprom.size()返回EEPROM的大小#!/usr/bin/env python"""Blinks an LED on digital pin 13in 1 second intervals"""fromArduinoimportArduinoimporttimeboard=Arduino()# plugged in via USB, serial com at rate 115200board.pinMode(13,"OUTPUT")whileTrue:board.digitalWrite(13,"LOW")time.sleep(1)board.digitalWrite(13,"HIGH")time.sleep(1)3
其他arduino.close()关闭到arduino的串行连接。
待办事项列表:展开软件串行功能(print()和println())
添加简单的重置功能,将所有管脚值归零
增加I2C/TWI功能支持(arduinowire.h命令)
包含一个向导,该向导使用选定的串行波特率和Arduino功能支持生成"prototype.ino"
(帮助减少内存需求)。
对Arduino Mega的多串行支持(serial1.read()等)
欢迎加入QQ群-->: 979659372
推荐PyPI第三方库