.. 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