.. note::
¡Hola, bienvenido a la comunidad de entusiastas de SunFounder Raspberry Pi, Arduino y ESP32 en Facebook! Sumérgete más profundamente en Raspberry Pi, Arduino y ESP32 con otros entusiastas.
**¿Por qué unirse?**
- **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.
- **Vistas previas exclusivas**: Obtén acceso anticipado a anuncios de nuevos productos y avances.
- **Descuentos especiales**: Disfruta de descuentos exclusivos en nuestros productos más recientes.
- **Promociones festivas y sorteos**: Participa en sorteos y promociones de temporada.
👉 ¿Listo para explorar y crear con nosotros? Haz clic en [|link_sf_facebook|] y únete hoy mismo!
.. _1.1.1_js:
1.1.1 LED Parpadeante
=========================
Introducción
-----------------
En este proyecto, aprenderemos a hacer parpadear un LED mediante programación.
A través de tus configuraciones, tu LED puede producir una serie de fenómenos interesantes.
¡Ahora, adelante!
Componentes Necesarios
------------------------------
En este proyecto, necesitamos los siguientes componentes.
.. image:: img/blinking_led_list.png
:width: 800
:align: center
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 DEL 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|
Diagrama Esquemático
---------------------------
En este experimento, conecta una resistencia de 220Ω al ánodo (la pata larga del LED),
luego la resistencia a 3.3 V, y conecta el cátodo (la pata corta) del LED a GPIO17 de
Raspberry Pi. Por lo tanto, para encender un LED, necesitamos hacer que GPIO17 esté en
nivel bajo (0V). Podemos obtener este fenómeno mediante programación.
.. image:: img/image48.png
:width: 800
:align: center
Procedimientos Experimentales
-----------------------------------
**Paso 1:** Construye el circuito.
.. image:: img/image49.png
:width: 800
:align: center
**Paso 2:** Ve a la carpeta del código.
.. raw:: html
.. code-block::
cd ~/raphael-kit/nodejs/
.. note::
Cambia el directorio a la ruta del código en este experimento vía ``cd``.
**Paso 3:** Ejecuta el código
.. raw:: html
.. code-block::
sudo node blink.js
.. note::
Aquí sudo significa "superuser do", y python significa ejecutar el archivo con Python.
Después de ejecutar el código, verás que el LED parpadea.
**Paso 4:** Si deseas editar el archivo de código blink.js,
presiona ``Ctrl + C`` para detener la ejecución del código. Luego escribe el siguiente
comando para abrir blink.js:
.. raw:: html
.. code-block::
nano blink.js
.. note::
nano es una herramienta de edición de texto. El comando se usa para abrir el
archivo de código blink.js con esta herramienta.
Presiona ``Ctrl+X`` para salir. Si has modificado el código, aparecerá un
mensaje preguntando si deseas guardar los cambios o no. Escribe ``Y`` (guardar)
o ``N`` (no guardar).
Luego presiona ``Enter`` para salir. Escribe nano blink.js nuevamente para
ver el efecto después del cambio.
**Código**
El siguiente es el código del programa:
.. code-block:: js
const Gpio = require('pigpio').Gpio;
const led = new Gpio(17,{mode: Gpio.OUTPUT});
var led_state = 0;
function blink_led(){
led.digitalWrite(led_state);
led_state = !led_state;
}
setInterval(blink_led,300);
Alternativamente, escribe el código como una función de flecha específica de js:
.. code-block:: js
const Gpio = require('pigpio').Gpio;
const led = new Gpio(17,{mode: Gpio.OUTPUT});
var led_state = 0;
setInterval(() => {
led.digitalWrite(led_state);
led_state = !led_state;
}, 300);
**Explicación del Código**
.. code-block:: js
const Gpio = require('pigpio').Gpio;
Importa el constructor Gpio del paquete pigpio de esta manera,
y luego define una constante ``Gpio`` para representar este constructor.
Con una variedad de constructores, podemos usar js para controlar dispositivos electrónicos.
``pigpio`` se puede utilizar para implementar GPIO rápido, PWM, control de servos, notificación de cambios de estado y manejo de interrupciones.
* `pigpio - github `_
.. Una envoltura para la biblioteca C de pigpio que permite un rápido control de GPIO, PWM, servos,
.. notificación de cambios de estado y manejo de interrupciones con JS en la Raspberry Pi Zero,
.. 1, 2, 3 o 4.
.. code-block:: js
const led = new Gpio(17,{mode: Gpio.OUTPUT});
La palabra clave ``new`` se usa para construir objetos instanciados de la clase.
Conecta el LED al GPIO17 de la placa de expansión en forma de T,
establece el modo de LedPin en salida y asígnalo a la constante ``led``,
es decir, construye un objeto GPIO17 ``led``, y su modo es el modo de salida.
Hay dos formas de numerar los pines IO en la Raspberry Pi:
número BOARD y número BCM. En nuestro proyecto, usamos el número BCM.
Necesitas configurar cada canal usado como entrada o salida.
.. code-block:: js
function blink_led(){
led.digitalWrite(led_state);
led_state = !led_state;
}
setInterval(blink_led,300);
El método ``setInterval()`` puede llamar funciones o calcular expresiones con un período especificado (en milisegundos).
Aquí cambiamos el estado de funcionamiento del LED con un período de 300ms.
* `setInterval `_
El método ``gpio.digitalWrite(level)`` establece el nivel del gpio en 1 o 0.
.. code-block:: js
var led_state = 0;
setInterval(() => {
led.digitalWrite(led_state);
led_state = !led_state;
}, 300);
Reescribe el código como una función de flecha para hacerlo más corto.
* `Funciones Flecha `_
Imagen del Fenómeno
-------------------------
.. image:: img/image54.jpeg
:width: 800
:align: center