Bemerkung

Hallo, willkommen in der SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasten-Community auf Facebook! Vertiefen Sie sich mit anderen Enthusiasten in die Welt von Raspberry Pi, Arduino und ESP32.

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ühzeitigen Zugang zu neuen Produktankündigungen und exklusiven Einblicken.

  • Spezielle Rabatte: Genießen Sie exklusive Rabatte auf unsere neuesten Produkte.

  • Festliche Promotionen und Gewinnspiele: Nehmen Sie an Verlosungen und Feiertagsaktionen teil.

👉 Bereit, mit uns zu erkunden und zu kreieren? Klicken Sie auf [hier] und treten Sie heute bei!

2.8 Sanft Drücken

In dieser Lektion lernen wir, wie man einen Mikroschalter (auch bekannt als Grenztaster) mit dem Raspberry Pi Pico 2 verwendet, um zu erkennen, wann er gedrückt oder losgelassen wird. Mikroschalter werden häufig in Geräten wie Mikrowellentürschaltern, Druckerabdeckungen oder als Endschalter in 3D-Druckern verwendet, da sie zuverlässig sind und häufige Betätigungen aushalten.

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:

Name

ITEMS IN THIS KIT

LINK

Newton Lab Kit

450+

Newton Lab Kit

Sie können sie auch einzeln über die untenstehenden Links kaufen.

SN

COMPONENT

QUANTITY

LINK

1

Raspberry Pi Pico 2

1

KAUFEN

2

Micro-USB-Kabel

1

3

Steckbrett

1

KAUFEN

4

Jumperkabel

Mehrere

KAUFEN

5

Widerstand

1(10KΩ)

KAUFEN

6

Kondensator

1(104)

KAUFEN

7

Mikroschalter

1

Verständnis des Mikroschalters

Ein Mikroschalter hat typischerweise drei Pins:

img_micro_switch

  • Common (C): Der mittlere Pin.

  • Normally Open (NO): Verbunden mit dem Common-Pin, wenn der Schalter gedrückt ist.

  • Normally Closed (NC): Verbunden mit dem Common-Pin, wenn der Schalter nicht gedrückt ist.

Durch entsprechendes Verbinden des Schalters können wir erkennen, wann er gedrückt wird, indem wir das Spannungsniveau an einem GPIO-Pin lesen.

Schaltplan

sch_limit_sw

Standardmäßig ist GP14 niedrig und beim Drücken hoch.

Der Zweck des 10K-Widerstands ist es, GP14 während des Drückens niedrig zu halten.

Wenn Sie einen mechanischen Schalter drücken, können die Kontakte prellen, was zu mehreren schnellen Übergängen zwischen offenen und geschlossenen Zuständen führt. Der zwischen GP14 und GND angeschlossene Kondensator hilft, dieses Rauschen zu filtern.

  • Schalter nicht gedrückt:

    • Der Common (C)-Pin ist mit dem NC-Pin verbunden, der mit GND verbunden ist.

    • GP14 liest LOW (0V).

  • Schalter gedrückt:

    • Der Common (C)-Pin ist mit dem NO-Pin verbunden, der mit 3.3V verbunden ist.

    • GP14 liest HIGH (3.3V).

Verdrahtungsplan

wiring_limit_sw

Schreiben des Codes

Wir werden ein einfaches Programm schreiben, das erkennt, wann der Mikroschalter gedrückt wird, und eine Nachricht auf dem Seriellen Monitor ausgibt.

Bemerkung

  • Sie können die Datei 2.8_press_gently.ino aus newton-lab-kit/arduino/2.8_press_gently öffnen.

  • Oder kopieren Sie diesen Code in die Arduino IDE.

  • Wählen Sie das Raspberry Pi Pico 2-Board und den richtigen Port, dann klicken Sie auf „Upload“.

const int switchPin = 14;   // GPIO pin connected to the micro 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("The switch is pressed!");
  } else {
    Serial.println("The switch is not pressed.");
  }
  delay(200);  // Small delay to avoid flooding the Serial Monitor
}

Wenn der Code ausgeführt wird und der Serielle Monitor geöffnet ist, drücken und lösen Sie den Mikroschalter. Der Serielle Monitor zeigt „Der Schalter ist gedrückt!“ an, wenn Sie den Schalter drücken, und „Der Schalter ist nicht gedrückt.“, wenn Sie ihn loslassen.

