Licht im Treppenhaus steuern

Hallo,
eigentlich wolltest Du doch kurz und lang drücken als Unterschied haben, dann fehlt Dir erst mal eine zeitliche Komponente. Der Arduino ist so schnell das er wenn Du den Taster drückst dein Zähler ratzfatz auf 1000 angkommen ist. Da kann man Ihn mit einem delay() erst mal ausbremsen wenn der Taster gedrückt wird. Ich hab Deinen Sketch mal ein bisschen umgebaut. Eigentlich ist das was ich da gemacht habe völliger Quatsch, funktioniert aber für deinen Fall.
ich hoffe Du verstehst die Funktion. ich hab ein paar Serielle print mit eingebaut damit Du den Ablauf auf dem Monitor verfolgen kannst und ein paar Kommentare dazu gebaut.

Wenn Du es richtig machen willst solltest Du delay() nicht verwenden und auf millis() umbauen. Dazu Nachtwächter Erklärung suchen. Einfacher ist es eine Lib zu verwenden um zeitliche Abläufe zu realisieren
Heinz

int led = 13;       //LED ist an Pin 13
int tast = 12;      //Taster ist an Pin 12  schaltet gegen GND
int b = 0;

void setup() {
  pinMode(led, OUTPUT);
  pinMode(tast, INPUT_PULLUP);
  Serial.begin(9600);
}

void loop() {
  // solange der Taster gerückt wird zähler erhöhen
  while (digitalRead(tast) == LOW) {                             // Solange der Taster gedrückt ist, wird b, 1 addiert.
    b = b + 1;
    delay(100); // system ausbremsen 
    Serial.println(b);
  }

// wenn der Taster nicht gedrückt ist zäher abfragen
  Serial.println(b);
  if (b <= 3 && b>0 ) {  //falls taster kurz gedrückt wurde
    Serial.print("kurz");
    digitalWrite(led, HIGH);
    delay(2000);
    digitalWrite(led, LOW);
    b = 0;                                                  //b wird wieder auf 0 zurückgesetzt
  }
  if (b >= 3) { //falls taster lang gedrückt wurde
    Serial.print("lang");
    digitalWrite(led, HIGH);
    delay(9000);
    digitalWrite(led, LOW);
    b = 0;                                                 //b wird wieder auf 0 zurückgesetzt
  }

}