Nota
¡Hola, bienvenido a la comunidad de entusiastas de SunFounder Raspberry Pi & Arduino & ESP32 en Facebook! Sumérgete más en Raspberry Pi, Arduino y ESP32 con otros entusiastas.
¿Por qué unirte?
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.
Preestrenos Exclusivos: Obtén acceso anticipado a anuncios de nuevos productos y avances exclusivos.
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!
4.1.8 Indicador de Batería
Nota
Dependiendo de la versión de su kit, identifique si tiene ADC0834 o MCP3008 y continúe con la sección correspondiente.
Introducción
En este proyecto, crearemos un dispositivo indicador de batería que puede mostrar visualmente el nivel de la batería en la barra de LED.
Advertencia
No utilices componentes de batería que superen los 3.3V para evitar sobrecargas, lo que puede dañar el chip o la Raspberry Pi.
Componentes Necesarios
En este proyecto, necesitamos los siguientes componentes.
Es definitivamente conveniente comprar un kit completo, aquí está el enlace:
Nombre |
ARTÍCULOS EN ESTE KIT |
ENLACE |
|---|---|---|
Kit Raphael |
337 |
También puedes comprarlos por separado en los enlaces a continuación.
INTRODUCCIÓN DEL COMPONENTE |
ENLACE DE COMPRA |
|---|---|
- |
|
- |
Diagrama Esquemático
Nombre T-Board |
física |
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: Construye el circuito.
Paso 2: Ve a la carpeta del código.
cd ~/raphael-kit/python-pi5
Paso 3: Ejecuta el archivo ejecutable.
sudo python3 4.1.11_BatteryIndicator_zero.py
Después de que el programa se ejecute, conecta un cable de salida desde el 3er pin del ADC0834 y el GND, y luego llévalos a los dos polos de una batería por separado. Podrás ver que el LED correspondiente en la barra de LED se enciende para mostrar el nivel de energía (rango de medición: 0-5V).
Advertencia
Si recibe el mensaje de error RuntimeError: Cannot determine SOC peripheral base address, consulte Si «gpiozero» no funciona.
Código
Nota
Puedes Modificar/Restablecer/Copiar/Ejecutar/Detener el código a continuación. Pero antes de eso, necesitas ir a la ruta del código fuente como raphael-kit/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]
# Inicializar objetos LED para cada pin en la lista
leds = [LED(pin) for pin in ledPins]
# Configurar módulo ADC0834
ADC0834.setup()
def LedBarGraph(value):
# Apagar todos los LEDs
for i in range(10):
leds[i].off()
# Encender LEDs hasta el valor especificado
for i in range(value):
leds[i].on()
try:
# Bucle principal para actualizar continuamente la barra de LEDs
while True:
# Leer valor analógico del ADC0834
analogVal = ADC0834.getResult()
# Convertir valor analógico a nivel de barra de LEDs
LedBarGraph(int(analogVal/25))
except KeyboardInterrupt:
# Apagar 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 interactuar 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 un arreglo de objetos LED para cada pin. Esto permite un control fácil de cada LED en el arreglo.
# Lista de pines GPIO a los que están conectados los LEDs ledPins = [25, 12, 16, 20, 21, 5, 6, 13, 19, 26] # Inicializar 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.
# Configurar 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 de gráfico de barras.
def LedBarGraph(value): # Apagar todos los LEDs for i in range(10): leds[i].off() # Encender LEDs hasta el valor especificado for i in range(value): leds[i].on()
Lee continuamente el valor analógico del ADC0834 y actualiza la barra de LEDs basada en este valor. El valor analógico se escala a un rango de 0-10 para los 10 LEDs.
try: # Bucle principal para actualizar continuamente la barra de LEDs while True: # Leer valor analógico del ADC0834 analogVal = ADC0834.getResult() # Convertir valor analógico a nivel de barra de LEDs LedBarGraph(int(analogVal/25))
Asegura que todos los LEDs estén apagados cuando el programa se interrumpe (por ejemplo, al presionar Ctrl+C).
except KeyboardInterrupt: # Apagar todos los LEDs cuando se interrumpe el programa for i in range(10): leds[i].off()