.. note:: ¡Hola! Bienvenido a la comunidad de entusiastas de SunFounder para Raspberry Pi, Arduino y ESP32 en Facebook. Sumérgete en el mundo de Raspberry Pi, Arduino y ESP32 junto a otros entusiastas. **¿Por qué unirse?** - **Soporte de Expertos**: Resuelve problemas postventa y desafíos técnicos con ayuda de nuestra comunidad y equipo. - **Aprende y Comparte**: Intercambia consejos y tutoriales para mejorar tus habilidades. - **Avances Exclusivos**: 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 especiales por temporadas. 👉 ¿Listo para explorar y crear con nosotros? Haz clic en [|link_sf_facebook|] y únete hoy mismo. 3.1.5 Indicador de Batería ================================ .. note:: .. image:: img/mcp3008_and_adc0834.jpg :width: 25% :align: left 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 curso, crearemos un dispositivo indicador de batería que puede mostrar visualmente el nivel de carga en una barra LED. Componentes ------------ .. image:: img/list_Battery_Indicator.png :align: center Diagrama de 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 ============ ======== ======== === .. image:: img/Schematic_three_one5.png :align: center Procedimientos Experimentales -------------------------------- **Paso 1:** Monta el circuito. .. image:: img/image248.png :alt: indicador_bb :width: 800 :align: center **Para Usuarios de Lenguaje C** ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ **Paso 2:** Dirígete a la carpeta del código. .. raw:: html .. code-block:: cd ~/davinci-kit-for-raspberry-pi/c/3.1.5/ **Paso 3:** Compila el código. .. raw:: html .. code-block:: gcc 3.1.5_BatteryIndicator.c -lwiringPi **Paso 4:** Ejecuta el archivo. .. raw:: html .. code-block:: sudo ./a.out Cuando el programa se ejecute, conecta el pin 3 del ADC0834 y el pin GND de forma separada, luego conéctalos a los dos polos de una batería. Puedes ver que el LED correspondiente en la barra LED se enciende para mostrar el nivel de carga (rango de medición: 0-5V). .. note:: Si el programa no funciona después de ejecutarse, o aparece un error como: \"wiringPi.h: No such file or directory", consulta :ref:`faq_c_nowork`. **Explicación del Código** .. code-block:: c void LedBarGraph(int value){     for(int i=0;i<10;i++){         digitalWrite(pins[i],HIGH);     }     for(int i=0;i .. code-block:: cd ~/davinci-kit-for-raspberry-pi/python/ **Paso 3:** Ejecuta el archivo. .. raw:: html .. code-block:: sudo python3 3.1.5_BatteryIndicator.py Cuando el programa se ejecute, conecta el pin 3 del ADC0834 y el pin GND de forma separada, luego conéctalos a los dos polos de una batería. Podrás ver que el LED correspondiente en la barra LED se enciende para mostrar el nivel de carga (rango de medición: 0-5V). **Código** .. note:: Puedes **Modificar/Restablecer/Copiar/Ejecutar/Detener** el código a continuación. Pero antes de hacerlo, debes ir a la ruta del código fuente como ``davinci-kit-for-raspberry-pi/python``. .. 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: # Cuando se presiona 'Ctrl+C', se ejecutará destroy(). 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 controla el encendido o apagado de los **10** LEDs en la barra de LED. Primero, se establece un nivel alto en los LEDs para apagarlos, y luego se decide 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)) analogVal genera valores (**0-255**) según el voltaje (**0-5V**). Por ejemplo, si se detecta un voltaje de 3V en una batería, el valor correspondiente de **152** se muestra en el voltímetro. Los **10** LEDs de la barra se utilizan para mostrar las lecturas de **analogVal**. 255/10 = 25, por lo tanto, cada vez que el valor analógico aumenta en **25**, se enciende un LED adicional. Por ejemplo, si “analogVal=150” (aproximadamente 3V), se encienden 6 LEDs. Imagen del Fenómeno ---------------------- .. image:: img/image249.jpeg :align: center