La Raspberry Pi es más que una pequeña computadora. Es una placa poderosa que te permite hacer muchas cosas con sus pines GPIO. Aquí te mostramos cómo hacer LED parpadeantes con la Raspberry Pi.
¿Qué hace que los LED parpadeen?
Cuando miras la parte superior de tu Raspberry Pi, encontrarás alrededor de 40 pines metálicos que sobresalen de la placa de circuito. Si tiene una Raspberry Zero, probablemente haya orificios circulares para soldar los pines del cabezal. En cualquier caso, se denominan pines GPIO (General Purpose Input/Output).
Pines GPIO en Raspberry Pi 3 Model B+. El pin 1 comienza desde el pin superior izquierdo.
Cada pin GPIO está hecho para tener uno de dos modos en un momento dado: ALTO y BAJO. Para especificaciones de distribución de pines de la Raspberry Pi, un pin cargado a 3,3 V cuenta como ALTO o un «1 lógico», mientras que cualquier cosa por debajo de alrededor de 2,5 V cuenta como BAJO o «0 lógico». Se dice que una placa que se basa en 3,3 V para salidas altas y bajas tiene una «lógica de 3,3 V».
Cuando conecta un LED entre un pin en HIGH y un pin GND, básicamente está haciendo un circuito completo. El LED debe encenderse debido al paso de la electricidad.
Un circuito LED contiene tres partes: una fuente de voltaje con tierra, una resistencia y un LED.
A veces, sus LED se convertirán en humo cuando pase demasiada corriente a través de ellos. Para evitar que eso suceda, puede agregar una resistencia. No importa si está en el lado del ánodo o del cátodo, cualquiera de los lados debería disminuir la corriente que pasa.
GPIO y otros pines
Seamos claros aquí, ya que no todos esos pines metálicos se consideran GPIO. Solo son GPIO si se pueden programar para tener un valor alto o bajo, de ahí el término «Entrada/Salida». Para Raspberry PI, también hay pines hechos para alimentación (3.3v, 5v y GND) y que funcionan con EEPROM (ID_SD e ID_SC).
Esta vez, no necesitará pensar en todos esos otros pines, excepto GND y un pin GPIO.
Programación de los pines GPIO
¿Cómo le dices a cada Pin GPIO qué hacer? En el nivel más básico, deberá realizar comandos en código de máquina. Eso va a ser un poco demasiado difícil para los principiantes.
En cambio, para Raspberry Pi, puede usar Python o C ++, que luego se compila en código de máquina.
Para este proyecto en particular, estamos usando Python, ya que es más fácil de usar.
Que necesitas
- Cualquier modelo de Raspberry Pi que no sea el Pico (preferiblemente el Raspberry Pi 3 Model B+ como el de este ejemplo, pero cualquier cosa funciona), instalado con el sistema operativo Raspberry Pi.
- Un monitor y cable HDMI
- Ratón y teclado
- Un cargador de teléfono (para alimentar la Raspberry Pi)
- un pequeño led
- Una resistencia de 250 Ω (puede ser cualquier valor cercano a este)
- Una placa de pruebas sin soldadura
- x2 cables de puente de macho a hembra (o de macho a macho si tiene un sombrero de cabecera)
Cómo hacer LED parpadeantes
Demos un paso a la vez y hagamos que un LED parpadee solo.
- Abre tu terminal y escribe
sudo apt-get install python3-rpi.gpio
para instalar el módulo RPi.GPIO para Python 3.
- Abre un editor de texto y escribe 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 on") sleep(1) GPIO.output(7, GPIO.LOW) print("LED off") sleep(1)
- Guárdelo en una carpeta en algún lugar. El nombre de la extensión debe ser .py. En mi Raspberry Pi, lo llamé «rpi-blink.py» para que sea más fácil de encontrar.
- Apague su Raspberry Pi y retírelo de todas las fuentes de alimentación.
- Para comenzar a construir el circuito, cablee su LED para que haya una resistencia en el cátodo o en el ánodo, luego apunte el lado del cátodo al pin 7 y el lado del ánodo al pin 9 (GND).
Propina: para averiguar el número de pin, sostenga su Raspberry Pi de manera que los pines GPIO queden a la derecha. El pin superior izquierdo es el pin 1, el superior derecho es el pin 2. El que está debajo del pin 1 es el pin 3, luego a la derecha está el pin 4, y así sucesivamente.
- Vuelva a encenderlo para que podamos ejecutar el script de Python. Abre tu Terminal y usa
cd
para pasar a la carpeta del archivo de Python. Escribe:
python3 rpi-blink.py
para que el LED parpadee.
Alternativa: si tiene Thonny Python IDE, haga clic en el botón «Ejecutar secuencia de comandos actual» para que se ejecute directamente desde el IDE.
- Para detenerlo, presione Ctrl + C dentro de la terminal. Pero si está utilizando el IDE de Thonny Python, simplemente cierre el editor.
Cómo funciona el código
Hay dos cosas que hacen que funcione: el código y el circuito. Empezamos con el código y lo dividimos en tres partes:
- Importar comandos
- Comandos de configuración
- Comandos en bucle
En la práctica, es bueno pensar en el código como pequeñas funciones agrupadas para crear funciones más grandes.
Comandos de importación
Python normalmente no hace que sea tan fácil programar pines GPIO. Hay un montón de cosas sucediendo detrás de escena. La buena noticia es que puede importar el código que maneja todas estas cosas molestas.
Echa un vistazo a las líneas 1 y 2:
import RPI.GPIO as GPIO from time import sleep
Estas son un par de líneas que importan código de algo llamado «módulo de Python».
import RPI.GPIO as GPIO
le permite importar el contenido del módulo RPI.GPIO y le permite usar el GPIO
palabra clave para llamar a una función relacionada con RPI.GPIO
.
Por otro lado, from time import sleep
le permite importar el sleep()
función del módulo de tiempo integrado de Python. Esto le permite retrasar la siguiente línea de código durante un número determinado de segundos.
Comandos de configuración
Algún código tiene que ser «configurado» o definido de tal manera porque es usado por otro código para hacer una lógica compleja. Llamaremos a estos comandos de configuración.
A diferencia de los comandos de importación, los comandos de configuración no “importan” código de módulos externos. Los importan de los módulos que ya has importado.
Como ejemplo, GPIO.setwarnings(False)
importa el .setwarnings()
función de la RPI.GPIO
módulo, que anteriormente se definió como GPIO
. Esta función detiene una advertencia de activación cuando ejecuta el código. está configurado para True
por defecto.
Para explicar los otros dos, continuamos con GPIO.setmode(GPIO.BOARD)
. eso dice RPI.GPIO
qué tipo de pinout vas a usar. Hay dos tipos: BOARD y BCM. El pinout BOARD le permite elegir pines en función de sus números. Mientras tanto, el pinout de BCM se basa en su designación de canal SOC de Broadcomm. Para abreviar, BOARD es más fácil de usar porque siempre es el mismo sin importar qué modelo de Raspberry Pi use. BCM, por otro lado, tiende a ser diferente de un modelo a otro.
Por último, tenemos GPIO.setup(7, GPIO.OUT, initial=GPIO.LOW)
que usa el .setup()
función, que le pregunta tres cosas: el número de pin, su designación y su valor inicial. El número de pin que estamos usando aquí es el número de pin 7. Se supone que debemos configurarlo en un pin de salida y asegurarnos de que comience como LOW
. Sin esto, la Raspberry Pi nunca sabrá qué hacer con el pin 7.
Comandos en bucle
Esta es la parte genial. Los comandos en bucle le permiten decirle a la Raspberry Pi que haga cosas. Empezamos este ciclo con while True:
que repite las siguientes líneas de código para siempre.
Había tres funciones en el ciclo: GPIO.output()
, print()
y sleep()
.
GPIO.output()
toma un pin de salida y lo establece enHIGH
oLOW
. Si pensó en cambiar qué pin usar en su Raspberry Pi, entonces debería haber cambiado7
con un número pin de su elección.print()
hace que imprima algo en la consola. Toma una cadena, número o variable que contiene los dos anteriores.sleep()
pausa todo el programa durante un cierto número de segundos. Use un número menor que 1 para hacer una pausa de menos de un segundo.
El circuito
Ahora que sabe cómo funciona el código, echemos un vistazo al circuito. El código crea un circuito conectando el pin 7 a GND. Cuando el pin 7 está encendido HIGH
, emite 3.3V que pasa a través de la resistencia y el LED, luego ingresa a GND. Esto se convierte en un circuito completo y es por eso que el LED se enciende.
Izquierda: circuito esquemático cuando el pin 7 está encendido
HIGH
. Derecha: circuito esquemático cuando el pin 7 está encendido LOW
.
Pero, ¿qué sucede cuando el pin 7 está bajo? Los 3.3V bajan a alrededor de 0V. De esta manera, no pasa electricidad a través del LED, por lo que no se enciende. Puede pensar en el pin 7 como una especie de interruptor, ya que enciende o apaga el circuito.
¡Hagamos que parpadeen más LED!
Ahora que sabe lo que hace que las cosas funcionen, modifiquemos un poco nuestro código para que ejecute dos LED.
Para esto, solo necesitará agregar dos LED más de cualquier color y dos resistencias más de 250Ω.
- Abra su editor de código nuevamente y pegue 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 on @ pin 7") print("LED off @ pin 12") sleep(1) GPIO.output(7, GPIO.LOW) GPIO.output(12, GPIO.HIGH) print("LED off @ pin 7") print("LED on @ pin 12") sleep(1) if x == 1: GPIO.output(37, GPIO.HIGH) print("LED on @ pin 37") x = 0 elif x == 0: GPIO.output(37, GPIO.LOW) print("LED off @ pin 37") x = 1 else: print("Logic Error") sleep(1)
- Guarde y luego apague su Raspberry Pi.
- Para cablear el circuito, por cada LED que tenga, conéctelo a una resistencia en serie, luego conecte el lado del cátodo a la Raspberry Pi. Debe haber uno para el pin 7, otro para el pin 12 y el último para el pin 37. El lado del ánodo debe estar conectado a GND. Cada uno de estos pines tiene un pin GND al lado. Esos deberían ser los pines 9, 20 y 39.
Propina: Si se queda sin cable de puente de macho a hembra, puede pegar un cable de puente de macho a macho a uno de hembra a hembra para formar un cable de puente más largo de macho a hembra.
Arriba: cable de puente macho a macho, abajo: cable de puente hembra a hembra.
- Una vez que haya terminado, encienda la Raspberry Pi y repita el paso 6 para iniciar el script de Python.
Preguntas frecuentes
¿Por qué mi LED permanece abierto cuando detengo el script?
Cuando Raspberry Pi lee el script de Python, lee la línea antes de ejecutar el comando. Probablemente lo detuviste justo después de leer la línea. GPIO.output(7, GPIO.HIGH)
, por lo que no pudo llevar el pin a BAJO primero. Puede dejarlo como está, ya que volverá a BAJO la próxima vez que reinicie. Alternativamente, cree otra secuencia de comandos de Python que cambie el pin a BAJO tan pronto como se ejecute.
Coloqué mi LED en el pin correcto, pero no se enciende en absoluto. ¿Por qué?
Hay dos posibles razones: o tu LED está roto o pones el cátodo en el lado opuesto. Intente girar los pines del LED primero.
¿Es seguro colocar el LED al revés?
Sí. Puede colocarlo opuesto, y la corriente simplemente no pasará. Es un rasgo especial entre los diodos, incluso los diodos emisores de luz, que permiten que la electricidad pase por un lado y no por el otro.
¿Es seguro cambiar la posición del LED mientras la Raspberry Pi está encendida?
Si solo está girando el LED en la dirección opuesta, entonces está bien y no hay daño allí. Pero si va a colocar el LED en todas partes, existe la posibilidad de que pueda acortar el pin de 5v a un pin GPIO. Eso va a romper tu tablero.
Danos tu opinión