

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. LEDs mit Vorwid...
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. LEDs mit Vorwid...
Schritt 1 / 3 - 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. 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. Die Lösung: Man muß die Veränderung des Tasters abfragen und nicht nur den jetzigen Zustand.
weiter mit: Veränderung des Tasters abfragen ⇒
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. Die Lösung: Man muß die Veränderung des Tasters abfragen und nicht nur den jetzigen Zustand.
weiter mit: Veränderung des Tasters abfragen ⇒
Schlagwörter:
Arduino, AVR, Taster, LED, Microcontroller, Elektronik, Schaltung, Elektrische Schaltung, Platine, Steuerung, Schalter
Schwierigkeit:
mittel
Zeitbedarf:
30 Minuten
Bewertung:
Aufrufe:
14860
bewerten:
Empfehlen:
Link zur Anleitung:
Anzeige
auch interessant
Einkaufsliste
Werkzeug:
- PC
Material:
- Arduino Board
- Taster
- 5 Stück LEDs
Kommentare