Mudanças entre as edições de "Pingo"
Linha 3: | Linha 3: | ||
'''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"'''. |
'''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 '''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'''. O tipo do objeto |
||
+ | '''Pin''' ('''DigitalPin''', '''AnalogPin''', '''VccPin''' etc.) informa a função do pino, como ele pode ser |
||
+ | usado, e oferece os métodos necessários, por exempo, '''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) |
Este exemplo faz um led piscar em um Raspberry Pi (como no sketch Blink do Arduino) |
Edição das 12h49min 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 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. O tipo do objeto Pin (DigitalPin, AnalogPin, VccPin etc.) informa a função do pino, como ele pode ser usado, e oferece os métodos necessários, por exempo, 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