Taster am Arduino Board anschlie├čen

Einen Taster anschlie├čen klingt jetzt eigentlich ziemlich trivial. Aber man kann schnell ein paar Fehler einbauen. Ich zeige hier an einem Beispiel was man bei der Programmierung beachten mu├č damit der Taster ohne Probleme funktioniert. ┬á ┬á ┬á ┬á

Taster abfragen

Als Beispiel habe ich 5 LEDs und einen Taster an das Arduino Board angeschlossen. Mit dem Taster sollen die LEDs einzeln angeschaltet werden, und wenn alle leuchten wieder ausschalten.   Vorbereitung: LEDs mit Vorwiderstand und Taster mit pulldown Wi ...

Ver├Ąnderungen des Tasters abfragen

Es wird nun eine weitere Variable f├╝r den Status des Tasters eingef├╝gt und die Ver├Ąnderung abgefragt. ┬á ┬á tasterval=digitalRead(taster); ┬á┬á┬á if(tasterval!=tasterstatus) ┬á┬á┬á { ┬á┬á┬á┬á┬á if(tasterval==HIGH) ┬á┬á┬á┬á┬á { pinzaehler;} ┬á┬á┬á┬á┬á if (pinzaehler>num_pi ...

Taster entprellen

Man fragt den Taster ab, wartet 10 Millisekunden und fragt ihn erneut ab. Wenn jetzt eine Ver├Ąnderung da ist, war es wahrscheinlich das Nachschwingen (Prellen) des Tasters. So schnell hintereinander schafft man es nicht den Taster zu dr├╝cken. ┬á ┬á tas ...

Über diese Anleitung
Diese Anleitung bewerten:
13 Bewertungen, insg. 54 Punkte
Lichtbaendiger Sende mir eine private Nachricht
Mitglied seit: 23.04.2009
Anleitungen: 23
Kommentare: 66

Sie sind jetzt Fan von Lichtbaendiger

Views: 29141    Erstellt am: 09.05.2009
Kategorien: Computer & Elektronik
Kommentare zur Anleitung: 3
Weitere interessante Anleitungen
64 pixel RGB LED Anzeige - Noch ein Arduino Clone von madworm
Die Anzeige basiert auf einer 8x8 RGB LED Matrix, welche zu Testzwecken zuerst ueber ein standard ...
Elektronik & Microcontroller Wettbewerb von Valeria
Zeigen Sie uns was man mit Elektronik und Microcontroller alles basteln und bauen kann. Lassen Sie ...
LEDs als Lichtsensor am Arduino von Lichtbaendiger
LEDs sind eigentlich dazu gedacht zu leuchten. An einem AVR kann man sie aber auch als Lichtsensor ...
Steinbackofen / Grill twittern lassen von Lichtbaendiger
Unser Vater/Schwiegervater Rudi hat ein Backes (Steinbackofen) im Garten und versorgt unsere ganze ...
LED Multifunktionaluhr bauen von toMTom_278
Multifunktionaluhr - Berufsreifeprüfungsprojekt 2009 Mein Partner und ich haben uns eine ...
Kostenloser Newsletter
Kostenlosen Newsletter abonnieren
Intro (gesamt: 3 Schritte)
Alle
Schritte
  • 1. Schritt
  • 2. Schritt
  • 3. Schritt

Anleitung an einen Freund senden

Bitte alle Pflichtfelder ausfüllen
Die Email wurde verschickt
Senden an *
Name *
Von *
Betreff
* Pflichtfelder

Taster am Arduino Board anschlie├čen

Intro

Einen Taster anschließen klingt jetzt eigentlich ziemlich trivial. Aber man kann schnell ein paar Fehler einbauen.

Ich zeige hier an einem Beispiel was man bei der Programmierung beachten muß damit der Taster ohne Probleme funktioniert.

 

 

 

 

Melden Sie sich kostenlos an, um diese Werbung dauerhaft auszublenden.

Taster am Arduino Board anschlie├čen


Schritt 1: Taster abfragen

Als Beispiel habe ich 5 LEDs und einen Taster an das Arduino Board angeschlossen.

Mit dem Taster sollen die LEDs einzeln angeschaltet werden, und wenn alle leuchten wieder ausschalten.

 

Vorbereitung:

LEDs mit Vorwiderstand und Taster mit pulldown Widerstand anschließen.

Ein- und Ausgänge im Programm setzen.

 

int taster = 7;      

int tasterval = 0;

int pins[] = {2,3,4,5,6};      

int num_pins = 5;              

int pinzaehler = 0;

void setup()

{

  int i;

  pinMode(taster,INPUT);

  tasterstatus=digitalRead(taster);

  for (i = 0; i < num_pins; i )

    pinMode(pins[i], OUTPUT);      

}

 

Nun wird der Taster abgefragt. Immer wenn er gedrückt wird erhöht sich der Zähler für die LEDs und wenn alle leuchten wird er auf 0 gesetzt.

void loop()

{

  int i;

  tasterval=digitalRead(taster);

      if(tasterval==HIGH)

      { pinzaehler;}

      if (pinzaehler>num_pins)

      {pinzaehler=0;}

 

hier werden nun die LEDs an- und ausgeschaltet.

  for (i = 0; i < num_pins; i )

  {

    if(pinzaehler>i)

    {digitalWrite(pins[i], HIGH);}

    else

    {digitalWrite(pins[i], LOW);}

  }

}

 

Wenn man nun das Video anschaut merkt man, dass dies so lediglich als Zufallsgenerator taugt.

Was ist falsch?

Hier fragt der Prozessor den Taster jedesmal ab wenn er die loop() Funktion aufruft. Und das geht schneller als man schauen kann. Wenn der Taster gedrückt wird hat man ein sehr schnelles Lauflicht.

Lösung

Man muß die Veränderung des Tasters abfragen und nicht nur den jetzigen Zustand.

 

You need Flash player 8+ and JavaScript enabled to view this video.

Schritt 2: Ver├Ąnderungen des Tasters abfragen

Es wird nun eine weitere Variable für den Status des Tasters eingefügt und die Veränderung abgefragt.

 

  tasterval=digitalRead(taster);

    if(tasterval!=tasterstatus)

    {

      if(tasterval==HIGH)

      { pinzaehler;}

      if (pinzaehler>num_pins)

      {pinzaehler=0;}

    }

    tasterstatus=tasterval;

 

Im Video sieht man, dass es jetzt schon funktioniert, nur manchmal wird ein Tastendruck doppelt gezählt.

Was ist der Fehler im Programm?

Diesmal liegt es nicht am Programm sondern am Taster. Der Taster klickt und schwingt noch ein bischen nach. Dies kann vom Prozessor als doppelter Druck gezählt werden. Den Effekt nennt man Prellen.

Lösung

Bessere (entprellte) Taster kaufen, oder das Prellen im Programm ausfiltern

You need Flash player 8+ and JavaScript enabled to view this video.

Kosten: gering hoch

Schwierigkeit: gering hoch


Benötigte Materialien: Arduino Board (open hardware) oder andere Programmierumgebung LEDs Taster Breadboard Kabel
3 Kommentare
Schreiben auch Sie einen Kommentar zu dieser Anleitung
 

von Zak_McKracken, am 16.05.2009 um 22:43 Uhr

Ist der Arduino denn auch etwas f├╝r absolute Elektronik-Bastel-Anf├Ąnger?

von Lichtbaendiger, am 17.05.2009 um 11:08 Uhr

Hallo Zac

auf jeden Fall auch f├╝r Anf├Ąnger geeignet. Das Board gibt es fertig aufgebaut schon f├╝r 20,- ÔéČ. Software und Hardware ist open source. Es l├Ąsst sich mit einer Hand voll Befehle programmieren und wird per USB angeschlossen.

von Kemikehr, am 16.01.2013 um 10:06 Uhr

Gute Anleitung und Gut zu wissen. Schauen wir mal ob ich in Zukunft etwas damit umzusetzen weis.