🍪 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

Arduino Lektion 87: Taster entprellen

Posted on 13. Mai 20191. Mai 2023 by Stefan Draeger

Wenn man einen Taster in seine Schaltung einbaut, so wird man früher oder später darauf stoßen, dass dieser mehr als einmal ein Signal sendet. Dieses Verhalten nennt man „prellen“.

Taster mit Pull Down Widerstand
Taster mit Pull Down Widerstand

Im Tutorial Arduino Lektion 33: Taster mit Pull Down Widerstand habe ich bereits erläutert, wie man eine kleine Schaltung mit einem Taster und einen Pull Down Widerstand aufbaut. Jedoch hat diese Schaltung genau das beschriebene Problem, wenn man den Taster drückt und sofort wieder los lässt wird mehr als ein Signal gesendet.

  • Sketch – Taster mit Prellen
    • Video
  • Lösung mit der Bounce2 Bibliothek
      • Sketch – Taster ohne prellen
      • Video

Sketch – Taster mit Prellen

const int btnUp = 2; //Taster

int statusBtnUp = 0; //Status des Tasters
int index = 0; // Zählvariable

void setup() {
  Serial.begin(9600); //Beginn der Seriellenkommunikation
  pinMode(btnUp,INPUT); //Setzen des Eingangssignals des Tasters
}

void loop() {
  
  if(digitalRead(btnUp) == HIGH){ 
    index = index+1;
    Serial.println(index);
  }
}

Video

Lösung mit der Bounce2 Bibliothek

Hier hilft die Bounce2 Bibliothek weiter, diese Bibliothek enthält Funktionalitäten welche genau dieses „prellen“ von Tastern unterdrückt. (Wie man eine Bibliothek der Arduino IDE installiert habe ich bereits im Tutorial Arduino IDE, Einbinden einer Bibliothek ausführlich erläutert.)

Arduino IDE - Bounce2 Bibliothek
Arduino IDE – Bounce2 Bibliothek

Wenn die Bibliothek erfolgreich installiert wurde, dann muss diese über den Befehl „#include <Bounce2.h>“ dem Sketch hinzugefügt werden.

Zunächst einmal muss für jeden Button eine Instanz von „Bounce“ erzeugt werden. Im Konstruktor des Bounce Objektes wird der Pin, an welchem der Taster angeschlossen ist und zusätzlich ein Wert für eine Pause (in Millisekunden)  übergeben.

#include <Bounce2.h>

#define BTN 2

Bounce btnBouncer = Bounce(BTN, 50);

In der Funktion „setup“ muss wie gehabt der pinMode für die Taster auf Input gesetzt werden.

pinMode(BTN, INPUT);

Die Funktion „loop“ muss deutlich umgeschrieben werden, denn wir verwenden nun die Befehle und Funktionen von der Bounce2 Bibliothek.

Im ersten Schritt müssen wir den Taster aktualisieren.

btnBouncer.update();

Um danach zu prüfen ob der Taster gedrückt wurde.

if(btnBouncer.fell()){
  index = index+1;
  Serial.println(index);
}

Wenn man prüfen möchte ob der Taster wieder losgelassen wurde dann nutzt man die Funktion „rose“.

Hier nun der gesamte Sketch zum Nachbauen und selber Testen.

Sketch – Taster ohne prellen

#include <Bounce2.h>

#define BTN 2

int index = 0;

Bounce btnBouncer = Bounce(BTN, 50);

void setup() {
  Serial.begin(9600);
  pinMode(BTN, INPUT);
  
  digitalWrite(BTN, HIGH);  
}

void loop() {
  btnBouncer.update();

  if(btnBouncer.fell()){
    index = index+1;
    Serial.println(index);
  }
  
}

Video

3 thoughts on “Arduino Lektion 87: Taster entprellen”

  1. Rolf sagt:
    19. April 2020 um 01:53 Uhr

    Der Sketch, Taster ohne prellen, hat super funktioniert. Nach drei Tagen als ich ihn nochmal probieren wollte, geht er nicht mehr. D.h. Auf dem Ser. Monitor wird nichts mehr angezeigt. Was mache ich falsch.??
    Kann mir bitte jemand helfen.
    Danke.
    Arduino Uno

    Antworten
    1. Stefan Draeger sagt:
      19. April 2020 um 13:58 Uhr

      Hi,

      wenn du ein Breadboard verwendest, dann prüfe zunächst ob alle Kabel korrekt sitzen.
      Ansonsten nimm doch mal ein Messgerät und prüfe ob der Strom fließt.

      Gruß,

      Stefan

      Antworten
  2. Pingback: Arduino Lektion #105: Taster mit Pull Up Widerstand - Technik Blog

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