Tutorial Raspberry Pi GPIO RGB Led + Botón



En este tutorial aprenderemos cómo controlar un LED RGB con un botón. 

Materiales:

- Raspberry Pi con Raspbian o similar

- RGB LED

- Botón

- 4 resistencias 1K

- 5 cables macho/hembra y 2 cables macho/macho

- Placa de pruebas

El código para controlar el display 7 LED es:

import RPi.GPIO as GPIO


def next_rgb_color(r_pin, g_pin, b_pin, data):
    led_colors = [(1, 0, 0), (1, 0, 1), (0, 0, 1),
                  (0, 1, 1), (0, 1, 0), (1, 1, 0)]
    GPIO.output([r_pin, g_pin, b_pin], led_colors[data['index']])
    data['index'] += 1  # Incrementamos el index
    if data['index'] >= len(led_colors):  # Si el index está fuera de rango
        data['index'] = 0  # Empezamos desde cero


R_PIN = 11 
G_PIN = 13
B_PIN = 15
BUTTON_PIN = 12
data = {'index': 0}  # Creamos un diccionario porque es mutable
GPIO.setmode(GPIO.BOARD)  # Configuramos el modo GPIO a BOARD para usar el número de PIN
GPIO.setup(R_PIN, GPIO.OUT, initial=0)  # Preparamos el pin rojo
GPIO.setup(G_PIN, GPIO.OUT, initial=0)  # Preparamos el pin verde
GPIO.setup(B_PIN, GPIO.OUT, initial=0)  # Preparamos el pin azul
GPIO.setup(BUTTON_PIN, GPIO.IN, pull_up_down=GPIO.PUD_UP)  # Preparamos el pin del botón

# Usamos una función lambda para pasar los parámetros
btn_function = lambda x: next_rgb_color(R_PIN, G_PIN, B_PIN, data)

# Preparamos un evento cuando el botón esté RISING
GPIO.add_event_detect(BUTTON_PIN, GPIO.RISING,
                      callback=btn_function,
                      bouncetime=300)

raw_input("Exit script by pressing enter")

GPIO.cleanup()  # Clear GPIO

Aquí podemos ver el circuito del LED RGB y el botón:

circuit_rgb_btn.png

Aquí dejo un video explicativo para ver cómo montar el circuito y ejecutar el código en la Raspberry:

 

Recuerda! El modo del GPIO que utilizo es GPIO.BOARD lo que significa que siempre que hago referencia a los pines utilizo el número de PIN. Si en lugar de utilizar el GPIO en modo BOARD quieres utilizarlo en modo BCM, tendrás que convertir el número de PIN en el número de GPIO usando este esquema: Raspberry Pi: Esquema GPIO

  1. Avatar anonymous says:

    THANK YOU!!! EXACTLY what I needed.

Dejar un comentario

Tienes que esperar para comentar otra vez. Tiempo de espera: