ArduinoUno reagiert bei Taster zu langsam

Hallo,

Seit kurzem( 5 Stunden :D) beschäftige ich mich mit dem ArduinoUno und möchte lernen wie man Programme schreibt und mich mit der Hardware auseinander setzen.

Mein Problem ist folgendes:
Ich habe zum lernen ein kleines `Progrämmchen´ geschrieben: Eine LED(led1) soll dauerhaft blinken solange ein Taster nicht gedrückt ist. Wird er gedrückt leuchtet eine andere(led2) auf und blinkt. Soweit funktioniert es auch. Wen ich aber den Taster loslasse dauert es ca.3s bis er reagiert und die led1 wieder blinkt. Andersrum geht es schnell. led1 geht sofort aus wen der Taster betätigt wird. Loslassen= 3s Reaktionszeit.
Aufgebaut ist die Schlatung so: Pulldown Widerstand 1kOhm, led1 leider ohne Widerstand(hab keine mehr) und led2 mit einem 330Ohm Widerstand.

int ledpin=1;
int tasterpin=2;
int tasterstatus;
int ledpin1=3;

void setup(){
  pinMode(ledpin, OUTPUT);
  pinMode(tasterpin, INPUT);
  pinMode(ledpin1, OUTPUT);}
   
   
void loop(){
  tasterstatus=digitalRead(tasterpin);
   if (tasterstatus==HIGH){
        digitalWrite(ledpin, HIGH);
        delay(500);
        digitalWrite(ledpin,LOW);
        delay(500);
        digitalWrite(ledpin, HIGH);
        delay(500);
        digitalWrite(ledpin,LOW);
        delay(500);}
         else
           digitalWrite(ledpin1,HIGH);
           delay(15);
           digitalWrite(ledpin1,LOW);
           delay(15);
}

Worin liegt der Fehler bzw. wie muss ich Programmieren damit es ohne Verzögerung läuft?
Bitte, einfach erklären damit ich es an Anfänger es auch verstehen kann.

Danke
Lg Alex

P.S. Wieso eine Pulldown Widerstand und nicht einfach ohne? Arduino misst-keine Spannung, weil Taster nicht gedrückt und führt befehl aus. wozu ein Pulldown Widerstand? Ich verstehe den Sinn nicht...

Das delay() blockiert den Prozessor während es läuft

Schau dir mal millis() an:

Der Pulldown-Widerstand ist nötig weil offene digitale Eingänge undefiniert sind. Du kannst auch die internen Pullups mit INPUT_PULLUP verwenden und gegen Masse schalten:

Dann ist der Taster wenn er nicht gedrückt ist HIGH und gedrückt LOW

Schmeiss die delays raus und schau Dir blinkwithoutdelay an.
Und verwendete Eingänge dürfen nicht in der Luft hängen, die müssen auf definierten Level.

walex:
led1 leider ohne Widerstand(hab keine mehr)

Und betreibe keine LED ohne Widerstand, wenn dir dein Arduino lieb ist!

Passende Widerstände lassen sich doch in vielen Elektroabfällen finden. Iwas über 300 Ohm und kleiner 1k Ohm reicht doch aus.
Ansonsten kannst du auch Led auf Pin 13 nutzen.

Mach mal ein Foto vom Aufbau. Sieht so aus, als ob der Taster nicht richtig angeschlossen ist.

Und mit einer LED ohne Vorwiderstand riskierst du deinen Arduino.

Doppelpost, wir sind schon längst weiter.

Auch 1kOhm gehen als Vorwiderstände für LED gut.
Außerdem verwende nicht Pin 1 weil dort die serielle Schnittstelle liegt über die der Arduino UNO programmiert wird. Du kannst die Programmierung blockieren.

Grüße Uwe

Klaus_ww:
Doppelpost, wir sind schon längst weiter.

Hab beide Posts vereint.
Grüße Uwe