2.1.3 Neigungsschalter

Einführung

Dies ist ein Kugel-Neigungsschalter mit einer Metallkugel im Inneren. Er wird verwendet, um Neigungen eines kleinen Winkels zu erkennen.

Benötigte Komponenten

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

../_images/2.1.3_tilt_switch_list.png

Schaltplan

../_images/2.1.3_tilt_switch_schematic_1.png ../_images/2.1.3_tilt_switch_schematic_2.png

Experimentelle Verfahren

Schritt 1: Bauen Sie den Schaltkreis auf.

../_images/2.1.3_tilt_switch_circuit.png

Schritt 2: Wechseln Sie in den Ordner des Codes.

cd ~/davinci-kit-for-raspberry-pi/python-pi5

Schritt 3: Ausführen.

sudo python3 2.1.3_Tilt_zero.py

Stellen Sie den Neigungsschalter senkrecht auf, und die grüne LED leuchtet auf. Wenn Sie ihn neigen, wird „Tilt!“ auf dem Bildschirm angezeigt, und die rote LED leuchtet auf. Stellen Sie ihn wieder senkrecht auf, und die grüne LED leuchtet.

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 davinci-kit-for-raspberry-pi/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 LED, Button

# Initialisieren Sie den Button für den Neigungssensor und die LEDs mit GPIO Zero
TiltPin = Button(17, pull_up=False)  # Neigungssensor an GPIO-Pin 17 angeschlossen, Pull-up-Widerstand deaktiviert
green_led = LED(27)  # Grüne LED an GPIO-Pin 27 angeschlossen
red_led = LED(22)   # Rote LED an GPIO-Pin 22 angeschlossen

def detect():
    """
    Erkennen Sie den Zustand des Neigungssensors und steuern Sie die LEDs.
    Schaltet die rote LED ein und die grüne LED aus, wenn geneigt.
    Schaltet die rote LED aus und die grüne LED ein, wenn nicht geneigt.
    """
    if TiltPin.is_pressed:  # Überprüfen, ob der Sensor geneigt ist
        print('    *************')
        print('    *   Tilt!   *')
        print('    *************')
        red_led.on()   # Rote LED einschalten
        green_led.off()  # Grüne LED ausschalten
    else:  # Wenn der Sensor nicht geneigt ist
        red_led.off()  # Rote LED ausschalten
        green_led.on()  # Grüne LED einschalten

try:
    while True:
        # Kontinuierlich den Zustand des Neigungssensors überprüfen und LEDs aktualisieren
        TiltPin.when_pressed = detect
        TiltPin.when_released = detect

except KeyboardInterrupt:
    # Tastaturunterbrechung (z. B. Ctrl+C) sauber behandeln
    pass

Code-Erklärung

  1. Diese Zeile setzt das Skript so, dass es mit Python 3 läuft, und importiert LED und Button aus gpiozero zur Steuerung von GPIO-Geräten.

    #!/usr/bin/env python3
    from gpiozero import LED, Button
    
  2. Initialisiert den Neigungssensor, der an GPIO-Pin 17 angeschlossen ist (mit deaktiviertem Pull-up-Widerstand), und zwei LEDs, die an GPIO-Pins 27 und 22 angeschlossen sind.

    # Initialisieren Sie den Button für den Neigungssensor und die LEDs mit GPIO Zero
    TiltPin = Button(17, pull_up=False)  # Neigungssensor an GPIO-Pin 17 angeschlossen, Pull-up-Widerstand deaktiviert
    green_led = LED(27)  # Grüne LED an GPIO-Pin 27 angeschlossen
    red_led = LED(22)   # Rote LED an GPIO-Pin 22 angeschlossen
    
  3. Definiert die Funktion detect, die den Zustand des Neigungssensors überprüft. Wenn geneigt, schaltet sie die rote LED ein und die grüne LED aus. Wenn nicht geneigt, macht sie das Gegenteil.

    def detect():
        """
        Erkennen Sie den Zustand des Neigungssensors und steuern Sie die LEDs.
        Schaltet die rote LED ein und die grüne LED aus, wenn geneigt.
        Schaltet die rote LED aus und die grüne LED ein, wenn nicht geneigt.
        """
        if TiltPin.is_pressed:  # Überprüfen, ob der Sensor geneigt ist
            print('    *************')
            print('    *   Tilt!   *')
            print('    *************')
            red_led.on()   # Rote LED einschalten
            green_led.off()  # Grüne LED ausschalten
        else:  # Wenn der Sensor nicht geneigt ist
            red_led.off()  # Rote LED ausschalten
            green_led.on()  # Grüne LED einschalten
    
  4. Die Hauptschleife weist die Funktion detect sowohl den when_pressed- als auch den when_released-Ereignissen des Neigungssensors zu. Der try-except-Block behandelt eine KeyboardInterrupt für einen sauberen Abbruch.

    try:
        while True:
            # Kontinuierlich den Zustand des Neigungssensors überprüfen und LEDs aktualisieren
            TiltPin.when_pressed = detect
            TiltPin.when_released = detect
    
    except KeyboardInterrupt:
        # Tastaturunterbrechung (z. B. Ctrl+C) sauber behandeln
        pass