Nota

Ciao, benvenuto nella community di SunFounder per gli appassionati di Raspberry Pi, Arduino e ESP32 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 affronta sfide tecniche con l’aiuto della nostra community e del nostro team.

  • Impara e Condividi: Scambia consigli e tutorial per migliorare le tue competenze.

  • Anteprime Esclusive: Ottieni accesso anticipato agli annunci di nuovi prodotti e alle anteprime esclusive.

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

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

👉 Sei pronto a esplorare e creare con noi? Clicca [Qui] e unisciti oggi stesso!

4.1.8 Indicatore di Batteria

Nota

../_images/mcp3008_and_adc0834.jpg

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ò visualizzare visivamente il livello di carica della batteria sul Bargraph LED.

Componenti Necessari

In questo progetto, ci servono i seguenti componenti.

../_images/4.1.11_battery_indicator_list.png

È sicuramente conveniente acquistare un kit completo, ecco il link:

Nome

ELEMENTI INCLUSI NEL KIT

LINK

Kit Raphael

337

Raphael Kit

Puoi anche acquistare i componenti separatamente dai link qui sotto.

INTRODUZIONE AI COMPONENTI

LINK D’ACQUISTO

Scheda di estensione GPIO

ACQUISTA

Breadboard

ACQUISTA

Cavi Jumper

ACQUISTA

Resistore

ACQUISTA

Grafico a Barre LED

-

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

../_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 ~/raphael-kit/python-pi5

Passo 3: Esegui il file eseguibile.

sudo python3 4.1.11_BatteryIndicator_zero.py

Dopo l’esecuzione del programma, collega separatamente un cavo di uscita al 3° pin di ADC0834 e al GND, e poi collegali ai due poli di una batteria. Vedrai che il corrispondente LED sul Bargraph LED si accenderà per visualizzare il livello di potenza (intervallo di misurazione: 0-5V).

Avvertimento

Se viene visualizzato l’errore RuntimeError: Cannot determine SOC peripheral base address, fare riferimento a If gpiozero doesn’t work..

Code

Nota

Puoi Modificare/Resettare/Copiare/Eseguire/Fermare il codice qui sotto. Ma prima devi accedere al percorso del codice sorgente come raphael-kit/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 ogni pin nella lista
leds = [LED(pin) per pin in ledPins]

# Configura il modulo ADC0834
ADC0834.setup()

def LedBarGraph(value):
    # Spegni tutti i LED
    for i in range(10):
        leds[i].off()
    # Accendi 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:
        # Leggi il valore analogico da ADC0834
        analogVal = ADC0834.getResult()
        # Converti il valore analogico in livello del Bargraph LED
        LedBarGraph(int(analogVal/25))
except KeyboardInterrupt:
    # Spegni 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 le operazioni legate al tempo.

    #!/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. Questo consente un facile controllo di ciascun 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 ogni pin nella lista
    leds = [LED(pin) per 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 poi accende un numero di LED in base al valore di input, creando efficacemente una rappresentazione grafica a barre.

    def LedBarGraph(value):
        # Spegni tutti i LED
        for i in range(10):
            leds[i].off()
        # Accendi i LED fino al valore specificato
        for i in range(value):
            leds[i].on()
    
  5. Legge continuamente il valore analogico da ADC0834 e aggiorna il Bargraph LED in base a questo valore. Il valore analogico viene ridimensionato su una scala da 0 a 10 per i 10 LED.

    try:
        # Ciclo principale per aggiornare continuamente il Bargraph LED
        while True:
            # Leggi il valore analogico da ADC0834
            analogVal = ADC0834.getResult()
            # Converti il valore analogico in 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:
        # Spegni tutti i LED quando il programma viene interrotto
        for i in range(10):
            leds[i].off()