.. 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.3_js:
1.1.3 Gráfico de Barras de LED
===================================
Introducción
----------------
En este proyecto, iluminaremos secuencialmente las luces en el Gráfico de Barras de LED.
Componentes Necesarios
--------------------------------
En este proyecto, necesitamos los siguientes componentes.
.. image:: img/list_led_bar.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 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_bar_graph`
- \-
Diagrama Esquemático
-------------------------
.. image:: img/schematic_led_bar.png
Procedimientos Experimentales
------------------------------
**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**: Ve a la carpeta del código.
.. raw:: html
.. code-block::
cd ~/raphael-kit/nodejs/
**Paso 3**: Compila el código.
.. raw:: html
.. code-block::
sudo node led_bar_graph.js
Después de ejecutar el código, verás que los LED en el gráfico de barras 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];
Debido a que el gráfico de barras de LED utilizará múltiples pines, creamos una constante array ``pins`` para almacenarlos en lotes.
.. code-block:: js
var leds = [];
for (let i = 0; i < pins.length; i++) {
leds[i] = new Gpio(pins[i], { mode: Gpio.OUTPUT });
}
Instancia estos pines como objetos leds con 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 hacer que los LEDs en los
dígitos impares del gráfico de barras de LED se iluminen.
.. 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 hacer que los LEDs en los
dígitos pares del gráfico de barras de LED se iluminen.
.. 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 se cambia cada 500ms.
Imagen del Fenómeno
---------------------------
.. image:: img/image67.jpeg