Mudanças entre as edições de "Pingo"

De Garoa Hacker Clube
Ir para navegação Ir para pesquisar
Linha 5: Linha 5:
 
== Descrição ==
 
== Descrição ==
   
No Pingo, cada placa é uma subclasse de '''Board'''. Para conhecer os pinos GPIO
+
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 '''RaspberryPi.pins''': um
+
disponíveis em um Raspberry Pi, o usuário acessa <code>RaspberryPi.pins</code>: um
dicionário que associa identificadores a objetos '''Pin'''. O tipo do objeto
+
dicionário que associa identificadores a objetos <code>Pin</code>. A sub-classe de
'''Pin''' ('''DigitalPin''', '''AnalogPin''', '''VccPin''' etc.) informa a função do pino, como ele pode ser
+
<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 exempo, '''pin.high()''',
+
usado, e oferece os métodos necessários, por exemplo, <code>pin.high()</code>,
'''pin.low()''', '''pin.toggle()''' para controlar a tensão em um pino digital. O
+
<code>pin.low()</code>, <code>pin.toggle()</code> para controlar a tensão em um pino digital. O
método '''pin.flash(interval, [duration_high])''' inicia uma thread para
+
método <code>pin.flash(interval, [duration_high])</code> inicia uma thread para
alternar o estado do pino automaticamente. Pinos '''DigitalPwmPin''' e
+
alternar o estado do pino automaticamente. Pinos <code>DigitalPwmPin</code> e
'''AnalogPin''' também terão APIs de alto nível.
+
<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-logo.svg

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