2.1.4 Potentiometer¶
Einführung¶
Die ADC-Funktion kann verwendet werden, um analoge Signale in digitale Signale umzuwandeln, und in diesem Experiment wird der ADC0834 verwendet, um die Funktion mit ADC zu bekommen. Hier implementieren wir diesen Prozess mit einem Potentiometer. Das Potentiometer ändert die physikalische Größe – die Spannung, die durch die ADC-Funktion umgewandelt wird.
Benötigte Komponenten¶
Für dieses Projekt benötigen wir die folgenden Komponenten.
Schaltplan¶
Experimentelle Verfahren¶
Schritt 1: Bauen Sie den Schaltkreis auf.
Bemerkung
Bitte platzieren Sie den Chip, indem Sie sich auf die entsprechende Position im Bild beziehen. Beachten Sie, dass die Kerben am Chip links sein sollten, wenn er platziert wird.
Schritt 2: Öffnen Sie die Code-Datei
cd ~/raphael-kit/python-pi5
Schritt 3: Ausführen.
sudo python3 2.1.4_Potentiometer_zero.py
Nachdem der Code ausgeführt wurde, drehen Sie den Knopf am Potentiometer, die Intensität der LED wird entsprechend ändern.
Code
Bemerkung
Sie können den unten stehenden Code Modifizieren/Zurücksetzen/Kopieren/Ausführen/Stoppen. Aber bevor Sie das tun, müssen Sie zum Quellcode-Pfad wie raphael-kit/python-pi5
gehen. Nachdem Sie den Code geändert haben, können Sie ihn direkt ausführen, um die Auswirkungen zu sehen.
#!/usr/bin/env python3
from gpiozero import PWMLED
import ADC0834
import time
# Initialisieren Sie eine PWM-LED am GPIO-Pin 22
led = PWMLED(22)
# Richten Sie das ADC0834-Modul ein
ADC0834.setup()
def MAP(x, in_min, in_max, out_min, out_max):
"""
Ordnen Sie einen Wert von einem Bereich in einen anderen zu.
:param x: Der umzuordnende Wert.
:param in_min: Die untere Grenze des aktuellen Bereichs des Werts.
:param in_max: Die obere Grenze des aktuellen Bereichs des Werts.
:param out_min: Die untere Grenze des Zielbereichs des Werts.
:param out_max: Die obere Grenze des Zielbereichs des Werts.
:return: Der umgeordnete Wert.
"""
return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min
try:
while True:
# Holen Sie den aktuellen Messwert vom ADC0834-Modul
res = ADC0834.getResult()
print('res = %d' % res)
# Ordnen Sie den ADC-Wert einem Bereich zu, der für die Einstellung der LED-Helligkeit geeignet ist
R_val = MAP(res, 0, 255, 0, 100)
# Stellen Sie die Helligkeit der LED ein
led.value = float(R_val / 100)
# Warten Sie 0,2 Sekunden, bevor Sie erneut messen
time.sleep(0.2)
# Eleganter Ausstieg, wenn 'Ctrl+C' gedrückt wird
except KeyboardInterrupt:
led.value = 0 # Schalten Sie die LED aus
Code-Erklärung
gpiozero
für die PWM-LED-Steuerung,ADC0834
für die Analog-Digital-Umwandlung undtime
für Verzögerungen.#!/usr/bin/env python3 from gpiozero import PWMLED import ADC0834 import time
Initialisieren Sie ein PWMLED-Objekt, das mit dem GPIO-Pin 22 verbunden ist, und richten Sie den ADC0834-Konverter ein.
# Initialisieren Sie eine PWM-LED am GPIO-Pin 22 led = PWMLED(22) # Richten Sie das ADC0834-Modul ein ADC0834.setup()
Definieren Sie eine Funktion mit dem Namen
MAP
, um Werte von einem Bereich in einen anderen zu konvertieren, nützlich für die Zuordnung von ADC-Werten zu geeigneten LED-Helligkeitsstufen.def MAP(x, in_min, in_max, out_min, out_max): return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min
Lesen Sie kontinuierlich den ADC-Wert in einer Schleife, ordnen Sie den ADC-Wert (0-255) einer Helligkeitsstufe (0-100) für die LED zu. Passen Sie die Helligkeit der LED entsprechend diesem umgeordneten Wert an. Implementieren Sie eine Verzögerung von 0,2 Sekunden für eine bessere Lesbarkeit und Stabilität.
try: while True: # Holen Sie den aktuellen Messwert vom ADC0834-Modul res = ADC0834.getResult() print('res = %d' % res) # Ordnen Sie den ADC-Wert einem Bereich zu, der für die Einstellung der LED-Helligkeit geeignet ist R_val = MAP(res, 0, 255, 0, 100) # Stellen Sie die Helligkeit der LED ein led.value = float(R_val / 100) # Warten Sie 0,2 Sekunden, bevor Sie erneut messen time.sleep(0.2) # Eleganter Ausstieg, wenn 'Ctrl+C' gedrückt wird except KeyboardInterrupt: led.value = 0 # Schalten Sie die LED aus