Mudanças entre as edições de "Pingo"
(28 revisões intermediárias por um outro usuário não estão sendo mostradas) | |||
Linha 1: | Linha 1: | ||
+ | [[Arquivo:Pingo-logo.svg|125px|right]] |
||
⚫ | |||
+ | |||
⚫ | '''Pingo''' pretende ser API universal (!) para programação de alto nível de placas com pinos de entrada e saída programáveis, como [[Arduino]], [[Raspberry Pi]], [[pcDuino]], [[UDOO]], [[BeagleBone Black]] etc. O nome é uma homenagem ao '''Garoa Hacker Clube''' e também pode ser lido em inglês como '''"pin go"'''. |
||
+ | |||
+ | Esta página é apenas uma breve introdução ao projeto. A documentação oficial em inglês fica em [http://www.pingo.io/ Pingo.io]. |
||
+ | |||
+ | == Descrição == |
||
+ | |||
+ | 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 <code>RaspberryPi.pins</code>: um |
||
+ | 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 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 <code>pin.flash(interval, [duration_high])</code> inicia uma thread para |
||
+ | alternar o estado do pino automaticamente. Pinos <code>DigitalPwmPin</code> e |
||
+ | <code>AnalogPin</code> também terão APIs de alto nível. |
||
+ | |||
+ | Leia mais em http://www.pingo.io/docs/ (em inglês). |
||
+ | |||
+ | === Exemplo: blink.py === |
||
+ | |||
+ | Este exemplo faz um led piscar em um Raspberry Pi (como no sketch Blink do Arduino) |
||
⚫ | |||
import pingo |
import pingo |
||
⚫ | |||
− | >>> |
||
⚫ | |||
− | + | placa = pingo.rpi.RaspberryPi() # <-- |
|
− | + | led = placa.pins[11] |
|
− | <DigitalPin #11> |
||
⚫ | |||
− | >>> |
||
+ | while True: |
||
− | led_pin = board.pins[11] |
||
+ | led.high() |
||
⚫ | |||
+ | sleep(1) |
||
− | led_pin.state = 1 |
||
+ | led.low() |
||
− | led_pin.state |
||
− | 1 |
+ | sleep(1) |
− | sleep(1) # 1 second |
||
− | led_pin.state = 0 |
||
− | led_pin.state |
||
⚫ | |||
+ | 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 <code><--</code>, e alterar o número do pino linha seguinte, caso necessário. |
||
− | == Repositórios == |
||
+ | == Veja também == |
||
⚫ | |||
+ | |||
⚫ | |||
+ | |||
+ | - documentação oficial (em inglês): http://www.pingo.io/docs/ |
||
+ | |||
+ | - slides: https://speakerdeck.com/ramalho/programando-gpio-com-python-e-pingo |
||
+ | |||
+ | - demonstração [[Pingo/IoT Roadshow]] |
||
=== Repositórios de projetos que podem ser úteis === |
=== Repositórios de projetos que podem ser úteis === |
||
Linha 34: | Linha 59: | ||
- BoneScript: https://github.com/jadonk/bonescript |
- BoneScript: https://github.com/jadonk/bonescript |
||
+ | |||
+ | - WebIOPi 0.7 - Internet of Things framework (Python) https://code.google.com/p/webiopi/ |
||
+ | |||
+ | [[Categoria: Pingo]] |
||
+ | [[Categoria: Arduino]] |
||
+ | [[Categoria: Mini PC]] |
||
+ | [[Categoria: IoT]] |
||
+ | [[Categoria: Turing Clube]] |
||
+ | [[Categoria:Python]] |
Edição atual tal como às 05h22min de 23 de agosto de 2015
Pingo pretende ser API universal (!) para programação de alto nível de placas com pinos de entrada e saída programáveis, como Arduino, Raspberry Pi, pcDuino, UDOO, BeagleBone Black etc. O nome é uma homenagem ao Garoa Hacker Clube e também pode ser lido em inglês como "pin go".
Esta página é apenas uma breve introdução ao projeto. A documentação oficial em inglês fica em Pingo.io.
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.
Leia mais em http://www.pingo.io/docs/ (em inglês).
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() # <-- led = placa.pins[11] led.mode = pingo.OUT while True: led.high() sleep(1) 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.
Veja também
- repositório principal: https://github.com/pingo-io
- documentação oficial (em inglês): http://www.pingo.io/docs/
- slides: https://speakerdeck.com/ramalho/programando-gpio-com-python-e-pingo
- demonstração Pingo/IoT Roadshow
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
- WebIOPi 0.7 - Internet of Things framework (Python) https://code.google.com/p/webiopi/