.. note::
¡Hola! Bienvenido a la Comunidad de Entusiastas de SunFounder Raspberry Pi, Arduino y ESP32 en Facebook. Sumérgete más en Raspberry Pi, Arduino y ESP32 con otros entusiastas.
**¿Por qué unirse?**
- **Soporte experto**: Resuelve problemas post-venta y desafíos técnicos con la ayuda de nuestra comunidad y equipo.
- **Aprender y compartir**: Intercambia consejos y tutoriales para mejorar tus habilidades.
- **Previsualizaciones exclusivas**: Obtén acceso anticipado a nuevos anuncios de productos y adelantos.
- **Descuentos especiales**: Disfruta de descuentos exclusivos en nuestros productos más nuevos.
- **Promociones festivas y sorteos**: Participa en sorteos y promociones navideñas.
👉 ¿Listo para explorar y crear con nosotros? Haz clic en [|link_sf_facebook|] y únete hoy mismo!
.. _2.1.1_js:
2.1.1 Botón
==================
Introducción
--------------------
En este proyecto, aprenderemos cómo encender o apagar el LED usando un botón.
Componentes Requeridos
------------------------------
En este proyecto, necesitamos los siguientes componentes.
.. image:: ../img/list_2.1.1_Button.png
Es definitivamente conveniente comprar un kit completo, aquí está el enlace:
.. list-table::
:widths: 20 20 20
:header-rows: 1
* - Nombre
- ELEMENTOS EN ESTE KIT
- ENLACE
* - Kit Raphael
- 337
- |link_Raphael_kit|
También puedes comprarlos por separado en los enlaces a continuación.
.. list-table::
:widths: 30 20
:header-rows: 1
* - INTRODUCCIÓN AL COMPONENTE
- ENLACE DE COMPRA
* - :ref:`cpn_gpio_board`
- |link_gpio_board_buy|
* - :ref:`cpn_breadboard`
- |link_breadboard_buy|
* - :ref:`cpn_wires`
- |link_wires_buy|
* - :ref:`cpn_resistor`
- |link_resistor_buy|
* - :ref:`cpn_led`
- |link_led_buy|
* - :ref:`cpn_button`
- |link_button_buy|
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 a través
de la programación. Es decir, si el GPIO18 pasa 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á.
.. note::
La pata más larga del LED es el ánodo y la más corta es el cátodo.
.. image:: ../img/image302.png
.. image:: ../img/image303.png
Procedimientos Experimentales
--------------------------------
**Paso 1**: Construir el circuito.
.. image:: ../img/image152.png
**Paso 2**: Ir a la carpeta del código.
.. raw:: html
.. code-block::
cd ~/raphael-kit/nodejs/
**Paso 3**: Ejecutar 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,
Pull down (bajo cuando el botón no está presionado, alto cuando el botón está presionado).
Y configura la función de interrupción, el modo es EITHER_EDGE, es decir, tanto los bordes ascendentes como los 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 se presiona el botón, es un borde descendente, activando la función de interrupción,
En este momento, escribe el nivel bajo del puerto IO del botón en el puerto IO del led, y el led se enciende.
Cuando se suelta el botón, es un borde ascendente, activando la función de interrupción,
En este momento, escribe el nivel alto del puerto IO del botón en el puerto IO del led, y el led se apaga.
Imagen del Fenómeno
^^^^^^^^^^^^^^^^^^^^
.. image:: ../img/image153.jpeg