Nota

¡Hola! Bienvenido a la comunidad de entusiastas de SunFounder Raspberry Pi, Arduino y ESP32 en Facebook. Sumérgete en el mundo de Raspberry Pi, Arduino y ESP32 junto a otros apasionados.

¿Por qué unirse?

  • Soporte experto: Resuelve problemas posventa 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: Accede de forma anticipada a anuncios de nuevos productos y adelantos.

  • Descuentos especiales: Disfruta de descuentos exclusivos en nuestros productos más recientes.

  • Promociones y sorteos festivos: Participa en sorteos y promociones de temporada.

👉 ¿Listo para explorar y crear con nosotros? Haz clic en [Aquí] y únete hoy mismo.

1.1.3 Barra de LEDs

Introducción

En este proyecto, iluminaremos secuencialmente las luces de la barra de LEDs.

Componentes

_images/list_led_bar.png

Principio

Barra de LEDs

La barra de LEDs es un conjunto de LEDs que se conecta a un circuito electrónico o microcontrolador. Es similar a conectar 10 LEDs individuales a 10 pines de salida. Generalmente, se puede utilizar como indicador de nivel de batería, en equipos de audio y en paneles de control industrial, entre otras aplicaciones.

_images/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

_images/schematic_led_bar.png

Procedimientos Experimentales

Paso 1: Construye el circuito.

_images/image66.png

Para Usuarios de Lenguaje C

Paso 2: Ve a la carpeta del código.

cd ~/davinci-kit-for-raspberry-pi/c/1.1.3/

Paso 3: Compila el código.

gcc 1.1.3_LedBarGraph.c -lwiringPi

Paso 4: Ejecuta el archivo compilado.

sudo ./a.out

Después de ejecutar el código, verás cómo los LEDs de la barra se encienden y apagan de forma regular.

Nota

Si el código no funciona después de ejecutarlo, o aparece un mensaje de error como "wiringPi.h: No such file or directory", consulta c code is not working?.

Código

#include <wiringPi.h>
#include <stdio.h>

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 de LED en modo 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

int pins[10] = {0,1,2,3,4,5,6,8,9,10};

Crea un arreglo y asígnale los números de los pines correspondientes a la barra de LEDs (0,1,2,3,4,5,6,8,9,10). Este arreglo se utilizará para controlar los LEDs.

void oddLedBarGraph(void){
    for(int i=0;i<5;i++){
        int j=i*2;
        digitalWrite(pins[j],HIGH);
        delay(300);
        digitalWrite(pins[j],LOW);
    }
}

Enciende los LEDs en las posiciones impares de la barra de LEDs uno por uno.

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);
    }
}

Enciende los LEDs en las posiciones pares de la barra de LEDs uno por uno.

void allLedBarGraph(void){
    for(int i=0;i<10;i++){
        digitalWrite(pins[i],HIGH);
        delay(300);
        digitalWrite(pins[i],LOW);
    }
}

Enciende los LEDs de la barra de LEDs uno a uno.

Para Usuarios de Lenguaje Python

Paso 2: Dirígete a la carpeta del código.

cd ~/davinci-kit-for-raspberry-pi/python/

Paso 3: Ejecuta el archivo.

sudo python3 1.1.3_LedBarGraph.py

Después de ejecutar el código, verás que los LEDs en la barra se encienden y apagan regularmente.

Código

Nota

Puedes Modificar/Restablecer/Copiar/Ejecutar/Detener el código a continuación. Antes de eso, asegúrate de estar en la ruta de código fuente, como davinci-kit-for-raspberry-pi/python.

import RPi.GPIO as GPIO
import time

ledPins = [11, 12, 13, 15, 16, 18, 22, 3, 5, 24]

def oddLedBarGraph():
    for i in range(5):
        j = i*2
        GPIO.output(ledPins[j],GPIO.HIGH)
        time.sleep(0.3)
        GPIO.output(ledPins[j],GPIO.LOW)

def evenLedBarGraph():
    for i in range(5):
        j = i*2+1
        GPIO.output(ledPins[j],GPIO.HIGH)
        time.sleep(0.3)
        GPIO.output(ledPins[j],GPIO.LOW)

def allLedBarGraph():
    for i in ledPins:
        GPIO.output(i,GPIO.HIGH)
        time.sleep(0.3)
        GPIO.output(i,GPIO.LOW)

def setup():
    GPIO.setwarnings(False)
    GPIO.setmode(GPIO.BOARD)        # Numeración física de pines GPIO
    for i in ledPins:
        GPIO.setup(i, GPIO.OUT)     # Configura todos los pines de ledPins como salida
        GPIO.output(i, GPIO.LOW)    # Configura todos los pines de ledPins en bajo (+3.3V) para apagar el LED

def loop():
    while True:
        oddLedBarGraph()
        time.sleep(0.3)
        evenLedBarGraph()
        time.sleep(0.3)
        allLedBarGraph()
        time.sleep(0.3)

def destroy():
    for pin in ledPins:
        GPIO.output(pin, GPIO.LOW)  # Apaga todos los LEDs
    GPIO.cleanup()                  # Libera los recursos

if __name__ == '__main__':          # Inicio del programa
    setup()
    try:
        loop()
    except KeyboardInterrupt:       # Cuando se presiona 'Ctrl+C', se ejecuta destroy()
        destroy()

Explicación del Código

ledPins = [11, 12, 13, 15, 16, 18, 22, 3, 5, 24] Crea un arreglo y asígnale los números de los pines correspondientes a la barra de LEDs (11, 12, 13, 15, 16, 18, 22, 3, 5, 24). Este arreglo se utilizará para controlar los LEDs.

def oddLedBarGraph():
    for i in range(5):
        j = i*2
        GPIO.output(ledPins[j],GPIO.HIGH)
        time.sleep(0.3)
        GPIO.output(ledPins[j],GPIO.LOW)

Enciende los LEDs en las posiciones impares de la barra de LEDs uno por uno.

def evenLedBarGraph():
    for i in range(5):
        j = i*2+1
        GPIO.output(ledPins[j],GPIO.HIGH)
        time.sleep(0.3)
        GPIO.output(ledPins[j],GPIO.LOW)

Enciende los LEDs en las posiciones pares de la barra de LEDs uno por uno.

def allLedBarGraph():
    for i in ledPins:
        GPIO.output(i,GPIO.HIGH)
        time.sleep(0.3)
        GPIO.output(i,GPIO.LOW)

Enciende los LEDs de la barra de LEDs uno a uno.

Imagen del Fenómeno

_images/image67.jpeg