Como Fazer LEDs Piscantes Com o Raspberry Pi

Imagem em Destaque do Led Raspberry Pi

O Raspberry Pi é mais do que apenas um computador pequeno. É uma placa poderosa que permite fazer tantas coisas com seus pinos GPIO. Aqui mostramos como fazer LEDs piscantes com o Raspberry Pi.

Índice

  • O que Faz os LEDs Piscarem?
  • O que Você Precisa
  • Como Fazer LEDs Piscantes
  • Como o Código Funciona
  • Vamos Fazer Mais LEDs Piscarem!
  • Perguntas Frequentes

Leia também: Como Controlar seu Raspberry Pi através do Windows via SSH

O que Faz os LEDs Piscarem?

Quando você olha para a parte superior do seu Raspberry Pi, encontrará cerca de 40 pinos de metal saindo da placa de circuito. Se você tiver um Raspberry Zero, provavelmente há furos circulares para soldar pinos de cabeçote. Em qualquer um dos casos, eles são chamados de pinos GPIO (Entrada/Saída de Uso Geral).

Pinos Gpio do Raspberry Pi

Cada pino GPIO é feito para ter um de dois modos em qualquer momento: um ALTO e um BAIXO. Para as especificações de pinagem do Raspberry Pi, um pino carregado a 3.3 V conta como um ALTO ou um “1 lógico”, enquanto qualquer coisa abaixo de cerca de 2.5 V conta como um BAIXO ou “0 lógico”. Uma placa que é baseada em 3.3 V para saídas altas e baixas é dita estar em “lógica de 3.3v”.

Quando você conecta um LED entre um pino em ALTO e um pino GND, você está basicamente fazendo um circuito completo. O LED deve acender devido à eletricidade passando.

Esquema do Circuito Led Lt Spice

Às vezes, seus LEDs podem queimar quando há muita corrente passando por eles. Para evitar que isso aconteça, você pode adicionar um resistor. Não importa se está no lado do ânodo ou cátodo – qualquer lado deve diminuir a corrente que passa.

Leia também: Como Programar um Arduino com um Raspberry Pi

GPIO e Outros Pinos

Vamos ser claros aqui, pois nem todos esses pinos de metal são considerados GPIO. Eles são GPIO apenas se puderem ser programados para ter um alto ou baixo – daí o termo “Entrada/Saída”. Para o Raspberry PI, também há pinos feitos para alimentação (3.3v, 5v e GND) e para trabalhar com EEPROM (ID_SD e ID_SC).

Desta vez, você não precisará pensar em todos esses outros pinos, exceto GND e um pino GPIO.

Programando os Pinos GPIO

Como você diz a cada Pino GPIO o que fazer? No nível mais básico, você terá que fazer comandos em código de máquina. Isso será um pouco difícil para iniciantes.

Em vez disso, para o Raspberry Pi, você pode usar Python ou C++, que depois é compilado em código de máquina.

Para este projeto em particular, estamos usando Python, pois é mais fácil de usar.

Leia também: Como Instalar o Windows 11 em um Raspberry Pi 4

O que Você Precisa

  • Qualquer modelo de Raspberry Pi que não seja o Pico (preferencialmente o Raspberry Pi 3 Model B+ como o do exemplo, mas qualquer um funciona), instalado com o Raspberry Pi OS.
  • Um monitor e cabo HDMI
  • Mouse e teclado
  • Um carregador de celular (para alimentar o Raspberry Pi)
  • Um pequeno LED
  • Um resistor de 250Ω (pode ser qualquer valor próximo a isso)
  • Uma placa de protótipo sem solda
  • x2 fios jumper macho-fêmea (ou macho-macho se você tiver um cabeçote)

Como Fazer LEDs Piscantes

Vamos fazer isso passo a passo e fazer um LED piscar sozinho.

  1. Abra seu terminal e digite sudo apt-get install python3-rpi.gpio para instalar o módulo RPi.GPIO para Python 3.

Terminal Instalar Python Gpio

  1. Abra um editor de texto e digite este código:
import RPI.GPIO as GPIO  
from time import sleep  
  
GPIO.setwarnings(False)  
GPIO.setmode(GPIO.BOARD)  
GPIO.setup(7, GPIO.OUT, initial=GPIO.LOW)  
  
while True:  
        GPIO.output(7, GPIO.HIGH)  
print("LED aceso")  
        sleep(1)  
        GPIO.output(7, GPIO.LOW)  
print("LED apagado")  
        sleep(1)
  1. Salve em uma pasta em algum lugar. O nome da extensão deve ser .py. No meu Raspberry Pi, eu o nomeei como “rpi-blink.py” para facilitar a localização.

