Note

Bonjour et bienvenue dans la communauté SunFounder pour les passionnés de Raspberry Pi, Arduino et ESP32 sur Facebook ! Plongez au cœur de Raspberry Pi, Arduino et ESP32 avec d’autres passionnés.

Pourquoi rejoindre ?

  • Support d’experts : Résolvez vos problèmes après-vente et vos défis techniques grâce à l’aide de notre communauté et de notre équipe.

  • Apprendre & Partager : Échangez des astuces et des tutoriels pour perfectionner vos compétences.

  • Aperçus exclusifs : Accédez en avant-première aux annonces de nouveaux produits et aux aperçus exclusifs.

  • Réductions spéciales : Profitez de réductions exclusives sur nos nouveaux produits.

  • Promotions festives et concours : Participez à des concours et à des promotions spéciales pendant les fêtes.

👉 Prêt à explorer et créer avec nous ? Cliquez sur [Ici] et rejoignez-nous dès aujourd’hui !

3.1.5 Indicateur de batterie

Introduction

Dans ce cours, nous allons fabriquer un dispositif indicateur de batterie qui peut afficher visuellement le niveau de charge sur un bargraphe LED.

Composants

_images/list_Battery_Indicator.png

Schéma de câblage

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

Procédures expérimentales

Étape 1 : Construisez le circuit.

_images/image248.png

Pour les utilisateurs du langage C

Étape 2 : Accédez au dossier du code.

cd ~/davinci-kit-for-raspberry-pi/c/3.1.5/

Étape 3 : Compilez le code.

gcc 3.1.5_BatteryIndicator.c -lwiringPi

Étape 4 : Exécutez le fichier exécutable.

sudo ./a.out

Après l’exécution du programme, connectez séparément la 3ème broche de l’ADC0834 et le GND à des fils de sortie, puis reliez-les aux deux pôles d’une batterie. Vous verrez que les LED correspondantes sur le bargraphe LED s’allument pour indiquer le niveau de charge (plage de mesure : 0-5V).

Note

Si cela ne fonctionne pas après l’exécution ou si un message d’erreur apparaît : "wiringPi.h: Aucun fichier ou dossier de ce type », veuillez vous référer à C code is not working?.

Explication du code

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);
    }
}

Cette fonction permet de contrôler l’allumage ou l’extinction des 10 LED du bargraphe LED. Nous commençons par envoyer un signal de niveau haut aux 10 LED pour les éteindre, puis nous décidons combien de LED seront allumées en fonction de la valeur analogique reçue.

int main(void)
{
    uchar analogVal;
    if(wiringPiSetup() == -1){ // Si l'initialisation de WiringPi échoue, afficher un message à l'écran
        printf("setup wiringPi failed !");
        return 1;
    }
    pinMode(ADC_CS,  OUTPUT);
    pinMode(ADC_CLK, OUTPUT);
    for(int i=0;i<10;i++){       // Définir les broches des LED en mode sortie
        pinMode(pins[i], OUTPUT);
        digitalWrite(pins[i],HIGH);
    }
    while(1){
        analogVal = get_ADC_Result(0);
        LedBarGraph(analogVal/25);
        delay(100);
    }
    return 0;
}

analogVal produit des valeurs (0-255) selon la variation de la tension (0-5V), par exemple, si une tension de 3V est détectée sur une batterie, la valeur correspondante

152 s’affiche sur le voltmètre.

Les 10 LED du bargraphe sont utilisées pour afficher les valeurs de analogVal. 255/10=25, donc chaque augmentation de 25 de la valeur analogique allume une LED supplémentaire, par exemple, si analogVal=150 (environ 3V), 6 LED s’allument.

Pour les utilisateurs du langage Python

Étape 2 : Accédez au dossier du code.

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

Étape 3 : Exécutez le fichier exécutable.

sudo python3 3.1.5_BatteryIndicator.py

Après l’exécution du programme, connectez séparément la 3ème broche de l’ADC0834 et le GND à des fils de sortie, puis reliez-les aux deux pôles d’une batterie. Vous verrez que les LED correspondantes sur le bargraphe LED s’allument pour indiquer le niveau de charge (plage de mesure : 0-5V).

Code

Note

Vous pouvez modifier/réinitialiser/copier/exécuter/arrêter le code ci-dessous. Mais avant cela, vous devez vous rendre sur le chemin du code source comme davinci-kit-for-raspberry-pi/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: # Quand 'Ctrl+C' est pressé, la fonction destroy() sera exécutée.
        destroy()

Explication du code

def LedBarGraph(value):
    for i in ledPins:
        GPIO.output(i,GPIO.HIGH)
    for i in range(value):
        GPIO.output(ledPins[i],GPIO.LOW)

Cette fonction permet de contrôler l’allumage ou l’extinction des 10 LED du bargraphe LED. Nous commençons par envoyer un signal de niveau haut aux 10 LED pour les éteindre, puis nous décidons combien de LED seront allumées en fonction de la valeur analogique reçue.

def loop():
    while True:
        analogVal = ADC0834.getResult()
        LedBarGraph(int(analogVal/25))

analogVal produit des valeurs (0-255) selon la variation de la tension (0-5V), par exemple, si une tension de 3V est détectée sur une batterie, la valeur correspondante 152 s’affiche sur le voltmètre.

Les 10 LED du bargraphe sont utilisées pour afficher les valeurs de analogVal. 255/10=25, donc chaque augmentation de 25 de la valeur analogique allume une LED supplémentaire, par exemple, si analogVal=150 (environ 3V), 6 LED s’allument.

Image du phénomène

_images/image249.jpeg