.. note:: Hello, welcome to the SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasts Community on Facebook! Dive deeper into Raspberry Pi, Arduino, and ESP32 with fellow enthusiasts. **Why Join?** - **Expert Support**: Solve post-sale issues and technical challenges with help from our community and team. - **Learn & Share**: Exchange tips and tutorials to enhance your skills. - **Exclusive Previews**: Get early access to new product announcements and sneak peeks. - **Special Discounts**: Enjoy exclusive discounts on our newest products. - **Festive Promotions and Giveaways**: Take part in giveaways and holiday promotions. 👉 Ready to explore and create with us? Click [|link_sf_facebook|] and join today! .. _4.1.11_py: 4.1.11 Battery Indicator =================================== .. note:: .. image:: ../img/mcp3008_and_adc0834.jpg :width: 25% :align: left Depending on your kit version, please identify whether you have **ADC0834** or **MCP3008** and proceed with the matching section. Introduction -------------- In this project, we will make a battery indicator device that can visually display the battery level on the LED Bargraph. .. warning:: Do not use battery components that exceed 3.3V to avoid overloading, which may damage the chip or Raspberry Pi. Required Components ------------------------------ In this project, we need the following components. .. image:: ../img/list_Battery_Indicator.png :align: center It's definitely convenient to buy a whole kit, here's the link: .. list-table:: :widths: 20 20 20 :header-rows: 1 * - Name - ITEMS IN THIS KIT - LINK * - Raphael Kit - 337 - |link_Raphael_kit| You can also buy them separately from the links below. .. list-table:: :widths: 30 20 :header-rows: 1 * - COMPONENT INTRODUCTION - PURCHASE LINK * - :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` - \- Schematic Diagram ------------------- ============ ======== ======== === 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 Experimental Procedures ------------------------- **Step 1:** Build the circuit. .. image:: ../img/image248.png **Step 2:** Go to the folder of the code. .. raw:: html .. code-block:: cd ~/raphael-kit/python/ **Step 3:** Run the executable file. .. raw:: html .. code-block:: sudo python3 4.1.11_BatteryIndicator.py After the program runs, give the 3rd pin of ADC0834 and the GND a lead-out wire separately and then lead them to the two poles of a battery separately. You can see the corresponding LED on the LED Bargraph is lit up to display the power level (measuring range: 0-5V). **Code** .. note:: You can **Modify/Reset/Copy/Run/Stop** the code below. But before that, you need to go to source code path like ``raphael-kit/python``. After modifying the code, you can run it directly to see the effect. .. 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() **Code Explanation** .. 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) This function works for controlling the turning on or off of the **10** LEDs on the LED Bargraph. We give these **10** LEDs high levels to let they are **off** at first, then decide how many LEDs are lit up by changing the received analog value. .. code-block:: python def loop():     while True:         analogVal = ADC0834.getResult()         LedBarGraph(int(analogVal/25)) analogVal produces values (**0-255**) with varying voltage values (**0-5V**), ex., if a 3V is detected on a battery, the corresponding value **152** is displayed on the voltmeter. The **10** LEDs on the LED Bargraph are used to display the **analogVal** readings. 255/10=25, so every **25** the analog value increases, one more LED turns on, ex., if “analogVal=150 (about 3V), there are 6 LEDs turning on.” Phenomenon Picture ------------------------------ .. image:: ../img/image249.jpeg :align: center