Explorador de Arquivos Pasta Rpi Blink

  1. Desligue seu Raspberry Pi e remova-o de todas as fontes de energia.
  2. Para começar a construir o circuito, conecte seu LED de forma que haja um resistor no lado do cátodo ou ânodo, depois aponte o lado do cátodo para o pino 7 e o lado do ânodo para o pino 9 (GND).

Esquema do Circuito Led X1 Lt Spice

Dica: para descobrir o número do pino, segure seu Raspberry Pi de forma que os pinos GPIO fiquem à direita. O pino superior esquerdo é o pino 1, o superior direito é o pino 2. O que está abaixo do pino 1 é o pino 3, depois à direita dele é o pino 4, e assim por diante.

  1. Ligue-o novamente para que possamos executar o script Python. Abra seu Terminal e use cd para mover para a pasta do arquivo Python. Digite:
python3 rpi-blink.py

para fazer o LED piscar.

Terminal Executar Rpi Blink X1

Alternativa: se você tiver o Thonny Python IDE, clique no botão “Executar script atual” para executá-lo diretamente do IDE.

Botão Executar Thonny Python Ide

  1. Para fazer parar, pressione Ctrl + C dentro do terminal. Mas se você estiver usando o Thonny Python IDE, basta fechar o editor.

Raspberry Pi LED Piscando X1

Leia também: 10 Linhas Úteis de Código Python que Você Deve Conhecer

Como o Código Funciona

Há duas coisas que fazem funcionar: o código e o circuito. Estamos começando com o código e dividindo-o em três partes:

  1. Comandos de importação
  2. Comandos de configuração
  3. Comandos em loop

Na prática, é bom pensar no código como pequenas funções agrupadas para formar funções maiores.

Comandos de Importação

Python normalmente não facilita a programação de pinos GPIO. Há uma tonelada de coisas acontecendo nos bastidores. A boa notícia é que você pode importar o código que lida com todas essas coisas complicadas.

Dê uma olhada nas linhas 1 e 2:

import RPI.GPIO as GPIO  
from time import sleep

Essas são um par de linhas que importam código de algo chamado “módulo Python”.

import RPI.GPIO as GPIO permite que você importe o conteúdo do módulo RPI.GPIO e use a palavra-chave GPIO para chamar uma função relacionada ao RPI.GPIO.

Por outro lado, from time import sleep permite que você importe a função sleep() do módulo de tempo embutido do Python. Isso permite que você atrase a próxima linha de código por um determinado número de segundos.

Comandos de Configuração

Alguns códigos precisam ser “configurados” ou definidos de tal forma porque são usados por outros códigos para fazer lógica complexa. Chamaremos esses de comandos de configuração.

Ao contrário dos comandos de importação, os comandos de configuração não “importam” código de módulos externos. Eles importam de módulos que você já importou.

Como exemplo, GPIO.setwarnings(False) importa a função .setwarnings() do módulo RPI.GPIO, que foi definido anteriormente como GPIO. Essa função para um aviso de disparo quando você executa o código. Está definido como True por padrão.

Para explicar os outros dois, continuamos com GPIO.setmode(GPIO.BOARD). Isso informa ao RPI.GPIO que tipo de pinagem você vai usar. Existem dois tipos: BOARD e BCM. A pinagem BOARD permite que você escolha pinos com base em seus números. Enquanto isso, a pinagem BCM baseia-se na designação do Canal SOC Broadcomm. Para manter as coisas curtas, BOARD é mais fácil de usar porque é sempre o mesmo, não importa qual modelo de Raspberry Pi você use. BCM, por outro lado, tende a ser diferente de modelo para modelo.

Por último, temos GPIO.setup(7, GPIO.OUT, initial=GPIO.LOW) que usa a função .setup(), que pede três coisas: o número do pino, sua designação e seu valor inicial. O número do pino que estamos usando aqui é o pino número 7. Devemos configurá-lo como um pino de saída e garantir que comece como LOW. Sem isso, o Raspberry Pi nunca saberá o que fazer com o pino 7.

Comandos em Loop

Esta é a parte legal. Os comandos em loop permitem que você diga ao Raspberry Pi para fazer coisas. Começamos este loop com while True:, que repete as próximas linhas de código para sempre.

Havia três funções no loop: GPIO.output(), print() e sleep().

  • GPIO.output() pega um pino de saída e o define como HIGH ou LOW. Se você pensou em mudar qual pino usar no seu Raspberry Pi, então você deve ter trocado 7 por um número de pino de sua escolha.
  • print() faz com que algo seja impresso no console. Ele aceita uma string, número ou variável que contém os dois anteriores.
  • sleep() pausa todo o programa por um determinado número de segundos. Use um número menor que 1 para fazer com que pause por menos de um segundo.

