Rust auf dem Raspberry Pi Pico · Teil 8TutorialFortgeschritten

Rust

Rust Pico 08: Taster entprellen

Kontaktprellen softwareseitig behandeln. Embedded Rust verständlich erklärt, mit Praxisaufgabe und Musterlösung.

Kapitel: GPIO

Veröffentlicht am

Teil 08: Taster entprellen

Lernziel: Kontaktprellen softwareseitig behandeln.

Voraussetzungen: Der Rust-PC-Grundlagenkurs bzw. Grundkenntnisse in Rust; außerdem die vorangegangenen Pico-Lektionen. Zielboard: Pico 2 / Pico 2 W (ARM); Hinweise für RP2040 in der Kursübersicht.

Worum geht es?

Mechanische Kontakte erzeugen beim Umschalten kurz mehrere Flanken. Eine einfache Entprellung prüft nach einer Wartezeit, ob der Zustand stabil blieb. Für genaue Ereigniszählung ist zusätzlich die Erkennung der Flanke (vorher nicht gedrückt, jetzt gedrückt) nötig.

Schritt für Schritt

let mut vorher = false;
loop {
    let jetzt = taste.is_low();
    if jetzt && !vorher {
        Timer::after(Duration::from_millis(25)).await;
        if taste.is_low() {
            // genau ein bestätigtes Druck-Ereignis
        }
    }
    vorher = jetzt;
    Timer::after(Duration::from_millis(5)).await;
}

Einordnung: Dieses einfache Lernverfahren ist kein vollständiger Entprellautomat für jeden Anwendungsfall.

Hintergrund und häufige Fehler

  • Board prüfen: Pico/Pico W (RP2040) und Pico 2/Pico 2 W (RP2350) brauchen unterschiedliche Compilerziele und Boardkonfigurationen.
  • Hardware zuerst: Vor dem Flashen Pinbelegung, gemeinsame Masse und 3,3-V-Pegel prüfen.
  • Versionsstand: Übernehme die passenden Embassy-Beispiele und Abhängigkeiten aus demselben Repository-Stand; APIs ändern sich zwischen Releases.
  • Schrittweise testen: Erst ein kleines funktionsfähiges Beispiel, danach jeweils genau eine Änderung vornehmen.

Selbst ausprobieren

Erweitere das Beispiel um einen Zähler für bestätigte Tastendrücke.

Musterlösung anzeigen

Vor der Schleife let mut zaehler: u32 = 0; setzen, im bestätigten Ereignis zaehler += 1;.

Dokumentation für deine Versuche

Notiere verwendetes Board, Verdrahtung, Git-Commit oder Bibliotheksversion, Build-Befehl, Ergebnis und aufgetretene Fehlermeldungen. Halte dazu ein Foto oder einen Screenshot fest, der später in den Website-Beitrag übernommen werden kann.

Weiterführende Informationen


← Teil 07 · Teil 09 →