Hello world.. ou Hello LED?

Vamos ao que interessa?????

Iniciaremos com um projeto didático bem simples e intuitivo que é ligar e desligar um LED.
Estou atualmente utilizando o Sublime text para fazer os códigos em Python, pelo simples e ótimo fato de que para funcionar corretamente o Python necessita que sua indentação seja perfeita, e o Sublime faz essa indentação e alguns complementos de código como abaixo:
sublimeEle faz certinho a indentação ao enter, com o Control+enter ele te da a opção de códigos possíveis e etc.


O que precisaremos para acender nosso LED:

  1.  Raspberry Pi
  2. Uma Protobard
  3. Plutônio
  4. Um resistor
  5. LED
  6. jumpers macho/fêmea (ou no meu caso não tinha para vender macho / fêmea , então comprei um macho/macho e uma fêmea/fêmea e conectando um ao outro vira macho/fêmea)jumper_mf

 

 

 

Montagem
Raspberry-Pi-GPIO-Layout-Revision-2

Iremos escolher um pino, como por exemplo o 11,13,15,16,18,22 e colocaremos em uma linha da Protoboard.
Após isso colocaremos um (Terra) 6,9,14,20,25 em uma outra linha.

Devemos lembrar que: a corrente elétrica passa do negativo para o positivo e não do positivo para o negativo

essa é a sacada que devemos ter quando fizermos nossos projetos de eletrônica, qualquer proteção no circuito deve ser feita no negativo, como por exemplo colocar o resistor, colocaremos na segunda linha para a próxima o resistor  e ai sim colocamos o LED na próxima casa depois do resistor e juntamente ao lado de um dos pinos que você escolheu, ficando mais ou menos assim: (abrir a imagem mostra ela em tamanho real)
2015-01-1422.01.06

 

Se vocês olharem o meu terra se conecta ao resistor que por sua vez se conecta no LED e o conector do pino que irá fazer a corrente fluir direto no LED.

Feito isso começaremos a desenvolver o código, lembre-se que a indentação é importante para o funcionamento do código Python.

Escolhi o pino 18 ao acaso para didática:
vou explicar passo a passo comando por comando:

import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BOARD)
GPIO.setwarnings(False)
GPIO.setup(18, GPIO.OUT)

while(true):
 print("ACENDEU\n")
 GPIO.output(18, GPIO.HIGH)
 time.sleep(1)
 print("APAGOU\n")
 GPIO.output(18, GPIO.LOW)
 time.sleep(1)
  1. Importamos a biblioteca GPIO para a comunicação com os pinos
  2. Importamos a biblioteca timer para usarmos o ‘sleep’
  3. setmode pode ser utilizado de 2 formas distintas. Se utilizarmos como BOARD, a contagem dos pinos será física, começando pelo P1 contando como 1 ate o final sendo o 26. Se colocarmos como  BCM o número que equivale são os números reais do GPIO, como por exemplo o pino 18 é o GPIO 24 , a desvantagem é que esses números podem mudar de acordo com versões e pinagem do Raspberry, diferente do BOARD que o 1 vai ser sempre o 1 e o 18 sempre o 18
  4. Pode existir um ou mais scripts rodando no seu Raspberry ao mesmo tempo na mesma placa, portando colocando como False, não será emitido nenhum alerta caso seu sistema carregue com o pino em uma ação diferente da padrão (input)
  5. Aqui faremos a inicialização e a orientação do pino, se será de entrada ou saída de dados, colocando como OUT, ele ficará preparado para enviar a voltagem, ou IN para receber
  6. Feito isso utilizaremos estrutura de programação Python para executar, e a indentação ai é importante com o While true, ele irá executar tudo que estiver embaixo com a indentação abaixo dele.
  7. Escrevemos na tela do terminal “ACENDEU”
  8. Aqui utilizamos o comando output do GPIO, que somente irá mandar 1 para ligado e 0 para desligado, ou true/false ou a constante pré definida GPIO.HIGH, para 1  e GPIO.LOW para 0
  9. Paramos o script por 1 segundo e repetimos a operação fazendo desligar o LED

Salve o arquivo em algum lugar do seu Raspberry e execute o lxterminal. Feito isso você irá até a pasta em questão e digitar

sudo python meuscript.py

Se não deu nenhum erro, seu LED ficará assim:
2015-01-1422.00.56

e após 1 segundo ele se apaga. Lembre-se que para sair do script é necessário apertar Control+C na tela do lxterminal e também feche o script quando o LED estiver apagado, caso contrário ele ficará aceso até a próxima execução.