Nota

Hola, ¡bienvenido a la Comunidad de Entusiastas de SunFounder Raspberry Pi, Arduino y ESP32 en Facebook! Profundiza 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.

  • Previsualizaciones Exclusivas: Obtén acceso anticipado a anuncios de nuevos productos y avances.

  • 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 el 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í está el enlace:

Nombre

ARTÍCULOS EN ESTE KIT

ENLACE

Raphael Kit

337

Raphael Kit

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

INTRODUCCIÓN DE COMPONENTES

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 la entrada de Raspberry Pi, la conexión se muestra en el diagrama esquemático a continuación. Cuando se presiona el botón, el GPIO18 se convertirá en nivel bajo (0V). Podemos detectar el estado del GPIO18 a través de la programación. Es decir, si el GPIO18 se convierte en 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/c/2.1.1/

Nota

Cambia el directorio a la ruta del código en este experimento mediante cd.

Paso 3: Compila el código.

gcc 2.1.1_Button.c -lwiringPi

Paso 4: Ejecuta el archivo ejecutable.

sudo ./a.out

Después de ejecutar el código, presiona el botón, el LED se encenderá; de lo contrario, se apagará.

Nota

Si no funciona después de ejecutarlo, o aparece un mensaje de error: "wiringPi.h: No such file or directory", por favor consulta Instalar y verificar WiringPi.

Código

#include <wiringPi.h>
#include <stdio.h>

#define LedPin      0
#define ButtonPin   1

int main(void){
    // When initialize wiring failed, print message to screen
    if(wiringPiSetup() == -1){
        printf("setup wiringPi failed !");
        return 1;
    }

    pinMode(LedPin, OUTPUT);
    pinMode(ButtonPin, INPUT);
    digitalWrite(LedPin, HIGH);

    while(1){
        // Indicate that button has pressed down
        if(digitalRead(ButtonPin) == 0){
            // Led on
            digitalWrite(LedPin, LOW);
        //  printf("...LED on\n");
        }
        else{
            // Led off
            digitalWrite(LedPin, HIGH);
        //  printf("LED off...\n");
        }
    }
    return 0;
}

Explicación del Código

#define LedPin      0

El pin GPIO17 en la T_Extension Board es equivalente al GPIO0 en wiringPi.

#define ButtonPin   1

ButtonPin está conectado al GPIO1.

pinMode(LedPin, OUTPUT);

Configura LedPin como salida para asignarle un valor.

pinMode(ButtonPin, INPUT);

Configura ButtonPin como entrada para leer el valor de ButtonPin.

while(1){
        // Indicate that button has pressed down
        if(digitalRead(ButtonPin) == 0){
            // Led on
            digitalWrite(LedPin, LOW);
        //  printf("...LED on\n");
        }
        else{
            // Led off
            digitalWrite(LedPin, HIGH);
        //  printf("LED off...\n");
        }
    }

if (digitalRead(ButtonPin) == 0): verifica si el botón ha sido presionado. Ejecuta digitalWrite(LedPin, LOW) cuando el botón está presionado para encender el LED.

La función digitalRead() lee el estado ALTO (nivel alto) o BAJO (nivel bajo) del pin de entrada especificado. Devuelve 1 cuando el pin está en ALTO y devuelve 0 cuando el pin está en BAJO.

La función digitalWrite() escribe ALTO (nivel alto) o BAJO (nivel bajo) en el pin de entrada especificado.

Imagen del Fenómeno

../_images/image153.jpeg