Generic API to control boards with programmable IO pins.
Pingo provides a uniform API to program devices like the Raspberry Pi, BeagleBone Black, pcDuino etc. just like the Python DBAPI provides an uniform API for database programming in Python.
The API is object-oriented but easy to use: a board is an instance of a Board subclass. Every board has a dictionary called pins which lists all GPIO pins on the board. Each pin is an instance of a Pin subclass with attributes that you can inspect to learn about its capabilities.
The name Pingo is a tribute to Garoa Hacker Clube, where it started (Portuguese skills needed to understand the link). To our English-speaking friends we like to say that it means “pin, go!” – the main purpose of this package.
Blink.py on an UDOO board:
import pingo from time import sleep board = pingo.udoo.Udoo() led_pin = board.pins led_pin.set_mode(pingo.OUTPUT) while True: led_pin.high() sleep(1) led_pin.low() sleep(1)
To do the same on a Arduino Yún, just change the line were the board is instantiated, and the pin numbers as needed:
import pingo from time import sleep board = pingo.arduino.yun.YunBridge() # <--- led_pin = board.pins led_pin.set_mode(pingo.OUTPUT) while True: led_pin.high() sleep(1) led_pin.low() sleep(1)
In the examples above, pingo.udoo pingo.arduino.yun are drivers, and the respective Udoo and YunBridge are classes implementing the pingo.board.Board interface.
The following table lists the drivers currently planned or under development.
|Arduino Firmata||remote||arduino.firmata||requires firmata library on any Arduino board|
|Arduino Yún||on-board||arduino.yun||requires Bridge sketch on the Arduino Yún|
|Fantasma||mock||ghost||not a real board, just a mock for testing clients|