.. 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.4_py_pi5: 2.1.4 Schiebeschalter =========================== Einleitung ---------------- In diesem Projekt lernen wir, wie man einen Schiebeschalter verwendet. Normalerweise wird der Schiebeschalter auf der PCB als Ein-/Ausschalter gelötet, aber hier müssen wir ihn in das Steckbrett einsetzen, sodass er möglicherweise nicht fest sitzt. Wir verwenden ihn auf dem Steckbrett, um seine Funktion zu demonstrieren. Benötigte Komponenten ---------------------------- Für dieses Projekt benötigen wir die folgenden Komponenten. .. image:: ../python_pi5/img/2.1.4_slide_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_slide_switch` - |link_slide_switch_buy| * - :ref:`cpn_capacitor` - |link_capacitor_buy| Schaltplan --------------------- Verbinden Sie den mittleren Pin des Schiebeschalters mit GPIO17 und zwei LEDs jeweils mit den Pins GPIO22 und GPIO27. Wenn Sie den Schieber betätigen, können Sie sehen, wie die beiden LEDs abwechselnd aufleuchten. .. image:: ../python_pi5/img/2.1.4_slide_switch_schematic_1.png .. image:: ../python_pi5/img/2.1.4_slide_switch_schematic_2.png Experimentelle Verfahren ------------------------------- **Schritt 1:** Bauen Sie den Schaltkreis auf. .. image:: ../python_pi5/img/2.1.4_slide_switch_circuit.png **Schritt 2:** Wechseln Sie in den Ordner des Codes. .. 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.4_Slider_zero.py Während der Code läuft, verbinden Sie den Schalter mit der linken Seite, dann leuchtet die gelbe LED auf; nach rechts, schaltet sich die rote LED ein. .. 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 # Import LED and Button classes for GPIO control from time import sleep # Import sleep function for adding delays # Initialize the micro switch on GPIO pin 17 with the pull-up resistor disabled micro_switch = Button(17, pull_up=False) # Initialize LED1 on GPIO pin 22 led1 = LED(22) # Initialize LED2 on GPIO pin 27 led2 = LED(27) try: # Main loop to control LED states based on the micro switch's state while True: if micro_switch.is_pressed: # Check if the micro switch is pressed print(' LED1 ON ') # Print status message led1.on() # Turn on LED1 led2.off() # Turn off LED2 else: # If the micro switch is not pressed print(' LED2 ON ') # Print status message led1.off() # Turn off LED1 led2.on() # Turn on LED2 sleep(0.5) # Wait for 0.5 seconds before rechecking the switch state except KeyboardInterrupt: # Handle a keyboard interrupt (Ctrl+C) for a clean exit from the loop pass **Code-Erklärung** #. Diese Zeile legt fest, dass das Skript mit Python 3 ausgeführt wird. Sie importiert ``LED`` und ``Button`` aus ``gpiozero`` zur Steuerung von GPIO-Geräten und ``sleep`` aus ``time`` für Verzögerungen. .. code-block:: python #!/usr/bin/env python3 from gpiozero import LED, Button # Import LED and Button classes for GPIO control from time import sleep # Import sleep function for adding delays #. Initialisiert einen Mikroschalter, der mit dem GPIO-Pin 17 verbunden ist, mit deaktiviertem Pull-Up-Widerstand und zwei LEDs, die mit den GPIO-Pins 22 und 27 verbunden sind. .. code-block:: python # Initialize the micro switch on GPIO pin 17 with the pull-up resistor disabled micro_switch = Button(17, pull_up=False) # Initialize LED1 on GPIO pin 22 led1 = LED(22) # Initialize LED2 on GPIO pin 27 led2 = LED(27) #. Die Hauptschleife überprüft den Zustand des Mikroschalters. Wenn gedrückt, leuchtet LED1 und LED2 geht aus; wenn nicht gedrückt, geht LED1 aus und LED2 leuchtet. Die Schleife wiederholt sich alle 0,5 Sekunden. Fängt eine Tastaturunterbrechung (wie Strg+C) ab, um das Skript anmutig zu beenden. .. code-block:: python try: # Main loop to control LED states based on the micro switch's state while True: if micro_switch.is_pressed: # Check if the micro switch is pressed print(' LED1 ON ') # Print status message led1.on() # Turn on LED1 led2.off() # Turn off LED2 else: # If the micro switch is not pressed print(' LED2 ON ') # Print status message led1.off() # Turn off LED1 led2.on() # Turn on LED2 sleep(0.5) # Wait for 0.5 seconds before rechecking the switch state except KeyboardInterrupt: # Handle a keyboard interrupt (Ctrl+C) for a clean exit from the loop pass