O Circuito

Agora que você sabe como o código funciona, vamos dar uma olhada no circuito. O código cria um circuito conectando o pino 7 ao GND. Quando o pino 7 está em HIGH, ele emite 3.3V que passa pelo resistor e LED, depois entra no GND. Isso se torna um circuito completo e é por isso que o LED acende.

Esquema do Raspberry Pi Pino 7 Ligado e Desligado Lt Spice

Mas o que acontece quando o pino 7 está em baixo? Os 3.3V caem para cerca de 0V. Dessa forma, nenhuma eletricidade passa pelo LED, então ele não acende. Você pode pensar no pino 7 como uma espécie de interruptor, pois ele liga ou desliga o circuito.

Vamos Fazer Mais LEDs Piscarem!

Agora que você sabe o que faz as coisas funcionarem, vamos modificar nosso código um pouco para fazê-lo funcionar com dois LEDs.

Para isso, você só precisará adicionar mais dois LEDs de qualquer cor e mais dois resistores de 250Ω.

  1. Abra seu editor de código novamente e cole este código:
import RPI.GPIO as GPIO  
from time import sleep  
  
GPIO.setwarnings(False)  
GPIO.setmode(GPIO.BOARD)  
GPIO.setup(7, GPIO.OUT, initial=GPIO.LOW)  
GPIO.setup(12, GPIO.OUT, initial=GPIO.HIGH)  
GPIO.setup(37, GPIO.OUT, initial=GPIO.LOW)  
  
while True:  
        GPIO.output(7, GPIO.HIGH)  
        GPIO.output(12, GPIO.LOW)  
print("LED aceso @ pino 7")  
print("LED apagado @ pino 12")  
sleep(1)  
        GPIO.output(7, GPIO.LOW)  
        GPIO.output(12, GPIO.HIGH)  
print("LED apagado @ pino 7")  
print("LED aceso @ pino 12")  
sleep(1)  
if x == 1:  
                GPIO.output(37, GPIO.HIGH)  
print("LED aceso @ pino 37")  
                x = 0  
elif x == 0:  
                GPIO.output(37, GPIO.LOW)  
print("LED apagado @ pino 37")  
                x = 1  
else:  
print("Erro de Lógica")  
sleep(1)
  1. Salve e desligue seu Raspberry Pi.
  2. Para conectar o circuito, para cada LED que você tem, conecte-o a um resistor em série, depois conecte o lado do cátodo ao Raspberry Pi. Deve haver um para o pino 7, outro para o pino 12 e o último para o pino 37. O lado do ânodo deve ser conectado ao GND. Cada um desses pinos tem um pino GND ao lado deles. Esses devem ser os pinos 9, 20 e 39.

Esquema do Circuito Led X3 Lt Spice

Dica: se você ficar sem fio jumper macho-fêmea, pode conectar um fio macho-macho a um fio fêmea-fêmea para formar um fio jumper macho-fêmea mais longo.

Pinos Jumper

  1. Uma vez que você tenha terminado, ligue o Raspberry Pi e repita o passo 6 para iniciar o script Python.

Raspberry Pi LED Piscando X3

Leia também: Como Utilizar Python para Tarefas Básicas de Administração de Sistema Linux e Redes

Perguntas Frequentes

Por que meu LED permanece aceso quando eu paro o script?

Quando o Raspberry Pi lê o script Python, ele lê a linha antes de executar o comando. Você provavelmente parou logo após ele ler a linha GPIO.output(7, GPIO.HIGH), então ele não conseguiu trazer o pino para LOW primeiro. Você pode deixá-lo assim, pois ele retornará a LOW na próxima vez que você reiniciar. Alternativamente, faça outro script Python que defina o pino como LOW assim que for executado.

Coloquei meu LED no pino certo, mas ele não acende. Por quê?

Existem duas razões possíveis: ou seu LED está quebrado ou você colocou o cátodo do lado oposto. Tente girar os pinos do LED primeiro.

É seguro colocar o LED do lado oposto?

Sim. Você pode colocá-lo do lado oposto, e a corrente simplesmente não passará. É uma característica especial entre diodos – mesmo diodos emissores de luz – eles permitem que a eletricidade passe de um lado e não do outro.

É seguro reposicionar o LED enquanto o Raspberry Pi está ligado?

Se for apenas girar o LED do lado oposto, então está tudo bem, e não há problema. Mas se você for colocar o LED em qualquer lugar, há uma chance de que você possa fazer um curto entre o pino de 5v e um pino GPIO. Isso vai quebrar sua placa.