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
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.
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 |
Procedimientos Experimentales
Paso 1: Construir el circuito.
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
Esta sección importa las bibliotecas necesarias.
gpiozeroes para controlar los LEDs,ADC0834para la interfaz con el módulo ADC ytimepara operaciones relacionadas con el tiempo.#!/usr/bin/env python3 from gpiozero import LED import ADC0834 import time
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]
Inicializa el módulo ADC0834 para la conversión de analógico a digital.
# Configura el módulo ADC0834 ADC0834.setup()
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()
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))
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()