Nota

¡Hola! Bienvenido a la Comunidad de Entusiastas de SunFounder para Raspberry Pi, Arduino y ESP32 en Facebook. Sumérgete más en Raspberry Pi, Arduino y ESP32 con otros entusiastas.

¿Por qué unirte?

  • Soporte experto: Resuelve problemas post-venta y desafíos técnicos con la ayuda de nuestra comunidad y equipo.

  • Aprende y comparte: Intercambia consejos y tutoriales para mejorar tus habilidades.

  • Vistas previas exclusivas: Obtén acceso anticipado a anuncios de nuevos productos y adelantos.

  • Descuentos especiales: Disfruta de descuentos exclusivos en nuestros productos más nuevos.

  • Promociones y sorteos festivos: Participa en sorteos y promociones de temporada.

👉 ¿Listo para explorar y crear con nosotros? Haz clic en [Aquí] y únete hoy mismo!

2.1.1 Botón

Introducción

En este proyecto, aprenderemos cómo encender o apagar un LED usando un botón.

Componentes Necesarios

En este proyecto, necesitamos los siguientes componentes.

../_images/list_2.1.1_Button.png

Es definitivamente conveniente comprar un kit completo, aquí tienes el enlace:

Nombre

ELEMENTOS EN ESTE KIT

ENLACE

Kit Raphael

337

Raphael Kit

También puedes comprarlos por separado en los enlaces a continuación.

INTRODUCCIÓN DEL COMPONENTE

ENLACE DE COMPRA

Placa de Extensión GPIO

COMPRAR

Protoboard

COMPRAR

Cables de Puente

COMPRAR

Resistor

COMPRAR

LED

COMPRAR

Botón

COMPRAR

Diagrama Esquemático

Usa un botón normalmente abierto como entrada para la Raspberry Pi, la conexión se muestra en el diagrama esquemático a continuación. Cuando se presiona el botón, el GPIO18 pasará a nivel bajo (0V). Podemos detectar el estado del GPIO18 mediante programación. Es decir, si el GPIO18 cambia a nivel bajo, significa que el botón está presionado. Puedes ejecutar el código correspondiente cuando se presiona el botón, y luego el LED se encenderá.

Nota

El pin más largo del LED es el ánodo y el más corto es el cátodo.

../_images/image302.png ../_images/image303.png

Procedimientos Experimentales

Paso 1: Construye el circuito.

../_images/image152.png

Paso 2: Abre el archivo de código.

cd ~/raphael-kit/python

Paso 3: Ejecuta el código.

sudo python3 2.1.1_Button.py

Ahora, presiona el botón, y el LED se encenderá; presiona el botón nuevamente, y el LED se apagará. Al mismo tiempo, el estado del LED se imprimirá en la pantalla.

Código

Nota

Puedes Modificar/Restablecer/Copiar/Ejecutar/Detener el código a continuación. Pero antes de eso, necesitas ir a la ruta del código fuente como raphael-kit/python. Después de modificar el código, puedes ejecutarlo directamente para ver el efecto.

import RPi.GPIO as GPIO
import time
LedPin = 17  # Establecer GPIO17 como pin del LED
BtnPin = 18  # Establecer GPIO18 como pin del botón

# Establecer el estado del LED a True(APAGADO)
Led_status = True

# Definir una función de configuración para algunos ajustes
def setup():
    # Establecer los modos GPIO a numeración BCM
    GPIO.setmode(GPIO.BCM)
    # Establecer el modo de LedPin a salida,
    # y nivel inicial a alto (3.3v)
    GPIO.setup(LedPin, GPIO.OUT, initial=GPIO.HIGH)
    # Establecer el modo de BtnPin a entrada,
    # y elevar a alto (3.3V)
    GPIO.setup(BtnPin, GPIO.IN)

# Definir una función de callback para el botón
def swLed(ev=None):
    global Led_status
    # Cambiar el estado del LED(encendido-->apagado; apagado-->encendido)
    Led_status = not Led_status
    GPIO.output(LedPin, Led_status)
    if Led_status:
        print ('LED OFF...')
    else:
        print ('...LED ON')

# Definir una función principal para el proceso principal
def main():
# Configurar una detección de caída en BtnPin,
    # y función de callback para swLed
    GPIO.add_event_detect(BtnPin, GPIO.FALLING, callback=swLed)
    while True:
        # No hacer nada.
        time.sleep(1)

# Definir una función de destrucción para limpiar todo después
# de que el script haya terminado
def destroy():
    # Apagar LED
    GPIO.output(LedPin, GPIO.HIGH)
    # Liberar recursos
    GPIO.cleanup()

# Si ejecutas este script directamente, haz:
if __name__ == '__main__':
    setup()
    try:
        main()
    # Cuando se presiona 'Ctrl+C', el programa
    # destroy() será ejecutado.
    except KeyboardInterrupt:
        destroy()

Explicación del Código

LedPin = 17

Configurar GPIO17 como pin del LED.

BtnPin = 18

Configurar GPIO18 como pin del botón.

GPIO.add_event_detect(BtnPin, GPIO.FALLING, callback=swLed)

Configurar una detección de caída en BtnPin, y cuando el valor de BtnPin cambie de un nivel alto a un nivel bajo, significa que el botón ha sido presionado. El siguiente paso es llamar a la función swLed.

def swLed(ev=None):
global Led_status
# Cambiar el estado del LED (encendido-->apagado; apagado-->encendido)
Led_status = not Led_status
GPIO.output(LedPin, Led_status)

Definir una función de callback como callback del botón. Cuando el botón es presionado por primera vez, y la condición, not Led_status es falsa, se llama a la función GPIO.output() para encender el LED. Cuando el botón se presiona nuevamente, el estado del LED se convertirá de falso a verdadero, por lo tanto, el LED se apagará.

Imagen del Fenómeno

../_images/image153.jpeg