Millis()

Guten Abend

ich habe eine frage ist es möglich mit Arduino
wenn ich über einen switch über eine taste
in meinen fall Taster1 auf Zb. case1: binn
einen Zeit laufen lassen unter 10000ms soll
er auf LOW bleiben danach auf HIGH und nach
30000ms wieder auf LOW Gehen und sol danach
da auch bleiben und wen ich mit der taste auf case2:
wiederzurückkomme soll das ganze wiede passieren

danke ich habe einen kleinen exsperiment gemacht
mi diesem sketch unten haber wen ich auf case1: binn
nach 10000ms geht er auf LOW

#include <Arduino.h>
#include <LiquidCrystal.h>
#include <SoftwareSerial.h>


#define S1 41
#define S2 42


int Taster1=0 ;
int Pulsante2=0 ;

int counterP1=0;
int counterP2=0;


unsigned long Timer1 = 0;
unsigned long Timer2 = 0;

LiquidCrystal lcd(8, 9, 4, 5, 6, 7);


void setup()
{
  Serial.begin(9600);
  Serial.read();

   pinMode (Pulsante1,INPUT);
   pinMode (Pulsante2,INPUT);

}


void funzione_scambio()

{
     Taster1=digitalRead (S1);

 if (Taster1 ==HIGH)

{
 counterP1++;
if( counterP1>2)
counterP1 = 0;

}

 switch (counterP1)

{

case 0:

 lcd.begin(16, 2);
lcd.print (" case 0");



break;





case 1:
  lcd.begin(16, 2);
  lcd.print (" case 1");

 if (Timer1 == 0) {                    // timer1 non attivo
    Timer1 = millis();                    // parte ritardo accensione
    break;                                 // esci
  }

  if (Timer2 == 0) {                   // timer2 non attivo
    if (millis() - Timer1 > 10000) {  // ritardo accensione scaduto
  Serial.println("HIGH");
 // digitalWrite(pin, HIGH);
    }
    Timer2 = millis();
              // accensione LED
  }
  else {                                     // timer2 attivo
    if (millis() - Timer2 > 30000) {   // spegnimento LED
     Serial.println("LOW");
      //digitalWrite(pin, LOW);
      Timer1 = 0;
      Timer2 = 0;
    }
  }
  break;











case 2:
lcd.begin(16, 2);
lcd.print (" case 2");

break;



  }
}





void loop()
{
  funzione_scambio();
}

Mir fällt auf daß Pulsante1 gar nicht definiert ist und Pulsante2 den Pin0 verwendet, der für das Upload des Sketches und die Verbindung über Serial zum PC notwendg ist.
Du definierst S1 nicht als Eingang.

Mit einem Arduino MEGA brauchst Du die SoftwareSerial nicht; der hat 4 Serielle Hardware-Schnittstellen

CounterP1 zählt unkontrolliert hoch, denn er zählt solange der Taster gedrückt ist und nicht nur 1 mal bei jedem betätigen des Tasters.
siehe Beispiel 3 http://www.electroschematics.com/8964/turn-on-led-button-arduino/ ( der Taster wird auch entprellt).
oder
https://www.arduino.cc/en/tutorial/switch Aber gib einen Vorwiderstand in Reihe zum LED. Das Uraltmodel das verwendet wurde, könnte noch einen Widerstand auf Pin 13 gehabt haben.

was soll das "Serial.read();" im setup?

PS: C'é anche la parte italiana del forum.
Ciao Uwe