Ligar LEDs com o Raspberry Pi
O Raspberry Pi pode ser ligado a componentes externos, tais como lâmpadas, sensores, motores, etc., e pode ser programado em várias linguagens, desde linguagens simples e introdutórias, como o Scratch, até linguagens profissionais, como o Python.
Objetivos
Ao percorreres este desafio vais aprender:
- Princípios básicos de eletrónica e montar um sistema eletrónico simples, com recurso a uma Breadboard, LEDs e resistências
- Explorar como o RPi pode alimentar e controlar um sistema eletrónico externo com recurso aos pinos GPIO e a linha de comandos (
Shell
) do RPi - Principios básicos de programação com Scratch
- Principios básicos de programação com Python
Duração da atividade: 90 minutos.
Material
Nome | Quantidade | Preço/Unidade |
---|---|---|
Raspberry Pi | 1 | 35€ |
Breadboard | 1 | 2,5€ |
Fios de ligação | 4 | 0.1€ |
LED | 1 | 0.1€ |
Resistência 1kΩ | 1 | 0.01€ |
Conetar um LED com uma breadboard
Na breadboard os furos junto à linha vermelha estão todos ligados entre si, assim como os da linha azul, os burcaos horizontais entre as colunas vermelho-azul, estão também ligados entre si.
Pega num
fio de ligação
e liga-o ao pino GPIOGround
noRPi
e liga a outra ponta num furo nacoluna azul
nabreadboard
, como demonstrado na imagem.Agora pega num LED, uma das pernas é mais comprida (ânodo) do que a outra (cátodo).
Coloca a
ânodo
na colunaE
nabreadboard
(Por exemploE3
), e ocátodo
no furo seguinte (por exemploE2
).Coloca a
resistência
com uma perna nacoluna azul
e outra a ligar aocátodo
doLED
.Agora para completar o circuito e a corrente fluir vais precisar de outro fio de ligação. Pega nesse
fio de ligação
e liga-o aoGPIO 18
noRPi
, depois liga a outra ponta aoânodo
doLED
.Vamos agora programar o LED para acender, para isso abrimos a
linha de comandos
(Menu->Acessórios->LXTerminal).Agora que vais ter que inserir instruções para controlar o RPi. Define o
GPIO 18
para modo de escrita (out
). Escreve a seguinte instrução na consola que abriste:gpio -g mode 18 out
Liga o
GPIO 18
:gpio –g write 18 1
Acabaste de informar o RPi que deve passar energia ao circuito (daí o número 1 no final das instrução). O LED irá acender!
Para desligar o LED, vamos deixar de lhe passar energia. Como? Desliga o
GPIO 18
.gpio –g write 18 0
Agora que já acendeste um LED, podes adicionar ainda mais, sendo sempre preciso uma resistência para cada LED, fica aqui um exemplo com 3 LEDs ligados aos pinos GPIO
18
,7
e20
.
Programar LEDs com Scratch
Agora vamos usar o Scratch para programar o nosso LED.
Com o teu circuito feito anteriormente no passo 9 completo, estás agora pronto para usar o Scratch. Inicia o
Scratch
(Menu->Desenvolvimento->Scratch).Clica em
Controle
no painel esquerdo e arrasta oquando clicado
para a área de comandos.Arrasta um bloco
anuncie
para a tua area de comandos e junta-o ao blocoquando clicado
, edita a caixa de texto dentro doanuncie
(novo
) e escrevegpioserveron
(ligar servidor GPIO).Arrasta outro bloco
anuncie
e escreveconfig18output
, isto configura o Pino 18 como saída de informação.Arrasta outro bloco
anuncie
e escrevegpio18on
(ligar GPIO 18).Arrasta um bloco
espere 1 segundos
e liga-o aos blocos anteriores.Arrasta outro bloco
anuncie
e escreveconfig18off
(desligar GPIO 18).Guarda o teu trabalho como
Teste LED
(File->Salvar Como).Clica na
bandeira verde
no canto superior direito.Deverás ver o LED a acender e a apagar.
Mas e se quisermos que acenda e apague consecutivamente (como uma árvore de natal)? Adiciona um bloco
espere 1 segundos
no último lugar e um blocosempre
no topo do nosso programa.Guarda o teu trabalho como
Teste LED
(File->Salvar Como).Clica na
bandeira verde
no canto superior direito. Deverás ver o LED a acender e a apagar, de 1 em 1 segundo!
Programar LEDs com Python
Agora vamos usar Python para programar o nosso LED.
Abre o
Python 3
(Menu->Desenvolvimento->Python 3).Cria um novo programa (File->New File).
Escreve lá o seguinte código:
import time import RPi.GPIO as GPIO GPIO.setmode(GPIO.BCM) GPIO.setwarnings(False) led = 18 GPIO.setup(led,GPIO.OUT)
Debaixo do código que escreveste adiciona:
print("LED ligado") GPIO.output(led,GPIO.HIGH)
O código até aqui apenas liga o LED, vamos agora adicionar o código para o desligar após algum tempo:
time.sleep(1) print("LED Desligado") GPIO.output(led,GPIO.LOW)
A parte final do teu programa é:
GPIO.cleanup()
Guarda o teu código (File->Save)
Corre o teu programa
F5
. Ele só acendeu uma vez.Para acender consecutivamente temos que adicionar uma espera após desligar (para estar 1 segundo apagado) e adicionar um ciclo ao nosso programa:
import time import RPi.GPIO as GPIO GPIO.setmode(GPIO.BCM) GPIO.setwarnings(False) led = 18 GPIO.setup(led,GPIO.OUT) # Este ciclo não termina while True: print("LED ligado") GPIO.output(led,GPIO.HIGH) time.sleep(1) print("LED Desligado") GPIO.output(led,GPIO.LOW) time.sleep(1) GPIO.cleanup()
Guarda o teu código (File->Save)
Corre o teu programa
F5
. Parabéns ele já pisca!
E agora?
Podes experimentar ligar mais LEDs ao teu circuito e faze-los alternar!
Referências: