Arduino reagiert nach längerer Zeit warten nicht mehr

Hallo zusammen,

Ich habe mir eine kleine Coilgun gebastelt (kommt circa 2 Meter weit). Ich habe zur Bedienung einen Knopf (int Taster) und einen Schiebeschalter (int Laden). Mit dem Schalter wähle ich ob ich schiessen kann oder laden kann und mit dem Knopf löse ich schlussendlich den Schuss aus. Das ganze funktioniert tiptop, wenn man immer zügig nachlädt und wieder schiesst. Wenn man allerdings mal kurz eine Pause macht (vl. 1 min oder so). Dann reagiert der Arduino auf keine Inputs vom Knopf mehr, auch wenn der Schalter mehrmals hin und her geschoben wird. Ich habe das ganze schon an einem Arduino ProMini getestet, wie auch an einem Arduino Mega 2560, bei beiden dasselbe Ergebnis. Hat jemand eine Idee wo der Fehler liegen könnte?

Anbei noch mein Code (ich weiss, ich könnte noch an einer Stelle die If-Abfragen zusammenfassen):

int Spule1 = A0;
int Spule2 = A1;
int Spule3 = A2;
int Taster = 2;
int Sensor1 = 3;
int Sensor2 = 4;
int Sensor3 = 5;
int Sensor4 = 6;
int Laden = 7;
int valL;
int valT;
int valTalt;
int val1;
int val2;
int val3;
int val4;
int timerS;
int pr = 0;

void setup()
{
  pinMode (Spule1, OUTPUT);
  pinMode (Spule2, OUTPUT);
  pinMode (Spule3, OUTPUT);
  digitalWrite (Spule1, LOW);
  digitalWrite (Spule2, LOW);
  digitalWrite (Spule1, LOW);
  pinMode (Sensor1, INPUT);
  pinMode (Sensor2, INPUT);
  pinMode (Sensor3, INPUT);
  pinMode (Sensor4, INPUT);
  pinMode (Taster, INPUT_PULLUP);
  pinMode (Laden, INPUT_PULLUP);
  Serial.begin(9600);
}

void loop()
{
  valL = digitalRead (Laden);
  if (valL == HIGH)
  {
    valT = digitalRead (Taster);
    if (valT == LOW && valTalt == HIGH)
    {
      digitalWrite (Spule1, HIGH);
      timerS = millis();
      pr = 5;
    }
    if (pr == 5)
    {
      if (millis() - timerS > 50)
      {
        digitalWrite (Spule1, LOW);
        pr = 0;
      }
    }
    if (digitalRead(Sensor1) == HIGH)
    {
      spule1();
      pr = 0;
    }
    if (digitalRead(Sensor2) == HIGH)
    {
      spule2();
      pr = 0;
    }
    if (digitalRead(Sensor3) == HIGH)
    {
      spule3();
      pr = 0;
    }
    valTalt = valT;
  }
}

void spule1()
{
  delay(13);
  digitalWrite (Spule1, LOW);
}

void spule2()
{
  digitalWrite (Spule2, HIGH);
  delay(5);
  digitalWrite (Spule2, LOW);
}

void spule3()
{
  digitalWrite (Spule3, HIGH);
  delay(5);
  digitalWrite (Spule3, LOW);
}

Vielen Dank für eure Hilfe schon im voraus! Siki

Du musst die Variable "timers" auf long definieren. Noch besser unsigned long. Das könnte das Problem sein.