.. note:: ¡Hola! Bienvenido a la Comunidad de Entusiastas de SunFounder para Raspberry Pi, Arduino y ESP32 en Facebook. Sumérgete en el fascinante mundo de Raspberry Pi, Arduino y ESP32 junto a otros entusiastas. **¿Por qué unirte?** - **Soporte Experto**: Resuelve problemas postventa y desafíos técnicos con la ayuda de nuestra comunidad y equipo. - **Aprende y Comparte**: Intercambia consejos y tutoriales para mejorar tus habilidades. - **Avances Exclusivos**: Obtén acceso anticipado a nuevos anuncios de productos y adelantos exclusivos. - **Descuentos Especiales**: Disfruta de descuentos exclusivos en nuestros productos más recientes. - **Promociones Festivas y Sorteos**: Participa en sorteos y promociones especiales de temporada. 👉 ¿Listo para explorar y crear con nosotros? Haz clic en [|link_sf_facebook|] y únete hoy mismo. .. _2.1.1_button_nodejs: 2.1.1 Button =============== Introducción ----------------- En este proyecto, aprenderemos a encender y apagar un LED usando un botón. Componentes --------------- .. image:: ../img/list_2.1.1_Button.png Diagrama del Circuito ------------------------- Usaremos un botón normalmente abierto como entrada para la Raspberry Pi, y la conexión se muestra en el siguiente diagrama. Cuando se presiona el botón, el GPIO18 cambiará a nivel bajo (0V). Podemos detectar el estado del GPIO18 mediante programación: si el GPIO18 está en nivel bajo, significa que el botón está presionado. Así, el código correspondiente puede ejecutarse al presionar el botón, y el LED se encenderá. .. note:: El pin más largo del LED es el ánodo, y el más corto es el cátodo. .. image:: ../img/image302.png .. image:: ../img/image303.png Procedimientos Experimentales ----------------------------------- **Paso 1**: Construye el circuito. .. image:: ../img/image152.png **Paso 2**: Dirígete a la carpeta del código. .. raw:: html .. code-block:: cd ~/davinci-kit-for-raspberry-pi/nodejs/ **Paso 3**: Ejecuta el código. .. raw:: html .. code-block:: sudo node button.js Ahora, presiona el botón, y el LED se encenderá; suelta el botón, y el LED se apagará. **Código** .. code-block:: js const Gpio = require('pigpio').Gpio; const led = new Gpio(17, {mode: Gpio.OUTPUT}); const button = new Gpio(18, { mode: Gpio.INPUT, pullUpDown: Gpio.PUD_DOWN, edge: Gpio.EITHER_EDGE }); button.on('interrupt', (level) => { led.digitalWrite(level); }); **Explicación del Código** .. code-block:: js const Gpio = require('pigpio').Gpio; const led = new Gpio(17, {mode: Gpio.OUTPUT}); Importa el módulo ``pigpio``, crea un objeto led para controlar el puerto IO Gpio17, y configúralo en modo de salida. .. code-block:: js const button = new Gpio(18, { mode: Gpio.INPUT, pullUpDown: Gpio.PUD_DOWN, edge: Gpio.EITHER_EDGE }); Crea un objeto button para controlar el puerto IO Gpio18, configúralo en modo de entrada, con una resistencia pull-down (bajo cuando el botón no está presionado, alto cuando el botón está presionado). Configura la función de interrupción en modo EITHER_EDGE, es decir, tanto los flancos ascendentes como descendentes activarán la función de interrupción. .. code-block:: js button.on('interrupt', (level) => { led.digitalWrite(level); }); Escribe una función de interrupción: cuando el botón se presiona, es un flanco descendente que activa la función de interrupción; en este momento, el nivel bajo del puerto IO del botón se escribe en el puerto IO del LED, y el LED se enciende. Cuando se suelta el botón, es un flanco ascendente que activa la función de interrupción; en este momento, el nivel alto del puerto IO del botón se escribe en el puerto IO del LED, y el LED se apaga. Imagen del Fenómeno ----------------------- .. image:: ../img/image153.jpeg