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!

2.1.5 Neigungsschalter

Einleitung

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.5_tilt_switch_list.png

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

Name

IN DIESEM KIT ENTHALTENE TEILE

LINK

Raphael Kit

337

Raphael Kit

Sie können sie auch separat über die unten stehenden Links kaufen.

KOMPONENTENVORSTELLUNG

KAUF-LINK

GPIO Extension Board

KAUFEN

Steckbrett

KAUFEN

Jumper-Kabel

KAUFEN

Widerstand

KAUFEN

LED

KAUFEN

Kippschalter

-

Schaltplan

../_images/2.1.5_tilt_switch_schematic_1.png ../_images/2.1.5_tilt_switch_schematic_2.png

Experimentelle Verfahren

Schritt 1: Bauen Sie den Schaltkreis auf.

../_images/2.1.5_tilt_switch_circuit.png

Schritt 2: Wechseln Sie ins Verzeichnis.

cd ~/raphael-kit/python-pi5

Schritt 3: Führen Sie den Code aus.

sudo python3 2.1.5_Tilt_zero.py

Stellen Sie den Neigungsschalter vertikal 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 vertikal auf, und die grüne LED leuchtet wieder auf.

Warnung

Wenn die Fehlermeldung RuntimeError: Cannot determine SOC peripheral base address angezeigt wird, lesen Sie bitte If gpiozero doesn’t work.

Code

Bemerkung

Sie können den unten stehenden Code modifizieren/zurücksetzen/kopieren/ausführen/stoppen. Aber zuvor müssen Sie zum Quellcodepfad wie raphael-kit/python-pi5 gehen. Nachdem Sie den Code modifiziert haben, können Sie ihn direkt ausführen, um den Effekt zu sehen.

#!/usr/bin/env python3
from gpiozero import LED, Button

# Initialize the Button for the tilt sensor and LEDs using GPIO Zero
TiltPin = Button(17, pull_up=False)  # Tilt sensor connected to GPIO pin 17, pull-up resistor disabled
green_led = LED(27)  # Green LED connected to GPIO pin 27
red_led = LED(22)   # Red LED connected to GPIO pin 22

def detect():
    """
    Detect the tilt sensor state and control the LEDs.
    Turns on the red LED and turns off the green LED when tilted.
    Turns off the red LED and turns on the green LED when not tilted.
    """
    if TiltPin.is_pressed:  # Check if the sensor is tilted
        print('    *************')
        print('    *   Tilt!   *')
        print('    *************')
        red_led.on()   # Turn on red LED
        green_led.off()  # Turn off green LED
    else:  # If the sensor is not tilted
        red_led.off()  # Turn off red LED
        green_led.on()  # Turn on green LED

try:
    while True:
        # Continuously check the tilt sensor state and update LEDs
        TiltPin.when_pressed = detect
        TiltPin.when_released = detect

except KeyboardInterrupt:
    # Handle KeyboardInterrupt (Ctrl+C) to exit the loop gracefully
    pass

Code-Erklärung

  1. Diese Zeile legt fest, dass das Skript mit Python 3 ausgeführt wird 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 mit dem GPIO-Pin 17 verbunden ist (mit deaktiviertem Pull-Up-Widerstand), und zwei LEDs, die mit den GPIO-Pins 27 und 22 verbunden sind.

    # Initialize the Button for the tilt sensor and LEDs using GPIO Zero
    TiltPin = Button(17, pull_up=False)  # Tilt sensor connected to GPIO pin 17, pull-up resistor disabled
    green_led = LED(27)  # Green LED connected to GPIO pin 27
    red_led = LED(22)   # Red LED connected to GPIO pin 22
    
  3. Definiert die Funktion detect, welche den Zustand des Neigungssensors überprüft. Bei Neigung schaltet sie die rote LED ein und die grüne LED aus. Bei keiner Neigung erfolgt das Gegenteil.

    def detect():
        """
        Detect the tilt sensor state and control the LEDs.
        Turns on the red LED and turns off the green LED when tilted.
        Turns off the red LED and turns on the green LED when not tilted.
        """
        if TiltPin.is_pressed:  # Check if the sensor is tilted
            print('    *************')
            print('    *   Tilt!   *')
            print('    *************')
            red_led.on()   # Turn on red LED
            green_led.off()  # Turn off green LED
        else:  # If the sensor is not tilted
            red_led.off()  # Turn off red LED
            green_led.on()  # Turn on green LED
    
  4. Die Hauptschleife weist die Funktion detect den Ereignissen when_pressed und when_released des Neigungssensors zu. Der try-except-Block behandelt eine Tastaturunterbrechung für einen anmutigen Abbruch.

    try:
        while True:
            # Continuously check the tilt sensor state and update LEDs
            TiltPin.when_pressed = detect
            TiltPin.when_released = detect
    
    except KeyboardInterrupt:
        # Handle KeyboardInterrupt (Ctrl+C) to exit the loop gracefully
        pass