0
(0)

Si te divertiste haciendo que los LED parpadeen en una Raspberry Pi, ¡espera hasta que escuches sobre cómo controlar su brillo! En esta guía, trabajamos con un par de botones para ajustar el brillo del LED en una Raspberry Pi.

¿Estás comenzando tu primer proyecto de Raspberry Pi? Aquí se explica cómo instalar rápidamente el sistema operativo Raspberry Pi en su dispositivo.

Qué le hace PWM a un LED

PWM, o modulación de ancho de pulso, es un método que reduce artificialmente la salida de voltaje de los pines GPIO (entrada/salida de propósito general) de Raspberry Pi. Es artificial, ya que en realidad no reduce el voltaje y simplemente lo enciende y apaga tan rápido que el voltaje general se vuelve más bajo que el voltaje real que le está aplicando.

Para un LED o diodo emisor de luz, aumentar el voltaje general hace que brille más, mientras que disminuirlo lo hace más tenue. Pero como la Raspberry Pi no tiene salida analógica, usamos PWM para controlar el brillo del LED.

Lo que necesitarás

  • 2 pulsadores
  • 3 resistencias (250-550Ω funcionarán. Use una clasificación más baja si el LED está demasiado oscuro).
  • 1 LED (cualquier color)
  • Tablero de circuitos
  • Cables puente
  • Raspberry Pi (cualquier modelo excepto Pi Pico)

Cómo usar PWM para controlar el brillo de los LED en una Raspberry Pi

En esta guía, usamos dos botones para hacer que el LED brille más o se atenúe con PWM. Presionar el botón «más brillante» aumenta la salida PWM, mientras que presionar el botón «atenuar» la disminuye.

Preparando el Circuito

  1. Comencemos con el LED. En la protoboard, coloque el LED y conecte una resistencia a un lado. El lado en el que se coloca la resistencia no importa.

Led y resistencia en la placa de pruebas para Raspberry Pi Pwm Led Guide

  1. Conecte un puente a su lado del cátodo. Este apuntará al pin 11 en la Raspberry Pi. Agregue otro puente que conduzca al riel azul en la placa de prueba, luego agregue otro puente desde ese riel azul al pin 9 en la Raspberry Pi, que es GND.

Led y resistencia en la placa de prueba conectada a Raspberry Pi para la guía Led Raspberry Pi Pwm

Nota: para encontrar el número de pin correcto en la Raspberry Pi, sostenga la placa de modo que la bandeja de pines GPIO quede a la derecha. El pin superior izquierdo debe ser el pin 1, a su derecha debe ser el pin 2 y debajo debe ser el pin 3.

Asignación de pines de frambuesa pi

  1. Necesitarás construir los pulsadores. Coloque los botones en la placa de prueba y agregue una resistencia a una pata de cada botón. El otro lado de la resistencia debe conducir al riel azul de la placa de prueba.

Propina: ¿Quieres saber más sobre pulsadores? Tenemos una guía completa dedicada a mostrarle cómo usar botones con pines GPIO de Raspberry Pi.

  1. Agregue cables de puente en una conexión paralela con la resistencia y el botón pulsador. Conecte el otro lado de estos a los pines 13 (botón «Brighter») y 15 (botón «Dimmer»).

Pulsadores En Breadboard Con Led Para Raspberry Pi Pwm Led Guide

  1. Use un cable de puente para conectar los botones al costado con el riel rojo de la placa de pruebas.

Cables de puente rojos en los botones pulsadores de la placa de pruebas para la guía LED Raspberry Pi Pwm

  1. Conecte el riel rojo a una fuente de 3,3 V en la Raspberry Pi, como el pin 1.

Si Python es su lenguaje de programación favorito, aprenda a instalar y administrar varias versiones de Python en Linux.

Preparando el Código

En su herramienta de edición de código favorita, cree un nuevo archivo y guárdelo como «rpi-lcdpwm.py».

  1. Comience con el código a continuación, que le brinda dos formas de importar módulos en Python: la primera importa el RPi.GPIO módulo y te permite llamarlo con solo GPIOy el segundo importa sólo el sleep() función de la totalidad del time módulo.
import RPi.GPIO as GPIO
from time import sleep
  1. Defina los números de pin para que sea más fácil cambiar los pines en caso de que cambie de opinión más adelante.
ledPin = 11
brightenButton = 13
dimButton = 15
  1. Opcional: agregar la línea GPIO.setwarnings(False) para que pueda evitar el mensaje de advertencia de GPIO cuando inicie el script más tarde.
  1. Configure el método de selección de pines. BOARD es una buena opción para principiantes, ya que facilita la búsqueda de pines sin tener que consultar el pinout. El otro método es BCM, que significa «Broadcom». Esto utiliza los números de Broadcom asignados a cada pin, que pueden diferir según la marca de su Raspberry Pi.
GPIO.setmode(GPIO.BOARD)
  1. Asigne los pines GPIO como entrada o salida. estamos asignando ledPin como un pin de salida y siempre comenzará su estado como LOW. Las siguientes dos líneas establecidas brightenButton y dimButton como pines de entrada que escuchan las pulsaciones de sus botones. Estos también deben establecerse como GPIO.PUD_DOWN para designarlos como usando resistencias desplegables.
