如何使用FirmATA操作硬件

本文主要介绍"怎么使用FirmATA操作硬件",希望能够解决您遇到有关问题,下面我们一起来看这篇 "怎么使用FirmATA操作硬件" 文章。

 Firmata for Python

现有两个Python Firmata库:

pyduino:http://code.google.com/p/pyduino/(依赖于pySerial,实现v2.0)

pyFirmata:https://github.com/tino/pyFirmata(依赖pySerial,实现v2.1,支持Python3)

目测了两者代码。pyduino的库pyduino.py只有10KB,最近更新时间为2009年(可以作为重要的参考)。更像MCU开发者编写的。

而pyFirmata更加完整一些,最近更新时间为2013年,似乎使用了一些高级Python技巧。比如自动测试一类的。并可以定制BOARDS参数。更加适合我们测试使用。因为LPC812MiniKit可以支持多个Profile。

两者都定义了Arduino类,不过我们可以参考pyFirmata实现GAPmini类。虽然Firmata的确是为Arduino定制的。但是如果拓展到其他平台的话,应该起一个独立性强一些的名称。

 pyFirmata的使用

 在boards.py和__init__.py中增加LPC812Min/LPC812Max/LPC812MixMin几种电路板配置(Profile)。

 感谢pyFirmata的作者Tino(荷兰籍)提供了几种测试程序。

最基本的测试程序LPC812_Firmata_Blink.py:

from pyfirmata import LPC812Min, util
from pyfirmata import BOARDS
import time

print '>>>> 5 second delay for firmata initial'
print '>>>> Press reset to go'
board = LPC812Min('COM27', baudrate=115200)
print '>>>>',str(board)

board.sp.setDTR(1) # set LOWtime.sleep(0.1)
board.sp.setDTR(0) # set HIGH, LOW to High to reset

layout = BOARDS['lpc812_min']
print ">>>> Board layout"
print str(layout)

board.setup_layout(layout)
(major,minor) = board.get_firmata_version()
print ">>>> Version: %d.%d"%(major,minor)
print ">>>> Firmware name: %s"%(board.firmware)

pin17 = board.get_pin('d:17:o')
while True:
   try:
          pin17.write(1)
          board.pass_time(2)
          pin17.write(0)
          board.pass_time(2)
    except KeyboardInterrupt:
          print ">>>> User interrupt."
board.exit()
print 'Exit it.'

目前已经测试通过基本的Firmata通讯。

 【更新】

已经完成基本的Digital In(可用于键盘处理)和Digital Out(用于LED闪烁)。PWM输出(如LED亮度和颜色变化)和模拟输入(如ADC采样)需要再更新固件支持。

关于 "怎么使用FirmATA操作硬件" 就介绍到这。希望大家多多支持编程宝库

OpenWrt怎么编译:本文主要介绍"OpenWrt如何编译",希望能够解决您遇到有关问题,下面我们一起来看这篇 "OpenWrt如何编译" 文章。OpenWrt编译记录OpenWrt作为最为流行的无线路由器系统,其开放,安全,高效的特点广 ...