.. note:: Ciao, benvenuto nella SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasts Community su Facebook! Approfondisci le tue conoscenze su Raspberry Pi, Arduino ed ESP32 insieme ad altri appassionati. **Perché unirti a noi?** - **Supporto esperto**: Risolvi problemi post-vendita e sfide tecniche con l'aiuto della nostra comunità e del nostro team. - **Impara e condividi**: Scambia consigli e tutorial per migliorare le tue competenze. - **Anteprime esclusive**: Ottieni accesso anticipato a nuovi annunci di prodotti e anteprime speciali. - **Sconti speciali**: Approfitta di sconti esclusivi sui nostri prodotti più recenti. - **Promozioni festive e omaggi**: Partecipa a concorsi e promozioni durante le festività. 👉 Pronto a esplorare e creare con noi? Clicca su [|link_sf_facebook|] e unisciti oggi stesso! .. _4.1.11_py: 4.1.11 Indicatore di Batteria =================================== .. note:: .. image:: ../img/mcp3008_and_adc0834.jpg :width: 25% :align: left A seconda della versione del tuo kit, identifica se hai **ADC0834** o **MCP3008** e procedi con la sezione corrispondente. Introduzione -------------- In questo progetto, realizzeremo un dispositivo indicatore di batteria che può isualizzare il livello della batteria su un LED Bargraph. .. warning:: Non utilizzare componenti della batteria che superano i 3,3V per evitare sovraccarichi, che potrebbero danneggiare il chip o il Raspberry Pi. Componenti necessari ------------------------------ In questo progetto, avremo bisogno dei seguenti componenti. .. image:: ../img/list_Battery_Indicator.png :align: center È sicuramente conveniente acquistare un kit completo, ecco il link: .. list-table:: :widths: 20 20 20 :header-rows: 1 * - Nome - ELEMENTI IN QUESTO KIT - LINK * - Kit Raphael - 337 - |link_Raphael_kit| Puoi anche acquistarli separatamente dai link sottostanti. .. list-table:: :widths: 30 20 :header-rows: 1 * - INTRODUZIONE AI COMPONENTI - LINK PER L'ACQUISTO * - :ref:`cpn_gpio_extension_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` - \- Schema elettrico ------------------- ============ ======== ======== === 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 Procedure sperimentali ------------------------- **Passo 1:** Costruisci il circuito. .. image:: ../img/image248.png **Passo 2:** Accedi alla cartella del codice. .. raw:: html .. code-block:: cd ~/raphael-kit/python/ **Passo 3:** Esegui il file eseguibile. .. raw:: html .. code-block:: sudo python3 4.1.11_BatteryIndicator.py Dopo aver eseguito il programma, collega separatamente un filo di uscita al 3° pin di ADC0834 e al GND, quindi collegali ai due poli di una batteria. Vedrai che i LED corrispondenti sul LED Bargraph si accendono per mostrare il livello di carica della batteria (intervallo di misurazione: 0-5V). **Codice** .. note:: Puoi **Modificare/Resettare/Copiare/Eseguire/Fermare** il codice qui sotto. Ma prima di farlo, devi accedere al percorso del codice sorgente come ``raphael-kit/python``. Dopo aver modificato il codice, puoi eseguirlo direttamente per vedere l'effetto. .. 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: # Quando viene premuto 'Ctrl+C', il programma destroy() verrà eseguito. destroy() Spiegazione del Codice -------------------------- .. 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) Questa funzione serve per controllare l'accensione o lo spegnimento dei **10** LED sul LED Bargraph. Inizialmente, diamo a questi **10** LED un livello alto per spegnerli, poi decidiamo quanti LED accendere cambiando il valore analogico ricevuto. .. code-block:: python def loop():     while True:         analogVal = ADC0834.getResult()         LedBarGraph(int(analogVal/25)) analogVal genera valori (**0-255**) con diversi valori di tensione (**0-5V**), ad esempio, se viene rilevata una tensione di 3V su una batteria, il valore corrispondente **152** viene visualizzato sul voltmetro. I **10** LED sul LED Bargraph vengono utilizzati per visualizzare le letture di **analogVal**. 255/10=25, quindi ogni **25** l'incremento del valore analogico accende un altro LED, ad esempio, se "analogVal=150 (circa 3V), ci sono 6 LED accesi." Immagine del fenomeno ------------------------------ .. image:: ../img/image249.jpeg :align: center