GPIO.setup(ledPin, GPIO.OUT, initial=GPIO.LOW)
GPIO.setup(brightenButton, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
GPIO.setup(dimButton, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
  1. Declaremos el PWM. pwmLEDPin es una variable que facilita escribir GPIO.PWM(ledPin, 100) más tarde, y el .start(0) El comando inicia el proceso PWM. Ahora podemos cambiar la salida de ledPin utilizando PWM.
pwmLEDPin = GPIO.PWM(ledPin, 100)
pwmLEDPin.start(0)
  1. El ciclo de trabajo es el porcentaje de tiempo que el pin está activo durante una onda de pulso. Aquí, estamos configurando el ciclo de trabajo al 100% primero. Tuvimos una discusión bastante larga sobre este tema en nuestra guía para usar servomotores con Raspberry Pi, si está interesado.
dutyCycle = 100
GPIO.output(ledPin, GPIO.HIGH)
  1. Para la parte de bucle, estamos configurando un while bucle que se ejecuta virtualmente para siempre.
while True:
  1. Al comienzo de este ciclo de bucle, estamos actualizando el ciclo de trabajo.
pwmLEDPin.ChangeDutyCycle(dutyCycle)
  1. Programemos lo que brightenButton lo hace. Cuando la frambuesa detecta electricidad que pasa a través del pin para brightenButtonmostrará un mensaje que dice «brightenButton is HIGH», que suma 5 al valor actual del ciclo de trabajo hasta que llega a 100.
if GPIO.input(brightenButton) == GPIO.HIGH:
                print("brightenButton is HIGH")
                if dutyCycle < 100:
                        dutyCycle += 5
                        sleep(0.25)
                else: dutyCycle = 100
  1. Al programar el dimButton función, hace lo contrario, reduciendo el valor en 5 hasta llegar a 0.
elif GPIO.input(dimButton) == GPIO.HIGH:
                print("dimButton is HIGH")
                if dutyCycle > 0:
                        dutyCycle -= 5
                        sleep(0.25)
                else: dutyCycle = 0

Código final:

import RPi.GPIO as GPIO
from time import sleep
 
ledPin = 11
brightenButton = 13
dimButton = 15
 
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BOARD)
GPIO.setup(ledPin, GPIO.OUT, initial=GPIO.LOW)
GPIO.setup(brightenButton, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
GPIO.setup(dimButton, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
pwmLEDPin = GPIO.PWM(ledPin, 100)
pwmLEDPin.start(0)
dutyCycle = 100
GPIO.output(ledPin, GPIO.HIGH)
 
while True:
        pwmLEDPin.ChangeDutyCycle(dutyCycle)
        if GPIO.input(brightenButton) == GPIO.HIGH:
                print("brightenButton is HIGH")
                if dutyCycle < 100:
                        dutyCycle += 5
                        sleep(0.25)
                else: dutyCycle = 100
        elif GPIO.input(dimButton) == GPIO.HIGH:
                print("dimButton is HIGH")
                if dutyCycle > 0:
                        dutyCycle -= 5
                        sleep(0.25)
                else: dutyCycle = 0

Haciendo que funcione

Primero, necesitarás una terminal. Puede usar el terminal incorporado de Raspberry Pi o controlar Raspberry Pi a través de SSH en una computadora separada. A través de la terminal, debe ir al directorio del script de Python e ingresar python3 rpi-ledpwm.py o el nombre de archivo que utilizó.

A veces, el LED parecerá parpadear. La frecuencia PWM probablemente sea demasiado baja, si ese es el caso. Puede aumentar la frecuencia aumentando el número en pwmLEDPin = GPIO.PWM(ledPin, 100) hasta que ya no se note el parpadeo.

Si encuentra que las transiciones son granulosas, reduzca el tiempo en sleep(0.25) dentro del ciclo while. Sin embargo, se vuelve más rápido a medida que lo bajas, así que no lo bajes demasiado.

Propina: prefiere Arduino en su lugar? Aquí hay una guía completa para comenzar con los proyectos de Arduino.

Preguntas frecuentes

¿Cuál es la frecuencia mínima que puedo generar con la Raspberry Pi?

La frecuencia más baja que puede establecer en una Raspberry Pi es de 10 Hz. El hardware no puede soportar nada más bajo que eso.

¿Cuál es la frecuencia máxima que puedo generar con la Raspberry Pi?

La frecuencia más alta que puede establecer en una Raspberry Pi es de 8000 Hz.

¿Es posible convertir ondas de pulso en ondas de sonido?

Sí. Con un elemento piezoeléctrico, es completamente posible convertir ondas de pulso en ondas de sonido que puede escuchar. En este caso, modificando la frecuencia cambia el tono, mientras que modificando el ciclo de trabajo se ajusta el volumen.

Todas las imágenes por Terenz Jomar Dela Cruz.

¿Le ha parecido útil este contenido?

¡Haz clic en una estrella para puntuar!

Promedio de puntuación 0 / 5. Recuento de votos: 0

Hasta ahora, ¡no hay votos!. Sé el primero en puntuar este contenido.