Artigos

Como controlar um LED com Raspberry Pi e PWM

Neste tutorial, vamos ver como controlar um LED com Raspberry Pi e PWM. A ideia do projeto é gerar um sinal de onda quadrada através dos pinos GPIO do Raspberry Pi que vai ligar e desligar uns LEDs a uma velocidade que o olho humano não consegue ver (acima de 50Hz) e pouco a pouco vai aumentar ou diminuir a sua intensidade variando a duração do ciclo de trabalho.

O ciclo de trabalho é a percentagem de tempo que o sinal está como “ON”. Se variamos esta percentagem de tempo, poderemos controlar a intensidade dos LEDs. Um valor de 0 no ciclo de trabalho significa que o LED vai estar completamente apagado, um valor de 100 fará com que esteja totalmente ligado.

 

Montagem de fios e ligações

O esquema de montagem é muito simples e vamos fazê-lo com dois LEDs, apenas teremos que ligar um pino GND do Raspberry Pi ao protoboard e colocar os LEDs nos pinos 24 e 25 com duas resistências de 330 Ohm ou superior para proteger o circuito, o resto, controla-se via software. Aqui tem o esquema do circuito:

Script Python para o controlo de LEDs com PWM

Com este script, o que vamos fazer será iniciar um loop que altera os ciclos de trabalho dos LEDs, de forma que quando um está a 100% (completamente ligado), e outro estará a 0% (completamente apagado). Esse loop vai funcionar até que se pressione CTRL+C já que o loop ‘while True‘ está dentro de um bloco ‘try: … Except KeyboardInterrupt‘ que vai parar os LEDs e vai limpar as portas GPIO que abrimos ao sair. O código do script é o seguinte, tem comentários para que o interprete melhor:

 

import RPi.GPIO as GPIO # Carregamos a livraria RPi.GPIO  
from time import sleep  # Carregamos a função sleep do módulo time 
  
GPIO.setmode(GPIO.BCM)  # Colocamos o Raspberry em modo BCM  
  
GPIO.setup(25, GPIO.OUT)  # Colocamos o pino GPIO nº25 como saída para o LED #1  
GPIO.setup(24, GPIO.OUT)  # Colocamos o pino GPIO nº24 como saída para o LED #2  
  
white = GPIO.PWM(25, 100)   # Criamos o objeto 'white' no pin 25 a 100 Hz  
red = GPIO.PWM(24, 100)     # Criamos o objeto 'red' no pin 24 a 100 Hz 
  
white.start(0)              # Iniciamos o objeto 'white' a 0% do ciclo de trabalho (completamente apagado)  
red.start(100)              # Iniciamos o objeto 'red' a 100% do ciclo de trabalho (completamente ligado)  
  
# A partir de agora começamos a modificar os valores do ciclo de trabalho
  
pause_time = 0.02           # Declaramos um lapso de tempo para as pausas
  
try:                        # Abrimos um bloco 'Try...except KeyboardInterrupt'
    while True:             # Iniciamos um laço 'while true'  
        for i in range(0,101):            # De i=0 até i=101 (101 porque o script para a 100%)
            white.ChangeDutyCycle(i)      # LED #1 = i
            red.ChangeDutyCycle(100 - i)  # LED #2 subtrair 100 - i
            sleep(pause_time)             # Pequena pausa para não saturar o processador
        for i in range(100,-1,-1):        # A partir de i=100 a i=0 em passos de -1  
            white.ChangeDutyCycle(i)      # LED #1 = i
            red.ChangeDutyCycle(100 - i)  # LED #2 subtrair 100 - i  
            sleep(pause_time)             # Pequena pausa para não saturar o processador  
  
except KeyboardInterrupt:   # Se pressionar CTRL+C!!
    white.stop()            # Parar o objeto 'white'
    red.stop()              # Parar o objeto 'red'
    GPIO.cleanup()          # Limpamos os pinos GPIO e saimos

———————–

Gostaram deste artigo ? Deixem o vosso comentário no formulário a baixo.

Não se esqueçam de fazer like na nossa página no facebook.

Todos os produtos utilizados neste artigo podem ser encontrados na loja de componentes eletrónicos ElectroFun.

Comments

comments

Deixar uma resposta