.. note:: Hallo, willkommen in der SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasten-Community auf Facebook! Tauchen Sie tiefer in Raspberry Pi, Arduino und ESP32 ein, zusammen mit anderen Enthusiasten. **Warum beitreten?** - **Expertenunterstützung**: Lösen Sie Probleme nach dem Kauf und technische Herausforderungen mit Hilfe unserer Community und unseres Teams. - **Lernen & Teilen**: Tauschen Sie Tipps und Tutorials aus, um Ihre Fähigkeiten zu verbessern. - **Exklusive Vorschauen**: Erhalten Sie frühen Zugang zu neuen Produktankündigungen und exklusiven Einblicken. - **Spezielle Rabatte**: Genießen Sie exklusive Rabatte auf unsere neuesten Produkte. - **Festliche Aktionen und Giveaways**: Nehmen Sie an Verlosungen und Feiertagsaktionen teil. 👉 Bereit, mit uns zu erkunden und zu erschaffen? Klicken Sie auf [|link_sf_facebook|] und treten Sie heute bei! .. _ar_slide: 2.7 Links und Rechts umschalten ================================== In dieser Lektion lernen wir, wie man einen **Schiebeschalter** mit dem Raspberry Pi Pico 2 verwendet, um seine Position (links oder rechts) zu erkennen und darauf basierende Aktionen durchzuführen. Ein Schiebeschalter ist ein einfaches mechanisches Gerät, das den mittleren (gemeinsamen) Pin je nach Position mit einem der beiden äußeren Pins verbindet. **Was Sie benötigen** Für dieses Projekt benötigen wir die folgenden Komponenten. Es ist definitiv praktisch, ein ganzes Kit zu kaufen, hier ist der Link: .. list-table:: :widths: 20 20 20 :header-rows: 1 * - Name - ARTIKEL IN DIESEM KIT - LINK * - Newton Lab Kit - 450+ - |link_newton_lab_kit| Sie können sie auch einzeln über die unten stehenden Links kaufen. .. list-table:: :widths: 5 20 5 20 :header-rows: 1 * - SN - KOMPONENTE - MENGE - LINK * - 1 - :ref:`cpn_pico_2` - 1 - |link_pico2_buy| * - 2 - Micro USB Kabel - 1 - * - 3 - :ref:`cpn_breadboard` - 1 - |link_breadboard_buy| * - 4 - :ref:`cpn_wire` - Mehrere - |link_wires_buy| * - 5 - :ref:`cpn_resistor` - 1(10KΩ) - |link_resistor_buy| * - 6 - :ref:`cpn_capacitor` - 1(104) - |link_capacitor_buy| * - 7 - :ref:`cpn_slide_switch` - 1 - **Verständnis des Schiebeschalters** |img_slide| Ein Schiebeschalter hat drei Pins: - **Pin 1**: Verbunden, wenn der Schalter nach einer Seite (z.B. links) umgelegt wird - **Pin 2**: Gemeinsamer Pin (mittlerer Pin) - **Pin 3**: Verbunden, wenn der Schalter nach der anderen Seite (z.B. rechts) umgelegt wird Durch das Lesen der Spannung am gemeinsamen Pin können wir die Position des Schalters bestimmen. **Schaltplan** |sch_slide| GP14 erhält ein unterschiedliches Signal, wenn Sie den Schiebeschalter nach rechts oder links umlegen. Der Zweck des 10K-Widerstands besteht darin, GP14 während des Umschaltens niedrig zu halten (nicht ganz nach links und nicht ganz nach rechts umgelegt). Wenn Sie den Schalter umlegen, können die mechanischen Kontakte schnelle, verrauschte Signale verursachen, bekannt als "Prellen". Der zwischen GP14 und GND angeschlossene Kondensator hilft, diese schnellen Schwankungen zu filtern und liefert ein saubereres Signal. * Schalter nach rechts umgelegt: * Pin 2 (GP14) ist über Pin 1 mit **3.3V** verbunden. * Der GPIO-Pin liest **HIGH** (1). * Schalter nach links umgelegt: * Pin 2 (GP14) ist über Pin 3 mit **GND** verbunden. * Der GPIO-Pin liest **LOW** (0). * Schalter in Mittelstellung: * Pin 2 (GP14) ist weder mit **3.3V** noch mit **GND** verbunden. * Der Pull-Down-Widerstand hält den GPIO-Pin auf **LOW** (0). * Der Kondensator hilft, das Schalterprellen zu reduzieren (Geräusche durch mechanische Bewegung). **Verdrahtung** |wiring_slide| **Schreiben des Codes** .. note:: * Sie können die Datei ``2.7_toggle_left_right.ino`` aus ``newton-lab-kit/arduino/2.7_toggle_left_right`` öffnen. * Oder kopieren Sie diesen Code in **Arduino IDE**. * Wählen Sie das **Raspberry Pi Pico 2** Board und den richtigen Port, dann klicken Sie auf "Upload". .. code-block:: Arduino const int switchPin = 14; // GPIO pin connected to the slide switch int switchState = 0; void setup() { Serial.begin(115200); // Initialize Serial Monitor at 115200 baud pinMode(switchPin, INPUT); // Set the switch pin as input } void loop() { switchState = digitalRead(switchPin); // Read the state of the switch if (switchState == HIGH) { Serial.println("ON"); // Switch toggled to the left } else { Serial.println("OFF"); // Switch toggled to the right } delay(200); // Small delay to avoid flooding the Serial Monitor } Wenn der Code läuft und der serielle Monitor offen ist: Es wird "EIN" angezeigt, wenn der Schalter nach links und "AUS" wenn nach rechts umgelegt wird. **Verständnis des Codes** #. Initialisierung der seriellen Kommunikation: Startet die serielle Kommunikation mit einer Baudrate von 115200. Dies ermöglicht es uns, Nachrichten an den seriellen Monitor zu senden. .. code-block:: Arduino Serial.begin(115200); #. Einrichten des Schaltpins: Konfiguriert switchPin (GP14) als Eingang, um den Zustand des Schalters zu lesen. .. code-block:: Arduino pinMode(switchPin, INPUT); #. Lesen des Schalterzustands: Liest den aktuellen Zustand des Schalters. Er ist HIGH, wenn nach rechts umgelegt und LOW, wenn nach links oder in Mittelposition aufgrund des Pull-Down-Widerstands. .. code-block:: Arduino switchState = digitalRead(switchPin); #. Reaktion auf die Schalterposition: Gibt "EIN" aus, wenn der Schalter nach links (GP14 liest HIGH) und "AUS" wenn nach rechts umgelegt (GP14 liest LOW). .. code-block:: Arduino if (switchState == HIGH) { Serial.println("ON"); } else { Serial.println("OFF"); } **Alternative: Verwendung des internen Pull-Up-Widerstands** Wenn Sie den Schaltkreis vereinfachen und die Anzahl der Komponenten reduzieren möchten, können Sie den internen Pull-Up-Widerstand des Pico verwenden. Beachten Sie jedoch, dass herkömmliche Arduino-Boards keine internen Pull-Down-Widerstände unterstützen, nur interne Pull-Up-Widerstände. Der Raspberry Pi Pico unterstützt INPUT_PULLDOWN, aber in der Arduino-Umgebung kann die Unterstützung variieren. Für dieses Beispiel verwenden wir INPUT_PULLUP. * Schaltkreisänderungen: * Entfernen Sie den externen 10KΩ-Widerstand und den Kondensator. * Schiebeschalterverbindungen: * Pin 1: Verbinden Sie mit GND am Pico. * Pin 2: Verbinden Sie mit GP14 am Pico. * Pin 3: Lassen Sie unverbunden oder verbinden Sie mit GND (da wir den internen Pull-Up verwenden). * Code-Änderungen: .. code-block:: Arduino const int switchPin = 14; // GPIO pin connected to the slide switch int switchState = 0; void setup() { Serial.begin(115200); // Initialize Serial Monitor at 115200 baud pinMode(switchPin, INPUT_PULLUP); // Enable internal pull-up resistor } void loop() { switchState = digitalRead(switchPin); // Read the state of the switch if (switchState == LOW) { Serial.println("ON"); // Switch connected to GND, toggled to the right } else { Serial.println("OFF"); // Switch not connected, reads HIGH due to pull-up } delay(200); // Small delay to avoid flooding the Serial Monitor } **Fazit** In dieser Lektion haben Sie gelernt, wie man einen Schiebeschalter mit dem Raspberry Pi Pico verwendet, um seine Position zu erkennen und darauf basierende Aktionen durchzuführen. Sie haben auch gesehen, wie man einen Pull-Down-Widerstand im Schaltkreis implementiert, um zuverlässige Ablesungen zu gewährleisten, und wie man den internen Pull-Up-Widerstand verwendet, um den Schaltkreis zu vereinfachen. **Weitere Erkundungen** * **Steuerung einer LED**: Modifizieren Sie den Code, um eine LED basierend auf der Schalterposition ein- oder auszuschalten. * **Mehrere Schalter**: Versuchen Sie, mehr Schalter hinzuzufügen, um unterschiedliche Aktionen zu steuern. * **Entprellung**: Implementieren Sie eine Software-Entprellung, um eventuelles Restschalterprellen zu handhaben.