Die Anzeige basiert auf einer 8x8 RGB LED Matrix, welche zu Testzwecken zuerst ueber ein standard ...
Zeigen Sie uns was man mit Elektronik und Microcontroller alles basteln und bauen kann. Lassen Sie ...
LEDs sind eigentlich dazu gedacht zu leuchten. An einem AVR kann man sie aber auch als Lichtsensor ...
Unser Vater/Schwiegervater Rudi hat ein Backes (Steinbackofen) im Garten und versorgt unsere ganze ...
Arduino Boards sind super und sie eignen sich perfekt um schnell Prototypen zu bauen. Hier habe ich ...
Mitglied seit: 23.04.2009
Anleitungen: 18
Kommentare: 62
Sie sind jetzt Fan von Lichtbaendiger
Balkon & Terrassen Wettbewerb
Nimm jetzt an unserem Balkon Wettbewerb teil: Egal welche Anleitung, oder Idee du rund um den Balkon oder Terrasse hast, wir wollen sie sehen! ... mehr erfahren
| Teilahme bis: 23.07.2012 | Aktuelle Teilnehmerzahl: 2 |
|
Perfektes Raumklima - Luft-Entfeuchter Special! Brauchbare Tipps, leichte Anleitungen sowie viele Anregungen finden Sie im Luft-Entfeuchter Special Weitere Infos... |
Anleitung an einen Freund senden
- 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.
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.
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
Kosten: gering
hoch
Schwierigkeit: gering
hoch

| Bei neuen Kommentaren benachrichtigen |
von , am 16.05.2009 um 22:43 Uhr
Ist der Arduino denn auch etwas für absolute Elektronik-Bastel-Anfänger?von , am 17.05.2009 um 11:08 Uhr
Hallo Zacauf 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.

