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.

../_images/2.1.7_potentiometer_list.png

Schaltplan

../_images/2.1.7_potentiometer_second_1.png ../_images/2.1.7_potentiometer_second_2.png

Experimentelle Verfahren

Schritt 1: Bauen Sie den Schaltkreis auf.

../_images/2.1.7_Potentiometer_circuit.png

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

  1. gpiozero für die PWM-LED-Steuerung, ADC0834 für die Analog-Digital-Umwandlung und time für Verzögerungen.

    #!/usr/bin/env python3
    
    from gpiozero import PWMLED
    import ADC0834
    import time
    
  2. 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()
    
  3. 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
    
  4. 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