Nota

Ciao, benvenuto nella Community di appassionati di SunFounder Raspberry Pi & Arduino & ESP32 su Facebook! Approfondisci Raspberry Pi, Arduino ed ESP32 insieme agli altri appassionati.

Perché unirti a noi?

  • Supporto esperto: Risolvi problemi post-vendita e sfide tecniche con l’aiuto della nostra community e del nostro team.

  • Impara e condividi: Scambia suggerimenti e tutorial per migliorare le tue competenze.

  • Anteprime esclusive: Ottieni accesso anticipato a nuovi annunci di prodotti e anteprime.

  • Sconti speciali: Godi di sconti esclusivi sui nostri prodotti più recenti.

  • Promozioni festive e omaggi: Partecipa a omaggi e promozioni speciali per le festività.

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

3.1.5 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 della batteria sul LED Bargraph.

Avvertimento

Non utilizzare batterie 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.

../_images/list_Battery_Indicator.png

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

Nome

ELEMENTI IN QUESTO KIT

LINK

Kit Raphael

337

Raphael Kit

Puoi anche acquistare i componenti separatamente dai link qui sotto.

INTRODUZIONE COMPONENTI

LINK DI 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/Schematic_three_one5.png

Procedura sperimentale

Passo 1: Costruisci il circuito.

../_images/image248.png

Passo 2: Vai alla cartella del codice.

cd ~/raphael-kit/c/3.1.5/

Passo 3: Compila il codice.

gcc 3.1.5_BatteryIndicator.c -lwiringPi

Passo 4: Esegui il file eseguibile.

sudo ./a.out

Dopo l’esecuzione del programma, collega il 3° pin di ADC0834 e il GND separatamente a due fili e collegali ai due poli di una batteria separatamente. Vedrai che i LED corrispondenti sul LED Bargraph si accendono per mostrare il livello di carica (intervallo di misura: 0-5V).

Nota

Se non funziona dopo l’esecuzione, o appare un errore come: "wiringPi.h: Nessun file o directory", fai riferimento a Installa e Controlla wiringPi.

Spiegazione del codice

void LedBarGraph(int value){
    for(int i=0;i<10;i++){
        digitalWrite(pins[i],HIGH);
    }
    for(int i=0;i<value;i++){
        digitalWrite(pins[i],LOW);
    }
}

Questa funzione serve a controllare l’accensione o lo spegnimento dei 10 LED sul LED Bargraph. Diamo a questi 10 LED un livello alto in modo che siano spenti all’inizio, poi decidiamo quanti LED accendere cambiando il valore analogico ricevuto.

int main(void)
{
    uchar analogVal;
    if(wiringPiSetup() == -1){ //quando l'inizializzazione di wiring fallisce, stampa un messaggio sullo schermo
        printf("setup wiringPi failed !");
        return 1;
    }
    pinMode(ADC_CS,  OUTPUT);
    pinMode(ADC_CLK, OUTPUT);
    for(int i=0;i<10;i++){       //imposta i pin dei LED come output
        pinMode(pins[i], OUTPUT);
        digitalWrite(pins[i],HIGH);
    }
    while(1){
        analogVal = get_ADC_Result(0);
        LedBarGraph(analogVal/25);
        delay(100);
    }
    return 0;
}

analogVal genera valori (0-255) con tensioni variabili (0-5V), es., se viene rilevato un valore 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 che il valore analogico aumenta, si accende un LED in più, es., se “analogVal=150 (circa 3V), si accendono 6 LED.”

Foto del fenomeno

../_images/image249.jpeg