Nota

Ciao e benvenuto nella SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasts Community su Facebook! Approfondisci l’utilizzo di Raspberry Pi, Arduino ed ESP32 con altri appassionati.

Perché unirsi 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 abilità.

  • Anteprime Esclusive: Accedi anticipatamente agli annunci di nuovi prodotti e alle anteprime.

  • Sconti Speciali: Godi di sconti esclusivi sui nostri ultimi prodotti.

  • Promozioni Festive e Giveaway: Partecipa a giveaway e promozioni durante le festività.

👉 Pronto a esplorare e creare con noi? Clicca su [Qui] e unisciti oggi!

3.1.5 Indicatore di Batteria

Nota

../_images/mcp3008_and_adc0834.jpg

A seconda della versione del kit, identifica se hai ADC0834 o MCP3008 e procedi con la sezione corrispondente.

Introduzione

In questo progetto, creeremo un dispositivo indicatore di batteria che potrà visualizzare visivamente il livello di carica della batteria su un Bargraph LED.

Avvertimento

Non utilizzare componenti della batteria che superano i 3,3V per evitare sovraccarichi che potrebbero danneggiare il chip o il Raspberry Pi.

Componenti Necessari

Per questo progetto, abbiamo bisogno dei seguenti componenti.

../_images/4.1.11_battery_indicator_list.png

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

../_images/4.1.11_battery_indicator_schematic.png

Procedure Sperimentali

Passo 1: Costruisci il circuito.

../_images/4.1.11_battery_indicator_circuit.png

Passo 2: Accedi alla cartella del codice.

cd ~/davinci-kit-for-raspberry-pi/python-pi5

Passo 3: Esegui il file eseguibile.

sudo python3 3.1.5_BatteryIndicator.py

Dopo aver avviato il programma, collega separatamente un filo di uscita al 3° pin dell’ADC0834 e al GND, quindi connettili ai due poli di una batteria. Potrai vedere l’accensione del LED corrispondente sul Bargraph LED che visualizza il livello di carica (intervallo di misura: 0-5V).

Avvertimento

Se appare l’errore RuntimeError: Cannot determine SOC peripheral base address, fai riferimento a Se gpiozero non funziona.

Codice

Nota

Puoi Modificare/Ripristinare/Copiare/Eseguire/Interrompere il codice qui sotto. Prima di tutto, però, accedi al percorso del codice sorgente come davinci-kit-for-raspberry-pi/python-pi5. Dopo aver modificato il codice, puoi eseguirlo direttamente per vedere l’effetto.

#!/usr/bin/env python3
from gpiozero import LED
import ADC0834
import time

# Elenco dei pin GPIO a cui sono collegati i LED
ledPins = [25, 12, 16, 20, 21, 5, 6, 13, 19, 26]
# Inizializza gli oggetti LED per ciascun pin nella lista
leds = [LED(pin) for pin in ledPins]

# Configura il modulo ADC0834
ADC0834.setup()

def LedBarGraph(value):
    # Spegne tutti i LED
    for i in range(10):
        leds[i].off()
    # Accende i LED fino al valore specificato
    for i in range(value):
        leds[i].on()

try:
    # Ciclo principale per aggiornare continuamente il Bargraph LED
    while True:
        # Legge il valore analogico dall'ADC0834
        analogVal = ADC0834.getResult()
        # Converte il valore analogico nel livello del Bargraph LED
        LedBarGraph(int(analogVal/25))
except KeyboardInterrupt:
    # Spegne tutti i LED quando il programma viene interrotto
    for i in range(10):
        leds[i].off()

Spiegazione del Codice

  1. Questa sezione importa le librerie necessarie. gpiozero serve per controllare i LED, ADC0834 per interfacciarsi con il modulo ADC, e time per operazioni temporali.

    #!/usr/bin/env python3
    from gpiozero import LED
    import ADC0834
    import time
    
  2. Definisce i pin GPIO a cui sono collegati i LED e inizializza un array di oggetti LED per ciascun pin, permettendo di controllare facilmente ogni LED nell’array.

    # Elenco dei pin GPIO a cui sono collegati i LED
    ledPins = [25, 12, 16, 20, 21, 5, 6, 13, 19, 26]
    # Inizializza gli oggetti LED per ciascun pin nella lista
    leds = [LED(pin) for pin in ledPins]
    
  3. Inizializza il modulo ADC0834 per la conversione analogico-digitale.

    # Configura il modulo ADC0834
    ADC0834.setup()
    
  4. Questa funzione spegne tutti i LED e accende un numero di LED basato sul valore di input, creando effettivamente una rappresentazione grafica a barre.

    def LedBarGraph(value):
        # Spegne tutti i LED
        for i in range(10):
            leds[i].off()
        # Accende i LED fino al valore specificato
        for i in range(value):
            leds[i].on()
    
  5. Legge continuamente il valore analogico dall’ADC0834 e aggiorna il Bargraph LED in base a questo valore. Il valore analogico è scalato su un intervallo di 0-10 per i 10 LED.

    try:
        # Ciclo principale per aggiornare continuamente il Bargraph LED
        while True:
            # Legge il valore analogico dall'ADC0834
            analogVal = ADC0834.getResult()
            # Converte il valore analogico nel livello del Bargraph LED
            LedBarGraph(int(analogVal/25))
    
  6. Assicura che tutti i LED siano spenti quando il programma viene interrotto (ad esempio, premendo Ctrl+C).

    except KeyboardInterrupt:
        # Spegne tutti i LED quando il programma viene interrotto
        for i in range(10):
            leds[i].off()