.. note::
¡Hola! Bienvenido a la Comunidad de Entusiastas de Raspberry Pi, Arduino y ESP32 de SunFounder en Facebook. Profundiza 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.
- **Vistas Exclusivas**: Accede anticipadamente a anuncios de nuevos productos y adelantos.
- **Descuentos Especiales**: Disfruta de descuentos exclusivos en nuestros productos más recientes.
- **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.
1.1.3 LED de Barra
========================
Introducción
---------------
En este proyecto, iluminaremos secuencialmente las luces del LED de barra.
Componentes
--------------
.. image:: img/list_led_bar.png
Principio
-----------
**LED de Barra**
Un LED de barra es un arreglo de LEDs que se utiliza para conectar con un
circuito electrónico o un microcontrolador. Es fácil conectar un LED de
barra con el circuito, como si se conectaran 10 LEDs individuales con
10 pines de salida. Generalmente, podemos usar el LED de barra como indicador
de nivel de batería, en equipos de audio y en paneles de control industriales.
Existen muchas otras aplicaciones para los LED de barra.
.. image:: img/led_bar_sche.png
Diagrama Esquemático
----------------------
============ ======== ======== ===
T-Board Name physical wiringPi BCM
GPIO17 Pin 11 0 17
GPIO18 Pin 12 1 18
GPIO27 Pin 13 2 27
GPIO22 Pin 15 3 22
GPIO23 Pin 16 4 23
GPIO24 Pin 18 5 24
GPIO25 Pin 22 6 25
SDA1 Pin 3 8 2
SCL1 Pin 5 9 3
SPICE0 Pin 24 10 8
============ ======== ======== ===
.. image:: img/schematic_led_bar.png
Procedimientos Experimentales
-------------------------------
**Paso 1:** Construir el circuito.
.. image:: img/image66.png
:width: 800
**Paso 2:** Ir a la carpeta del código.
.. raw:: html
.. code-block::
cd ~/davinci-kit-for-raspberry-pi/c/1.1.3/
**Paso 3:** Compilar el código.
.. raw:: html
.. code-block::
gcc 1.1.3_LedBarGraph.c -lwiringPi
**Paso 4:** Ejecutar el archivo ejecutable.
.. raw:: html
.. code-block::
sudo ./a.out
Después de que el código se ejecute, verás que los LEDs de la barra se
encienden y apagan regularmente.
.. note::
Si no funciona después de ejecutarlo, o si aparece un mensaje de error: \"wiringPi.h: No such file or directory", consulta :ref:`faq_c_nowork`.
**Código**
.. code-block:: c
#include
#include
int pins[10] = {0,1,2,3,4,5,6,8,9,10};
void oddLedBarGraph(void){
for(int i=0;i<5;i++){
int j=i*2;
digitalWrite(pins[j],HIGH);
delay(300);
digitalWrite(pins[j],LOW);
}
}
void evenLedBarGraph(void){
for(int i=0;i<5;i++){
int j=i*2+1;
digitalWrite(pins[j],HIGH);
delay(300);
digitalWrite(pins[j],LOW);
}
}
void allLedBarGraph(void){
for(int i=0;i<10;i++){
digitalWrite(pins[i],HIGH);
delay(300);
digitalWrite(pins[i],LOW);
}
}
int main(void)
{
if(wiringPiSetup() == -1){ //si la inicialización de wiring falla, imprime mensaje en pantalla
printf("setup wiringPi failed !");
return 1;
}
for(int i=0;i<10;i++){ //configura los pines del LED como salida
pinMode(pins[i], OUTPUT);
digitalWrite(pins[i],LOW);
}
while(1){
oddLedBarGraph();
delay(300);
evenLedBarGraph();
delay(300);
allLedBarGraph();
delay(300);
}
return 0;
}
**Explicación del Código**
.. code-block:: c
int pins[10] = {0,1,2,3,4,5,6,8,9,10};
Se crea un arreglo y se le asigna el número de pines correspondiente al
LED de barra (0,1,2,3,4,5,6,8,9,10) y el arreglo se usará para controlar el LED.
.. code-block:: c
void oddLedBarGraph(void){
for(int i=0;i<5;i++){
int j=i*2;
digitalWrite(pins[j],HIGH);
delay(300);
digitalWrite(pins[j],LOW);
}
}
Permite que el LED en los dígitos impares del LED de barra se encienda uno tras otro.
.. code-block:: c
void evenLedBarGraph(void){
for(int i=0;i<5;i++){
int j=i*2+1;
digitalWrite(pins[j],HIGH);
delay(300);
digitalWrite(pins[j],LOW);
}
}
Hace que el LED en los dígitos pares del LED de barra se encienda uno tras otro.
.. code-block:: c
void allLedBarGraph(void){
for(int i=0;i<10;i++){
digitalWrite(pins[i],HIGH);
delay(300);
digitalWrite(pins[i],LOW);
}
}
Permite que todos los LEDs en el LED de barra se enciendan uno por uno.