In diesem Beitrag zeige ich den Umgang mit dem push button und wie man Statusänderungen beim drücken des Buttons erkennen und darauf reagieren kann. Ein push button ist nicht in der Lage seinen Zustand nach betätigen beizubehalten, wie wir das z.B. von einem normalen Lichtschalter gewohnt sind. Wenn man einen normalen Lichtschalter drückt dann geht die Lampe an, drückt man diesen Schalter erneut geht die wieder Lampe aus. Bei dem push button würde die Lampe nur so lange leuchten wie wir den Finger auf dem button lassen, sobald wir den Finger aber vom Button nehmen geht das Licht aus. Um nun dem push button die Eigenschaften eines normalen Lichtschalters zu verleihen, müssen wir den aktuellen Zustand des Buttons und den Wert der LED speichern und diese bei jedem betätigen des Buttons abfragen.
Erforderliche Komponenten
- 1 x Steckbrett
- 1 x push button
- 1 x 10 kOhm Widerstand für den push button
- 1 x LED
- 1 x 220 Ohm Widerstand für die LED
- ein paar Kabel
Steckplatine
Arduino Sketch
In diesem Sketch können Sie gut erkennen wie man einen push button als Ein- Aus-Schalter benutzen kann. Um die Statusänderung beim Schalten zu erkennen und nutzen zu können, habe ich 3 Variablen angelegt.
- state = 0 (LOW) wenn der Button los gelassen wird, 1 (HIGH) so lange der Button gedrückt wird
- lastState = 0 (LOW) wenn die Lampe an ist, 1 (HIGH) wenn die LED aus ist
- ledState = 0 (LOW) wenn die Lampe an ist, 1 (HIGH) wenn die LED aus ist
Wenn Sie den Button betätigen dann wird geprüft ob der Wert von lastState mit dem Wert von state übereinstimmt. Stimmen die Werte nicht überein, dann wird als nächstes geprüft ob der Button gerade gedrückt wird. Wird dieser gerade gedrückt dann wird geprüft ob der Wert der Variablen ledState 1 ist, also ob die LED leuchtet und dementsprechend ein oder aus geschaltet.
const int switchPin = 2; const int ledPin = 13; int state; int lastState; int ledState; void setup() { pinMode(ledPin, OUTPUT); pinMode(switchPin, INPUT); Serial.begin(9600); } void loop() { state = digitalRead(switchPin); if (state != lastState) { if (state == HIGH) { if (ledState == HIGH) { ledState = LOW; Serial.println("LED AUS"); } else { ledState = HIGH; Serial.println("LED EIN"); } } lastState = state; } digitalWrite(ledPin, ledState); delay(20); }
The post Arduino – der Push Button appeared first on Fluuux - TechBlog.