Bemerkung

Hallo und willkommen in der SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasten-Gemeinschaft auf Facebook! Tauchen Sie tiefer ein in die Welt von Raspberry Pi, Arduino und ESP32 mit anderen Enthusiasten.

Warum beitreten?

  • Expertenunterstützung: Lösen Sie Nachverkaufsprobleme und technische Herausforderungen mit Hilfe unserer Gemeinschaft und unseres Teams.

  • Lernen & Teilen: Tauschen Sie Tipps und Anleitungen aus, um Ihre Fähigkeiten zu verbessern.

  • Exklusive Vorschauen: Erhalten Sie frühzeitigen Zugang zu neuen Produktankündigungen und exklusiven Einblicken.

  • Spezialrabatte: Genießen Sie exklusive Rabatte auf unsere neuesten Produkte.

  • Festliche Aktionen und Gewinnspiele: Nehmen Sie an Gewinnspielen und Feiertagsaktionen teil.

👉 Sind Sie bereit, mit uns zu erkunden und zu erschaffen? Klicken Sie auf [hier] und treten Sie heute bei!

4.1.8 Batterieanzeige

Einführung

In diesem Projekt werden wir eine Batterieanzeige bauen, die den Batteriestatus visuell auf dem LED-Balkendiagramm anzeigt.

Benötigte Komponenten

Für dieses Projekt benötigen wir die folgenden Komponenten.

../_images/4.1.11_battery_indicator_list.png

Es ist definitiv praktisch, ein komplettes Kit zu kaufen, hier ist der Link:

Name

ARTIKEL IN DIESEM KIT

LINK

Raphael Kit

337

Raphael Kit

Sie können sie auch einzeln über die untenstehenden Links kaufen.

KOMPONENTENVORSTELLUNG

KAUF-LINK

GPIO-Erweiterungsplatine

BUY

Steckbrett

BUY

Jumper-Kabel

BUY

Widerstand

BUY

LED-Balkendiagramm

-

ADC0834

-

Schaltplan

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

Experimentelle Verfahren

Schritt 1: Bauen Sie den Schaltkreis auf.

../_images/4.1.11_battery_indicator_circuit.png

Schritt 2: Gehen Sie in den Ordner des Codes.

cd ~/raphael-kit/python-pi5

Schritt 3: Führen Sie die ausführbare Datei aus.

sudo python3 4.1.11_BatteryIndicator_zero.py

Nachdem das Programm ausgeführt wurde, geben Sie dem 3. Pin des ADC0834 und dem GND jeweils ein Anschlusskabel und führen Sie diese dann separat an die beiden Pole einer Batterie. Sie können sehen, wie die entsprechende LED auf dem LED-Balkendiagramm aufleuchtet, um den Ladestand anzuzeigen (Messbereich: 0-5V).

Code

Bemerkung

Sie können den untenstehenden Code Modifizieren/Zurücksetzen/Kopieren/Ausführen/Stoppen. Aber zuerst müssen Sie zum Quellcodepfad wie raphael-kit/python-pi5 gehen. Nach der Modifikation des Codes können Sie ihn direkt ausführen, um das Ergebnis zu sehen.

#!/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()

Code-Erklärung

  1. Dieser Abschnitt importiert die notwendigen Bibliotheken. gpiozero wird zur Steuerung der LEDs verwendet, ADC0834 zur Schnittstelle mit dem ADC-Modul und time für zeitbezogene Operationen.

    #!/usr/bin/env python3
    from gpiozero import LED
    import ADC0834
    import time
    
  2. Definiert die GPIO-Pins, an die die LEDs angeschlossen sind, und initialisiert ein Array von LED-Objekten für jeden Pin. Dies ermöglicht eine einfache Steuerung jeder LED im Array.

    # 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. Initialisiert das ADC0834-Modul für die Analog-Digital-Umwandlung.

    # Setup ADC0834 module
    ADC0834.setup()
    
  4. Diese Funktion schaltet alle LEDs aus und schaltet dann eine Anzahl von LEDs basierend auf dem Eingabewert ein, wodurch effektiv eine Balkendiagrammdarstellung erzeugt wird.

    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. Liest kontinuierlich den analogen Wert vom ADC0834 und aktualisiert das LED-Balkendiagramm basierend auf diesem Wert. Der analoge Wert wird auf einen Bereich von 0-10 für die 10 LEDs skaliert.

    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. Stellt sicher, dass alle LEDs ausgeschaltet werden, wenn das Programm unterbrochen wird (z.B. durch Drücken von Ctrl+C).

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