.. note::
¡Hola! Bienvenido a la Comunidad de Entusiastas de SunFounder para Raspberry Pi, Arduino y ESP32 en Facebook. Sumérgete en el apasionante 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.
1.1.1 LED Intermitente
=========================
Introducción
---------------
En este proyecto, aprenderemos a hacer parpadear un LED mediante programación.
Con tus ajustes, el LED puede producir una serie de efectos interesantes. ¡Adelante, inténtalo!
Componentes
--------------
.. image:: img/blinking_led_list.png
:width: 800
:align: center
Diagrama del Circuito
-------------------------
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 la Raspberry Pi. Por lo tanto, para encender un LED, necesitamos
poner el GPIO17 en nivel bajo (0V). Podemos lograr este efecto mediante programación.
.. image:: img/image48.png
:width: 800
:align: center
Procedimiento Experimental
------------------------------
**Paso 1:** Construye el circuito.
.. image:: img/image49.png
:width: 800
:align: center
**Paso 2:** Dirígete a la carpeta del código.
.. raw:: html
.. code-block::
cd ~/davinci-kit-for-raspberry-pi/nodejs/
.. note::
Cambia de directorio a la ruta del código de este experimento usando ``cd``.
**Paso 3:** Ejecuta el código
.. raw:: html
.. code-block::
sudo node blink.js
.. note::
Aquí ``sudo`` significa superusuario y ``node`` indica ejecutar el archivo con Node.js.
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. 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 abre el
archivo de código ``blink.js`` con esta herramienta.
Presiona ``Ctrl+X`` para salir. Si has modificado el código, aparecerá una
indicación preguntando si deseas guardar los cambios. Escribe ``Y`` (guardar) o
``N`` (no guardar).
Luego, presiona ``Enter`` para salir. Vuelve a escribir ``nano blink.js`` para ver los cambios realizados.
**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 flecha específica de JavaScript:
.. 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`` y define una
constante ``Gpio`` que representa este constructor.
Con este constructor, podemos usar JavaScript para controlar dispositivos
electrónicos. ``pigpio`` se utiliza para implementar GPIO rápido, PWM,
control de servos, notificación de cambios de estado y manejo de interrupciones.
* `pigpio - github `_
.. A wrapper for the pigpio C library to enable fast GPIO, PWM, servo control,
.. state change notification and interrupt handling with JS on the Raspberry Pi Zero,
.. 1, 2, 3 or 4.
.. code-block:: js
const led = new Gpio(17,{mode: Gpio.OUTPUT});
La palabra clave ``new`` se utiliza para construir objetos instanciados de la clase.
Conecta el LED al GPIO17 de la placa de expansión en forma de T, configura el modo
``LedPin`` en salida y asígnalo a la constante ``led``. Esto construye un objeto GPIO17
``led`` en modo de salida.
Hay dos maneras 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 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 operación del LED con un período de 300ms.
* `setInerval `_
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 flecha para hacerlo más conciso.
* `Arrow Functions `_
Imagen del Fenómeno
----------------------
.. image:: img/image54.jpeg
:width: 800
:align: center