Mudanças entre as edições de "Pingo"
Linha 5: | Linha 5: | ||
== Descrição == |
== Descrição == |
||
− | No Pingo, cada placa é uma subclasse de |
+ | No Pingo, cada placa é uma subclasse de <code>pingo.Board</code>. Para conhecer os pinos GPIO |
− | disponíveis em um Raspberry Pi, o usuário acessa |
+ | disponíveis em um Raspberry Pi, o usuário acessa <code>RaspberryPi.pins</code>: um |
− | dicionário que associa identificadores a objetos |
+ | dicionário que associa identificadores a objetos <code>Pin</code>. A sub-classe de |
− | + | <code>Pin</code> (<code>DigitalPin</code>, <code>AnalogPin</code>, <code>VccPin</code> etc.) informa a função do pino, como ele pode ser |
|
− | usado, e oferece os métodos necessários, por |
+ | usado, e oferece os métodos necessários, por exemplo, <code>pin.high()</code>, |
− | + | <code>pin.low()</code>, <code>pin.toggle()</code> para controlar a tensão em um pino digital. O |
|
− | método |
+ | método <code>pin.flash(interval, [duration_high])</code> inicia uma thread para |
− | alternar o estado do pino automaticamente. Pinos |
+ | alternar o estado do pino automaticamente. Pinos <code>DigitalPwmPin</code> e |
− | + | <code>AnalogPin</code> também terão APIs de alto nível. |
|
=== Exemplo: blink.py === |
=== Exemplo: blink.py === |
Edição das 13h55min de 11 de março de 2014
Pingo pretende ser API universal (!) para programação de alto nível de placas com pinos de entrada e saída programáveis, como Raspberry Pi, BeagleBone Black, Arduino Yún, Intel Galileo etc. O nome é uma homenagem ao Garoa Hacker Clube e também pode ser lido em inglês como "pin go".
Descrição
No Pingo, cada placa é uma subclasse de pingo.Board
. Para conhecer os pinos GPIO
disponíveis em um Raspberry Pi, o usuário acessa RaspberryPi.pins
: um
dicionário que associa identificadores a objetos Pin
. A sub-classe de
Pin
(DigitalPin
, AnalogPin
, VccPin
etc.) informa a função do pino, como ele pode ser
usado, e oferece os métodos necessários, por exemplo, pin.high()
,
pin.low()
, pin.toggle()
para controlar a tensão em um pino digital. O
método pin.flash(interval, [duration_high])
inicia uma thread para
alternar o estado do pino automaticamente. Pinos DigitalPwmPin
e
AnalogPin
também terão APIs de alto nível.
Exemplo: blink.py
Este exemplo faz um led piscar em um Raspberry Pi (como no sketch Blink do Arduino)
import pingo from time import sleep placa = pingo.rpi.RaspberryPi() # * pino_led = placa.pins[11] pino_led.set_mode(pingo.OUTPUT) while True: pino_led.high() sleep(1) pino_led.low() sleep(1)
Para fazer o mesmo programa funcionar em um Arduino Yún, BeagleBone Black, pcDuino ou em qualquer outra placa suportada, basta trocar o nome da placa na linha assinalada com *, e alterar o número do pino linha seguinte, caso necessário.
Repositórios
- repositório principal: https://github.com/garoa/pingo
Repositórios de projetos que podem ser úteis
- RPi.GPIO, para programar pinos GPIO do Raspberry Pi (Python): http://sourceforge.net/projects/raspberry-gpio-python/
- Breakfast Serial, para controlar remotamente um Arduino via Firmata (Python): https://github.com/theycallmeswift/BreakfastSerial
Repositórios de projetos de referência
- Noduino: https://github.com/semu/noduino
- BoneScript: https://github.com/jadonk/bonescript