LED mit einem Taster schalten

Hallo,
ich mache meine ersten Versuche mit Arduino und LEDs.
Folgende Aufgabe: Tastendruck->LED an; Tastendruck->LED aus; Tastendruck->LED an; usw.
mit nur EINEM Taster.
Ich habe das so gelöst, wie unten gezeigt. Es funktioniert; aber ist das so üblich?

const int buttonPin = 3;
const int ledPin = 13;
int merker=0;

int buttonState = 0;

void setup()
{
pinMode(ledPin, OUTPUT);
pinMode(buttonPin, INPUT);
Serial.begin(9600);
}

void loop()
{
buttonState = digitalRead(buttonPin);

if ((buttonState == HIGH)&&(merker==0))
{
digitalWrite(ledPin, HIGH);
merker=1;
}

if ((buttonState == LOW)&&(merker==1))
{
merker=2;
}

if ((buttonState == HIGH)&&(merker==2))
{
digitalWrite(ledPin, LOW);
merker=3;
}
if ((buttonState == LOW)&&(merker==3))
{
merker=0;
}

Serial.print("Merker= ");
Serial.println(merker);
}

hallo omthomas

Das ist so üblich.
Du könntest statt 1 Merker mit 4 Zuständen 1 mit 2 zuständen und den Zustand des LEDs vom Ausgang lesen ( was aber den Code verlangsamt) oder 1 Merker mit 2 Zuständen für den Taster und 1 Merker mit 2 Zuständen für den Zustand des LEDs. Aber es geht gut so, wie Du's programmiert hast.

Das einzige was Du nicht berücksichtigt hast ist das Prellen des Tasters.
Zum entprellen kannst du kontrollieren ob nach 10mSek der Taster immernoch im gleichen Zustand ist oder die Bibliothek bounce verwenden.

Viele Grüße Uwe

Hallo Uwe,

Danke für die Antwort;
das Entprellen war mir hier nicht wichtig, es ging mir ums Prinzip.

Gruß
Thomas

also vom Prinzip: ja richtig. Praktischer Aufbau benötigt entprellen.
Grüße Uwe