🍪 Privacy & Transparency

We and our partners use cookies to Store and/or access information on a device. We and our partners use data for Personalised ads and content, ad and content measurement, audience insights and product development. An example of data being processed may be a unique identifier stored in a cookie. Some of our partners may process your data as a part of their legitimate business interest without asking for consent. To view the purposes they believe they have legitimate interest for, or to object to this data processing use the vendor list link below. The consent submitted will only be used for data processing originating from this website. If you would like to change your settings or withdraw consent at any time, the link to do so is in our privacy policy accessible from our home page..

Vendor List | Privacy Policy
Skip to content

Technik Blog

Programmieren | Arduino | ESP32 | MicroPython | Python | Raspberry PI

Menu
  • Projekte
    • LED’s
    • Servo & Schrittmotoren
    • Sound
    • LCD’s
    • Kommunikation
    • Sicherheit
    • Weekend Project
  • Arduino
    • Tutorials
    • ProMini
      • Anschließen & Programmieren
    • Nano
      • Arduino Nano – Übersicht
    • UNO
      • Übersicht
    • MEGA 2560
      • Übersicht
    • Leonardo
      • Übersicht
    • NodeMCU
      • NodeMCU – “Einer für (fast) Alles!”
    • Lilypad
      • Arduino: Lilypad “Jetzt Geht’s Rund!”
    • WEMOS
      • WEMOS D1 – Arduino UNO kompatibles Board mit ESP8266 Chip
      • WEMOS D1 Mini – Übersicht
      • Wemos D1 mini Shields
    • STM32x
      • STM32F103C8T6 – Übersicht
    • Maker UNO
      • Maker UNO – Überblick und Test
    • ATTiny85
      • Mini Arduino mit ATTiny85 Chip
      • ATtiny85 mit dem Arduino UNO beschreiben
  • Android
  • Über mich
  • DeutschDeutsch
  • EnglishEnglish
Menu

Micropython – Taster entprellen ohne time.sleep

Posted on 10. Oktober 202229. April 2023 by Stefan Draeger

Wenn du einen Taster am Mikrocontroller anschließt, wird dir sicher aufgefallen sein, dass mehrere Signale beim Betätigen erkannt werden. Dieses nennt man prellen.

Micropython - Taster entprellen ohne time.sleep
Micropython – Taster entprellen ohne time.sleep

Um dieses prellen am Taster zu verhindern, können wir recht einfach eine kleine Pause von wenigen Millisekunden nach dem Betätigen einlegen. Diese Pause sorgt dafür, dass beim Loslassen der Mikrocontroller dieses nicht erkennt.

Wie du einen Taster mit Micropython am Raspberry Pi Pico ausließt, habe ich dir im Beitrag Raspberry PI Pico #4 – Taster mit PullDown & PullUp abfragen ausführlich erläutert.

Aufbau der Schaltung - Raspberry PI Pico mit Taster & Pullup Widerstand
Aufbau der Schaltung – Raspberry PI Pico mit Taster & Pullup Widerstand

  • Warum zusätzlich ohne time.sleep?
  • Eine kleine Schaltung mit zwei LEDs und einem Taster
  • Quellcode – Micropython Taster entprellen

Warum zusätzlich ohne time.sleep?

Im Titel findest du den Zusatz „ohne time.sleep“, denn dieses finde ich besonders nützlich. Bei einem time.sleep legt der Mikrocontroller eine Pause ein und kann in der Zwischenzeit keine weiteren Operationen ausführen.

Wenn du nur eine kleine Schaltung zum Steuern einer LED, Relais etc. hast, dann kann das manchmal vernachlässigt werden. Jedoch sieht das anders aus, wenn du Sensorwerte abfragen und anzeigen lassen möchtest.

Eine kleine Schaltung mit zwei LEDs und einem Taster

Wollen wir nun eine kleine Schaltung auf einem Breadboard aufbauen.

Dazu benötigst du:

  • einen Raspberry Pi Pico / Pico W
  • ein 400 Pin Breadboard,
  • ein paar Breadboardkabel, 10 cm, männlich – männlich,
  • zwei 5 mm LEDs,
  • zwei 220 Ohm Widerstände,
  • einen Taster,
  • ein 10 kOhm Widerstand

Das nachfolgende Beispiel kannst du auch alternativ mit einem ESP32 nachbauen. Dieser ist derzeit deutlich günstiger als der Raspberry Pi Pico W.

BauteilRaspberry Pi Pico W
LED rot
AnodeGPIO 15
KathodeGND, Pin 38
LED grün
AnodeGPIO 14
KathodeGND, Pin 38
Taster
Pin 1GPIO 16, 3v3V
Pin 2GND, Pin 38

In dem Code lasse ich im Hintergrund eine grüne LED im Takt von 100 ms. Blinken und kann recht einfach mit einem Tastendruck eine rote LED steuern.

Sollte man jedoch mit der Funktion time.sleep arbeiten, so würde das Betätigen eines Tasters nicht erkennt werden und die rote LED würde den Status nicht ändern.

Quellcode – Micropython Taster entprellen

# Importieren der benötigten Module
from machine import Pin
import time

# LEDs an den Pins 14 & 15 als Ausgang definiert
led_gruen = Pin(14, Pin.OUT)
led_rot = Pin(15, Pin.OUT)
 
# Taster am Pin 16 als Eingang definiert
button = Pin(16, Pin.IN)

# Variablen für die Werte
# nächste Ausführung eines Tastendrucks
next_button_action = 0
# Zeit min. zwischen zwei Tastendrucks
button_delay = 100

# Funktion welche ausgeführt werden soll wenn
# der Taster betätigt wird.
# Parameter - pin 
def button_handler(pin):
    global next_button_action, button_delay
    
    if time.ticks_ms() < next_button_action:
        return
   
    next_button_action = time.ticks_ms() + button_delay
    
    if pin == button:
        # Umkehren des Signals am digital
        led_rot.toggle()

# Interrupt auf den Taster legen
button.irq(trigger = machine.Pin.IRQ_RISING, handler = button_handler)

# Hintergrundaktivität
# einfach eine LED im Takt von 100ms
# blinken lassen

# Hier nutzen wir die gleiche Funktion wie auch beim Taster!

next_led_action = 0
led_delay = 100

while True:
    if time.ticks_ms() < next_led_action:
        continue
   
    next_led_action = time.ticks_ms() + led_delay
    led_gruen.toggle()

Schreibe einen Kommentar Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Kategorien

Tools

  • 8×8 LED Matrix Tool
  • 8×16 LED Matrix Modul von Keyestudio
  • 16×16 LED Matrix – Generator
  • Widerstandsrechner
  • Rechner für Strom & Widerstände
  • ASCII Tabelle

Meta

  • Videothek
  • Impressum
  • Datenschutzerklärung
  • Disclaimer
  • Kontakt
  • Cookie-Richtlinie (EU)

Links

Blogverzeichnis Bloggerei.de Blogverzeichnis TopBlogs.de das Original - Blogverzeichnis | Blog Top Liste Blogverzeichnis trusted-blogs.com
©2023 Technik Blog | Built using WordPress and Responsive Blogily theme by Superb