.. note:: 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 [|link_sf_facebook|] und treten Sie heute bei! .. _2.1.5_py_pi5: 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. .. image:: ../python_pi5/img/2.1.5_tilt_switch_list.png Es ist definitiv praktisch, ein ganzes Kit zu kaufen, hier ist der Link: .. list-table:: :widths: 20 20 20 :header-rows: 1 * - Name - IN DIESEM KIT ENTHALTENE TEILE - LINK * - Raphael Kit - 337 - |link_Raphael_kit| Sie können sie auch separat über die unten stehenden Links kaufen. .. list-table:: :widths: 30 20 :header-rows: 1 * - KOMPONENTENVORSTELLUNG - KAUF-LINK * - :ref:`cpn_gpio_board` - |link_gpio_board_buy| * - :ref:`cpn_breadboard` - |link_breadboard_buy| * - :ref:`cpn_wires` - |link_wires_buy| * - :ref:`cpn_resistor` - |link_resistor_buy| * - :ref:`cpn_led` - |link_led_buy| * - :ref:`cpn_tilt_switch` - \- Schaltplan ------------------ .. image:: ../python_pi5/img/2.1.5_tilt_switch_schematic_1.png .. image:: ../python_pi5/img/2.1.5_tilt_switch_schematic_2.png Experimentelle Verfahren -------------------------------- **Schritt 1:** Bauen Sie den Schaltkreis auf. .. image:: ../python_pi5/img/2.1.5_tilt_switch_circuit.png **Schritt 2:** Wechseln Sie ins Verzeichnis. .. raw:: html .. code-block:: cd ~/raphael-kit/python-pi5 **Schritt 3:** Führen Sie den Code aus. .. raw:: html .. code-block:: 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. .. warning:: Wenn die Fehlermeldung ``RuntimeError: Cannot determine SOC peripheral base address`` angezeigt wird, lesen Sie bitte :ref:`faq_soc` **Code** .. note:: 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. .. raw:: html .. code-block:: python #!/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** #. 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. .. code-block:: python #!/usr/bin/env python3 from gpiozero import LED, Button #. 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. .. code-block:: python # 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 #. 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. .. code-block:: python 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 #. 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. .. code-block:: python 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