[Risolto] Reset emergenza ed esecuzione di un programma

Salve,
per realizzare il mio progetto per la maturità mi sto affidando ad arduino per il comando del meccanismo (un sistema automatico di parcheggio bici). Fino ad ora ho degli ottimi risultati, ma ora mi trovo difronte ad un problemone.
In poche parole arduino deve eseguire il ciclo (già scritto e funzionante) quando schiaccio un pulsante, fare un altro ciclo quando schiaccio l'emergenza( che non è altro che togliere corrente a tutti i relè che sto utilizzando) e con il pulsante reset riportare tutto allo stato iniziale.
Io ho già scritto i tre programmi singoli, ma ora devo riuscire ad inserirli dentro al loop di arduino in modo che combacino perfettamente... Qualche consiglio?
allego un file con lo schema dei collegamenti e i tre programmi separati per consigli eventuali.

programma reset:

mem1 = HIGH;
mem2 = LOW;
mem3 = LOW;
mem4 = LOW;
mem5 = LOW;
mem6 = LOW;

pernodentroValue = digitalRead (pernodentro);
finegiuValue = digitalRead ( finegiu) ;
flangiaValue = analogRead (flangia) ;

if(pernodentroValue == LOW){
	digitalWrite(pernoi1, LOW);
	digitalWrite(pernoi2, LOW);
	}
	else {
		digitalmente (pernoi1, HIGH);
		digitalmente (pernoi2, HIGH);
		}
	}

if (finegiuValue == LOW) {
	digitalWrite ( carrogiu, LOW);
	}
	else {
		digitalWrite( carrogiu, HIGH);
		}
if (flangiaValue > zero) {
	digitalWrite (flangiagiu, LOW);
	{
	else {
		digitalWrite ( flangiagiu, HIGH);
		}

programma di emergenza:

mem1 = LOW;
	mem2 = LOW;
	mem3 = LOW;
	mem4 = LOW;
	mem5 = LOW;
	mem6 = LOW;
	digitalWrite (pernoa1, HIGH);
	digitalWrite (pernoa2, HIGH);
	digitalWrite (pernoi1, HIGH);
	digitalWrite (pernoi2, HIGH);
	digitalWrite (flangiasu, HIGH);
	digitalWrite (flangiagiu, HIGH);
	digitalWrite (Carrosu, HIGH);
	digitalWrite (carrosu, HIGH);

ciclo del meccanismo:

if (mem1 == HIGH){
   delay (20);
   digitalWrite (pernoi, HIGH);
   delay (20);
   
     if (ciclosalita == HIGH && mem1 == HIGH && pernodentroValue == HIGH) { 
       delay (30);
       digitalWrite ( pernoa, LOW);
       delay (20);
     }
   }
   
 if (pernofuoriValue == HIGH && mem1 == HIGH) {
  mem2 = HIGH;
  mem1 = LOW;}
  if(mem2 == HIGH){
  
   delay (20);
   digitalWrite (pernoa, HIGH);
   delay (20);
     
     if ( pernoa == HIGH); {
      digitalWrite (flangiasu, LOW);
      delay (20);
      }
    }
if ( flangiaValue > zero+corsa && mem2 == HIGH) {
    delay (20);
   mem3 = HIGH;
   mem2 = LOW;
 }
   
   if (mem3 == HIGH){
   digitalWrite (flangiasu, HIGH);
   delay (20);
     
     if ( flangiasu == HIGH); {
      digitalWrite (carrosu, LOW);
      delay (20);
   }
 }
 
if (finesuValue == HIGH && mem3 == HIGH) {
  delay (20);
  mem4 = HIGH;
   mem3 = LOW; }
 
   if (mem4 == HIGH) {
  delay (20);
  digitalWrite (carrosu, HIGH);
  delay (20);
    if (mem4 == HIGH & ciclodiscesa == HIGH && finesuValue == HIGH) {
    delay (30);
    digitalWrite (carrogiu, LOW);
    delay (20);
    }
   }
if (finegiuValue == HIGH && mem4 == HIGH) {
  delay (20);
  mem5= HIGH;
  mem4= LOW;}
  
  if (mem5 == HIGH) {
  delay (20);
  digitalWrite (carrogiu, HIGH);
  delay(20);
  
  if ( carrogiu == HIGH); {
      digitalWrite (flangiagiu, LOW);
      delay (20);
   }
  }
if (flangiaValue < zero-precisione && mem5 == HIGH) {
  delay (20);
  mem6 = HIGH;
  mem5 = LOW; }
  
  if (mem6 == HIGH){
  
  delay (20);
  digitalWrite (flangiagiu, HIGH);
  delay (20); 
  
    if ( flangiagiu == HIGH && mem6 == HIGH); {
      digitalWrite (pernoi, LOW);
      delay (20);
   }
   }
   if (pernodentroValue == HIGH && mem6 == HIGH) {
   mem1 = HIGH;
   mem6 = LOW;}
    }

Ho risolto utilizzando while.... chiedo di chiudere il post grazie!

Puoi farlo tu, modifica il primo tuo post, potrai aggiungere (a mano) nel titolo "[Risolto]" :smiley: