Nota

¡Hola! Bienvenido a la comunidad de entusiastas de SunFounder Raspberry Pi, Arduino y ESP32 en Facebook. Únete a otros entusiastas y explora más a fondo Raspberry Pi, Arduino y ESP32.

¿Por qué unirse?

  • Soporte de expertos: 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 adelantos.

  • 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 [Aquí] y únete hoy mismo.

3.1.5 Indicador de Batería

Nota

../_images/mcp3008_and_adc0834.jpg

Dependiendo de la versión de tu kit, identifica si tienes ADC0834 o MCP3008 y procede con la sección correspondiente.

Introducción

En este proyecto, crearemos un dispositivo de indicador de batería que muestra visualmente el nivel de batería en el Bargraph LED.

Componentes Necesarios

En este proyecto, necesitamos los siguientes componentes.

../_images/4.1.11_battery_indicator_list.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

GPIO25

Pin 22

6

25

GPIO12

Pin 32

26

12

GPIO16

Pin 36

27

16

GPIO20

Pin 38

28

20

GPIO21

Pin 40

29

21

GPIO5

Pin 29

21

5

GPIO6

Pin 31

22

6

GPIO13

Pin 33

23

13

GPIO19

Pin 35

24

19

GPIO26

Pin 37

25

26

../_images/4.1.11_battery_indicator_schematic.png

Procedimientos Experimentales

Paso 1: Construir el circuito.

../_images/4.1.11_battery_indicator_circuit.png

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

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

Paso 3: Ejecutar el archivo ejecutable.

sudo python3 3.1.5_BatteryIndicator.py

Después de ejecutar el programa, conecta un cable desde el tercer pin del ADC0834 y otro desde el GND, y dirígelos a los dos polos de una batería. Verás que el LED correspondiente en el Bargraph LED se ilumina para mostrar el nivel de carga (rango de medición: 0-5V).

Advertencia

Si aparece el error RuntimeError: Cannot determine SOC peripheral base address, consulta Si gpiozero no funciona.

Código

Nota

Puedes Modificar/Restablecer/Copiar/Ejecutar/Detener el código a continuación. Pero antes, debes ir a la ruta del código fuente, como davinci-kit-for-raspberry-pi/python-pi5. Después de modificar el código, puedes ejecutarlo directamente para ver el efecto.

#!/usr/bin/env python3
from gpiozero import LED
import ADC0834
import time

# Lista de pines GPIO a los que están conectados los LEDs
ledPins = [25, 12, 16, 20, 21, 5, 6, 13, 19, 26]
# Inicializa objetos LED para cada pin en la lista
leds = [LED(pin) for pin in ledPins]

# Configura el módulo ADC0834
ADC0834.setup()

def LedBarGraph(value):
    # Apaga todos los LEDs
    for i in range(10):
        leds[i].off()
    # Enciende LEDs hasta el valor especificado
    for i in range(value):
        leds[i].on()

try:
    # Bucle principal para actualizar continuamente el gráfico de barras de LEDs
    while True:
        # Lee el valor analógico del ADC0834
        analogVal = ADC0834.getResult()
        # Convierte el valor analógico al nivel del gráfico de barras LED
        LedBarGraph(int(analogVal/25))
except KeyboardInterrupt:
    # Apaga todos los LEDs cuando se interrumpe el programa
    for i in range(10):
        leds[i].off()

Explicación del Código

  1. Esta sección importa las bibliotecas necesarias. gpiozero es para controlar los LEDs, ADC0834 para la interfaz con el módulo ADC y time para operaciones relacionadas con el tiempo.

    #!/usr/bin/env python3
    from gpiozero import LED
    import ADC0834
    import time
    
  2. Define los pines GPIO a los que están conectados los LEDs e inicializa una matriz de objetos LED para cada pin, lo que permite un control fácil de cada LED en la matriz.

    # Lista de pines GPIO a los que están conectados los LEDs
    ledPins = [25, 12, 16, 20, 21, 5, 6, 13, 19, 26]
    # Inicializa objetos LED para cada pin en la lista
    leds = [LED(pin) for pin in ledPins]
    
  3. Inicializa el módulo ADC0834 para la conversión de analógico a digital.

    # Configura el módulo ADC0834
    ADC0834.setup()
    
  4. Esta función apaga todos los LEDs y luego enciende un número de LEDs basado en el valor de entrada, creando efectivamente una representación gráfica de barras.

    def LedBarGraph(value):
        # Apaga todos los LEDs
        for i in range(10):
            leds[i].off()
        # Enciende LEDs hasta el valor especificado
        for i in range(value):
            leds[i].on()
    
  5. Lee continuamente el valor analógico del ADC0834 y actualiza el gráfico de barras de LEDs según este valor. El valor analógico se reduce a un rango de 0-10 para los 10 LEDs.

    try:
        # Bucle principal para actualizar continuamente el gráfico de barras LED
        while True:
            # Lee el valor analógico del ADC0834
            analogVal = ADC0834.getResult()
            # Convierte el valor analógico al nivel del gráfico de barras LED
            LedBarGraph(int(analogVal/25))
    
  6. Asegura que todos los LEDs se apaguen cuando se interrumpe el programa (por ejemplo, al presionar Ctrl+C).

    except KeyboardInterrupt:
        # Apaga todos los LEDs cuando se interrumpe el programa
        for i in range(10):
            leds[i].off()