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!
3.1.5 Batterieanzeige
Bemerkung
Je nach deiner Kit-Version überprüfe bitte, ob du ADC0834 oder MCP3008 hast, und fahre mit dem entsprechenden Abschnitt fort.
Einführung
In diesem Projekt werden wir ein Batterieanzeigegerät erstellen, das den Batteriestand auf dem LED-Bargraphen visuell anzeigen kann.
Warnung
Verwende keine Batterien mit einer Spannung von mehr als 3,3 V, um eine Überlastung und mögliche Schäden am Chip oder Raspberry Pi zu vermeiden.
Erforderliche Komponenten
Für dieses Projekt benötigen wir folgende Komponenten.
Schaltplan
T-Karte Name |
physisch |
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 |
Versuchsdurchführung
Schritt 1: Bauen Sie die Schaltung.
Schritt 2: Wechseln Sie in den Ordner mit dem Code.
cd ~/davinci-kit-for-raspberry-pi/python-pi5
Schritt 3: Führen Sie die ausführbare Datei aus.
sudo python3 3.1.5_BatteryIndicator_zero.py
Nachdem das Programm ausgeführt wurde, führen Sie das dritte Pin des ADC0834 und die GND separat heraus und führen Sie sie dann separat zu den beiden Polen einer Batterie. Sie können sehen, dass die entsprechende LED auf dem LED-Bargraphen aufleuchtet, um den Energiepegel anzuzeigen (Messbereich: 0-5V).
Warnung
Wenn die Fehlermeldung RuntimeError: Cannot determine SOC peripheral base address angezeigt wird, lesen Sie bitte Wenn gpiozero nicht funktioniert.
Code
Bemerkung
Sie können den folgenden Code Ändern/Zurücksetzen/Kopieren/Ausführen/Stoppen. Aber bevor Sie das tun, müssen Sie zum Quellcodepfad wie davinci-kit-for-raspberry-pi/python-pi5 gehen. Nachdem Sie den Code geändert haben, können Sie ihn direkt ausführen, um die Wirkung zu sehen.
#!/usr/bin/env python3
from gpiozero import LED
import ADC0834
import time
# Liste der GPIO-Pins, an die LEDs angeschlossen sind
ledPins = [25, 12, 16, 20, 21, 5, 6, 13, 19, 26]
# Initialisieren von LED-Objekten für jeden Pin in der Liste
leds = [LED(pin) for pin in ledPins]
# Setup des ADC0834-Moduls
ADC0834.setup()
def LedBarGraph(value):
# Schalte alle LEDs aus
for i in range(10):
leds[i].off()
# Schalte LEDs bis zum angegebenen Wert ein
for i in range(value):
leds[i].on()
try:
# Hauptschleife zur kontinuierlichen Aktualisierung des LED-Bargraphen
while True:
# Lese den analogen Wert von ADC0834 aus
analogVal = ADC0834.getResult()
# Konvertiere den analogen Wert in den LED-Bargraphen-Level
LedBarGraph(int(analogVal/25))
except KeyboardInterrupt:
# Schalte alle LEDs aus, wenn das Programm unterbrochen wird
for i in range(10):
leds[i].off()
Code-Erklärung
Dieser Abschnitt importiert die erforderlichen Bibliotheken.
gpiozerodient zur Steuerung der LEDs,ADC0834zur Kommunikation mit dem ADC-Modul undtimefür zeitbezogene Operationen.#!/usr/bin/env python3 from gpiozero import LED import ADC0834 import time
Definiert die GPIO-Pins, an die die LEDs angeschlossen sind, und initialisiert ein Array von LED-Objekten für jeden Pin. Dadurch wird eine einfache Steuerung jeder LED im Array ermöglicht.
# Liste der GPIO-Pins, an die die LEDs angeschlossen sind ledPins = [25, 12, 16, 20, 21, 5, 6, 13, 19, 26] # Initialisieren von LED-Objekten für jeden Pin in der Liste leds = [LED(pin) for pin in ledPins]
Initialisiert das ADC0834-Modul für die analog-digital-Umwandlung.
# Setup des ADC0834-Moduls ADC0834.setup()
Diese Funktion schaltet zunächst alle LEDs aus und schaltet dann basierend auf dem Eingangswert eine bestimmte Anzahl von LEDs ein, um effektiv eine Balkendiagrammdarstellung zu erstellen.
def LedBalkenDiagramm(wert): # Schalte alle LEDs aus for i in range(10): leds[i].off() # Schalte LEDs bis zum angegebenen Wert ein for i in range(wert): leds[i].on()
Liest kontinuierlich den analogen Wert aus dem ADC0834 aus und aktualisiert das LED-Balkendiagramm basierend auf diesem Wert. Der analoge Wert wird auf einen Bereich von 0 bis 10 für die 10 LEDs skaliert.
try: # Hauptschleife zur kontinuierlichen Aktualisierung des LED-Bargraphen while True: # Lese den analogen Wert von ADC0834 aus analogVal = ADC0834.getResult() # Konvertiere den analogen Wert in den LED-Bargraphen-Level LedBalkenDiagramm(int(analogVal/25)) except KeyboardInterrupt: # Schalte alle LEDs aus, wenn das Programm unterbrochen wird for i in range(10): leds[i].off()