.. note::
¡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 con otros entusiastas.
**¿Por qué unirse?**
- **Soporte experto**: Resuelve problemas postventa y desafíos técnicos con la ayuda de nuestra comunidad y equipo.
- **Aprender y compartir**: Intercambia consejos y tutoriales para mejorar tus habilidades.
- **Avances exclusivos**: Accede anticipadamente a nuevos anuncios de productos y adelantos exclusivos.
- **Descuentos especiales**: Disfruta de descuentos exclusivos en nuestros productos más recientes.
- **Promociones y sorteos festivos**: Participa en sorteos y promociones navideñas.
👉 ¿Listo para explorar y crear con nosotros? Haz clic en [|link_sf_facebook|] y únete hoy mismo.
.. _4.1.11_py:
4.1.11 Indicador de Batería
===============================
.. note::
.. image:: ../img/mcp3008_and_adc0834.jpg
:width: 25%
:align: left
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, haremos un dispositivo indicador de batería que pueda mostrar
visualmente el nivel de la batería en el gráfico de barras LED.
.. warning::
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.
.. image:: ../img/list_Battery_Indicator.png
:align: center
Es muy conveniente comprar un kit completo, aquí está el enlace:
.. list-table::
:widths: 20 20 20
:header-rows: 1
* - Nombre
- ELEMENTOS EN ESTE KIT
- ENLACE
* - Kit Raphael
- 337
- |link_Raphael_kit|
También puedes comprarlos por separado en los enlaces a continuación.
.. list-table::
:widths: 30 20
:header-rows: 1
* - INTRODUCCIÓN DEL COMPONENTE
- ENLACE DE COMPRA
* - :ref:`cpn_gpio_board`
- |link_gpio_board_buy|
* - :ref:`cpn_breadboard`
- |link_breadboard_buy|
* - :ref:`cpn_wires`
- |link_wires_buy|
* - :ref:`cpn_resistor`
- |link_resistor_buy|
* - :ref:`cpn_bar_graph`
- \-
* - :ref:`cpn_adc0834`
- \-
Diagrama Esquemático
------------------------
============== =============== ======== ===
Nombre T-Board cableado físico 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
============== =============== ======== ===
.. image:: ../img/Schematic_three_one5.png
:align: center
Procedimientos Experimentales
----------------------------------
**Paso 1:** Construye el circuito.
.. image:: ../img/image248.png
**Paso 2:** Ve a la carpeta del código.
.. raw:: html
.. code-block::
cd ~/raphael-kit/python/
**Paso 3:** Ejecuta el archivo ejecutable.
.. raw:: html
.. code-block::
sudo python3 4.1.11_BatteryIndicator.py
Después de que el programa se ejecute, conecta un cable al tercer pin del ADC0834
y al GND por separado y luego conéctalos a los dos polos de una batería por separado.
Podrás ver que el LED correspondiente en el gráfico de barras LED se enciende para mostrar
el nivel de energía (rango de medición: 0-5V).
**Código**
.. note::
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``. Después de modificar el código, puedes ejecutarlo directamente para ver el efecto.
.. raw:: html
.. code-block:: python
import RPi.GPIO as GPIO
import ADC0834
import time
ledPins = [25, 12, 16, 20, 21, 5, 6, 13, 19, 26]
def setup():
GPIO.setmode(GPIO.BCM)
ADC0834.setup()
for i in ledPins:
GPIO.setup(i, GPIO.OUT)
GPIO.output(i, GPIO.HIGH)
def LedBarGraph(value):
for i in ledPins:
GPIO.output(i,GPIO.HIGH)
for i in range(value):
GPIO.output(ledPins[i],GPIO.LOW)
def destroy():
GPIO.cleanup()
def loop():
while True:
analogVal = ADC0834.getResult()
LedBarGraph(int(analogVal/25))
if __name__ == '__main__':
setup()
try:
loop()
except KeyboardInterrupt: # When 'Ctrl+C' is pressed, the program destroy() will be executed.
destroy()
**Explicación del Código**
.. code-block:: python
def LedBarGraph(value):
for i in ledPins:
GPIO.output(i,GPIO.HIGH)
for i in range(value):
GPIO.output(ledPins[i],GPIO.LOW)
Esta función sirve para controlar el encendido o apagado de los **10** LEDs en el gráfico
de barras LED. Primero, damos a estos **10** LEDs niveles altos para que estén **apagados**
al principio, luego decidimos cuántos LEDs se encenderán cambiando el valor analógico recibido.
.. code-block:: python
def loop():
while True:
analogVal = ADC0834.getResult()
LedBarGraph(int(analogVal/25))
El valor de analogVal produce valores (**0-255**) con diferentes valores de voltaje (**0-5V**),
por ejemplo, si se detectan 3V en una batería, el valor correspondiente **152** se muestra en el
voltímetro.
Los **10** LEDs en el gráfico de barras LED se utilizan para mostrar las lecturas de **analogVal**
. 255/10=25, por lo que cada **25** que aumenta el valor analógico, se enciende un LED más, por
ejemplo, si “analogVal=150 (aproximadamente 3V), se encienden 6 LEDs.”
Imagen del Fenómeno
------------------------------
.. image:: ../img/image249.jpeg
:align: center