.. 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.3 Barra de LED
====================
Introducción
---------------
En este proyecto, iluminaremos secuencialmente los LEDs en la barra de LED.
Componentes
--------------
.. image:: img/list_led_bar.png
Diagrama del Circuito
------------------------
.. image:: img/schematic_led_bar.png
Procedimiento Experimental
-----------------------------
**Paso 1**: Construye el circuito.
.. note::
Presta atención a la dirección al conectar. Si lo conectas al revés, no se encenderá.
.. image:: img/image66.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 led_bar_graph.js
Después de ejecutar el código, verás que los LEDs en la barra de LED se encienden y apagan regularmente.
**Código**
.. code-block:: js
const Gpio = require('pigpio').Gpio;
var pins = [17, 18, 27, 22, 23, 24, 25, 2, 3, 8];
var leds = [];
for (let i = 0; i < pins.length; i++) {
leds[i] = new Gpio(pins[i], { mode: Gpio.OUTPUT });
}
function oddLedBarGraph() {
for (let i = 0; i < leds.length; i++) {
if (i % 2 == 1) {
leds[i].digitalWrite(1);
} else {
leds[i].digitalWrite(0);
}
}
}
function evenLedBarGraph() {
for (let i = 0; i < leds.length; i++) {
if (i % 2 == 0) {
leds[i].digitalWrite(1);
} else {
leds[i].digitalWrite(0);
}
};
}
var odd_even = 0;
setInterval(() => {
odd_even = (odd_even + 1) % 2;
if (odd_even == 1) {
oddLedBarGraph();
} else {
evenLedBarGraph();
}
}, 500);
**Explicación del Código**
.. code-block:: js
var pins = [17,18,27,22,23,24,25,2,3,8];
Como la barra de LED usará varios pines, creamos un arreglo constante ``pins`` para almacenarlos en conjunto.
.. code-block:: js
var leds = [];
for (let i = 0; i < pins.length; i++) {
leds[i] = new Gpio(pins[i], { mode: Gpio.OUTPUT });
}
Instanciamos estos pines como objetos leds usando un bucle for.
.. code-block:: js
function oddLedBarGraph() {
for (let i = 0; i < leds.length; i++) {
if (i % 2 == 1) {
leds[i].digitalWrite(1);
} else {
leds[i].digitalWrite(0);
}
}
}
Implementa una función ``oddLedBarGraph()`` para que se enciendan los LEDs
en las posiciones impares de la barra de LED.
.. code-block:: js
function evenLedBarGraph() {
for (let i = 0; i < leds.length; i++) {
if (i % 2 == 0) {
leds[i].digitalWrite(1);
} else {
leds[i].digitalWrite(0);
}
};
}
Implementa una función ``evenLedBarGraph()`` para que se enciendan los LEDs
en las posiciones pares de la barra de LED.
.. code-block:: js
var odd_even = 0;
setInterval(() => {
odd_even = (odd_even + 1) % 2;
if (odd_even == 1) {
oddLedBarGraph();
} else {
evenLedBarGraph();
}
}, 500);
El estado de funcionamiento del LED cambia cada 500ms.
Imagen del Fenómeno
-----------------------
.. image:: img/image67.jpeg