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

De Garoa Hacker Clube
Ir para navegação Ir para pesquisar
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"'''.
   
=== Blink ===
+
== 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-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 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