Verständnis des Codes

  1. Initialisierung der seriellen Kommunikation:

    Startet die serielle Kommunikation mit einer Baudrate von 115200. Dies ermöglicht es uns, Nachrichten auf dem Seriellen Monitor auszugeben.

    Serial.begin(115200);
    
  2. Einrichten des Schalter-Pins:

    Konfiguriert switchPin (GP14) als Eingang, um den Zustand des Schalters zu lesen.

    pinMode(switchPin, INPUT);
    
  3. Lesen des Schalterzustands:

    Liest den aktuellen Zustand des Schalters. Er ist HIGH, wenn gedrückt, und LOW, wenn nicht gedrückt.

    switchState = digitalRead(switchPin);
    
  4. Reaktion auf Schalterdruck:

    Gibt eine Nachricht aus, je nachdem, ob der Schalter gedrückt ist oder nicht.

    if (switchState == HIGH) {
      Serial.println("The switch is pressed!");
    } else {
      Serial.println("The switch is not pressed.");
    }
    

Alternative: Verwendung des internen Pull-Up-Widerstands

Wenn Sie die Schaltung vereinfachen und die Anzahl der Komponenten reduzieren möchten, können Sie den internen Pull-Up-Widerstand des Pico verwenden.

  • GP14 ist mit GND verbunden, wenn der Schalter gedrückt ist, also liest er LOW (0).

  • GP14 liest HIGH, wenn der Schalter nicht gedrückt ist, aufgrund des internen Pull-Up-Widerstands.

  • Schaltungsänderungen:

    Entfernen Sie den externen 10KΩ-Widerstand und den Kondensator.

  • Mikroschalterverbindungen:

    • Common (C) Terminal: Verbinden Sie mit GP14 auf dem Pico.

    • Normally Open (NO) Terminal: Verbinden Sie mit GND auf dem Pico.

    • Normally Closed (NC) Terminal: Lassen Sie unverbunden.

  • Code-Änderungen:

    const int switchPin = 14;   // GPIO pin connected to the micro 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("The switch is pressed!");
      } else {
        Serial.println("The switch is not pressed.");
      }
      delay(200);  // Small delay to avoid flooding the Serial Monitor
    }
    

Entprellen des Schalters

Mechanische Schalter können aufgrund von prellenden Kontakten Geräusche erzeugen. Um die Zuverlässigkeit Ihrer Messungen zu verbessern, können Sie eine softwareseitige Entprellung implementieren.

const int switchPin = 14;   // GPIO pin connected to the micro switch
int switchState = 0;        // Current state of the switch
int lastSwitchState = HIGH; // Previous state of the switch
unsigned long lastDebounceTime = 0;  // Time of the last state change
unsigned long debounceDelay = 50;    // Debounce time in milliseconds

void setup() {
  Serial.begin(115200);
  pinMode(switchPin, INPUT_PULLUP);
}

void loop() {
  int reading = digitalRead(switchPin);

  if (reading != lastSwitchState) {
    lastDebounceTime = millis();
  }

  if ((millis() - lastDebounceTime) > debounceDelay) {
    if (reading != switchState) {
      switchState = reading;

      if (switchState == LOW) {
        Serial.println("The switch is pressed!");
      } else {
        Serial.println("The switch is not pressed.");
      }
    }
  }

  lastSwitchState = reading;
}
  • Überprüft, ob sich die Lesung vom letzten Zustand geändert hat.

  • Wenn ja, wird die lastDebounceTime zurückgesetzt.

  • Wenn die Lesung nach Ablauf der Entprellverzögerung stabil bleibt, wird der neue Zustand als gültig angesehen.

Fazit

In dieser Lektion haben Sie gelernt, wie man einen Mikroschalter mit dem Raspberry Pi Pico verwendet, um zu erkennen, wann er gedrückt oder losgelassen wird. Sie haben auch gesehen, wie man einen Pull-Down-Widerstand in der Schaltung einsetzt, um zuverlässige Messungen zu gewährleisten, und wie man den internen Pull-Up-Widerstand verwendet, um die Schaltung zu vereinfachen. Zusätzlich haben Sie über das Entprellen gelernt, um das Rauschen mechanischer Schalter zu handhaben.

Weitere Erkundungen

  • Steuerung einer LED: Modifizieren Sie den Code, um eine LED einzuschalten, wenn der Schalter gedrückt wird.

  • Mehrere Schalter: Versuchen Sie, weitere Mikroschalter hinzuzufügen, um verschiedene Eingaben zu erkennen.

  • Erstellen eines Zählers: Zählen Sie, wie oft der Schalter gedrückt wird, und zeigen Sie es an.