Note

Bonjour et bienvenue dans la Communauté Facebook des passionnés de Raspberry Pi, Arduino et ESP32 de SunFounder ! Plongez plus profondément dans l’univers des Raspberry Pi, Arduino et ESP32 avec d’autres passionnés.

Pourquoi rejoindre ?

  • Support d’experts : Résolvez les problèmes après-vente et les défis techniques avec l’aide de notre communauté et de notre équipe.

  • Apprendre et partager : Échangez des astuces et des tutoriels pour améliorer vos compétences.

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

  • Réductions spéciales : Profitez de réductions exclusives sur nos produits les plus récents.

  • Promotions festives et cadeaux : Participez à des cadeaux et des promotions de vacances.

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

4.1.8 Indicateur de Batterie

Note

../_images/mcp3008_and_adc0834.jpg

Selon la version de votre kit, identifiez si vous disposez d’un ADC0834 ou d’un MCP3008 et suivez la section correspondante.

Introduction

Dans ce projet, nous allons créer un dispositif d’indication de batterie qui peut afficher visuellement le niveau de la batterie sur le Bargraph LED.

Composants nécessaires

Pour ce projet, nous avons besoin des composants suivants.

../_images/4.1.11_battery_indicator_list.png

Il est certainement pratique d’acheter un kit complet, voici le lien :

Nom

ÉLÉMENTS DANS CE KIT

LIEN

Kit Raphael

337

Raphael Kit

Vous pouvez également les acheter séparément via les liens ci-dessous.

INTRODUCTION AUX COMPOSANTS

LIEN D’ACHAT

Carte d’extension GPIO

ACHETER

Plaque d’expérimentation (Breadboard)

ACHETER

Fils de Liaison

ACHETER

Résistance

ACHETER

Graphique à barres LED

-

ADC0834

-

Schéma

Nom T-Board

Physique

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

Procédures expérimentales

Étape 1 : Construire le circuit.

../_images/4.1.11_battery_indicator_circuit.png

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

cd ~/raphael-kit/python-pi5

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

sudo python3 4.1.11_BatteryIndicator_zero.py

Après le démarrage du programme, connectez séparément un fil de sortie au 3ème pin de l’ADC0834 et à la masse, puis connectez-les aux deux pôles d’une batterie. Vous verrez la LED correspondante sur le Bargraph LED s’allumer pour afficher le niveau de charge (plage de mesure : 0-5V).

Avertissement

Si vous recevez le message d’erreur RuntimeError: Cannot determine SOC peripheral base address, veuillez consulter Si « gpiozero » ne fonctionne pas.

Code

Note

Vous pouvez Modifier/Réinitialiser/Copier/Exécuter/Arrêter le code ci-dessous. Mais avant cela, vous devez accéder au chemin du code source comme raphael-kit/python-pi5. Après avoir modifié le code, vous pouvez l’exécuter directement pour voir l’effet.

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

# List of GPIO pins to which LEDs are connected
ledPins = [25, 12, 16, 20, 21, 5, 6, 13, 19, 26]
# Initialize LED objects for each pin in the list
leds = [LED(pin) for pin in ledPins]

# Setup ADC0834 module
ADC0834.setup()

def LedBarGraph(value):
    # Turn off all LEDs
    for i in range(10):
        leds[i].off()
    # Turn on LEDs up to the specified value
    for i in range(value):
        leds[i].on()

try:
    # Main loop to continuously update LED bar graph
    while True:
        # Read analog value from ADC0834
        analogVal = ADC0834.getResult()
        # Convert analog value to LED bar graph level
        LedBarGraph(int(analogVal/25))
except KeyboardInterrupt:
    # Turn off all LEDs when program is interrupted
    for i in range(10):
        leds[i].off()

Explication du Code

  1. Cette section importe les bibliothèques nécessaires. gpiozero est utilisée pour contrôler les LED, ADC0834 pour interfacer avec le module ADC, et time pour les opérations liées au temps.

    #!/usr/bin/env python3
    from gpiozero import LED
    import ADC0834
    import time
    
  2. Définit les broches GPIO auxquelles les LED sont connectées et initialise un tableau d’objets LED pour chaque broche. Cela permet de contrôler facilement chaque LED du tableau.

    # List of GPIO pins to which LEDs are connected
    ledPins = [25, 12, 16, 20, 21, 5, 6, 13, 19, 26]
    # Initialize LED objects for each pin in the list
    leds = [LED(pin) for pin in ledPins]
    
  3. Initialise le module ADC0834 pour la conversion analogique-numérique.

    # Setup ADC0834 module
    ADC0834.setup()
    
  4. Cette fonction éteint toutes les LED puis allume un certain nombre de LED en fonction de la valeur d’entrée, créant ainsi une représentation en barres graphiques.

    def LedBarGraph(value):
        # Turn off all LEDs
        for i in range(10):
            leds[i].off()
        # Turn on LEDs up to the specified value
        for i in range(value):
            leds[i].on()
    
  5. Lit continuellement la valeur analogique de l’ADC0834 et met à jour le bargraphe LED en fonction de cette valeur. La valeur analogique est réduite à une plage de 0-10 pour les 10 LED.

    try:
        # Main loop to continuously update LED bar graph
        while True:
            # Read analog value from ADC0834
            analogVal = ADC0834.getResult()
            # Convert analog value to LED bar graph level
            LedBarGraph(int(analogVal/25))
    
  6. S’assure que toutes les LED sont éteintes lorsque le programme est interrompu (par exemple, en appuyant sur Ctrl+C).

    except KeyboardInterrupt:
        # Turn off all LEDs when program is interrupted
        for i in range(10):
            leds[i].off()