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:
Ele 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:
- Raspberry Pi
- Uma Protobard
Plutônio- Um resistor
- LED
- 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)
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)
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)
- Importamos a biblioteca GPIO para a comunicação com os pinos
- Importamos a biblioteca timer para usarmos o ‘sleep’
- 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
- 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)
- 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
- 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.
- Escrevemos na tela do terminal “ACENDEU”
- 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
- 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:
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.