far cadere le uscite di Arduino UNO

Buongiorno a tutti sono nuovo del forum e sto cercando un piccolo aiutino, ho cercato un pò dappertutto ma forse non so nemmeno cercare quelo che mi serve, mi spiego subito.

Sto provando a fare un piccolo programmino per simulare una protezione che tenga disabilitate tutte le uscite di arduino in sua assenza e nel caso sia tutto regolare e questa viene a mancare deve disabilitare e portare tutto allo stato iniziale e far suonare un buzz.

questo è il codice che ho fatto

int LED = 2;            // Pin del LED
int BUTTON = 7;         // Pin del il pulsante
int CONTROLLO = 8;      // Pin di input per il controllo/protezione
int BUZZ = 6;           // Pin del BUZZER

int val = 0;
int cnt = 0;
int old_val = 0;
int state = 0;

void setup(){
  pinMode(LED, OUTPUT);        // segnala ad Arduino che LED è un output
  pinMode(BUTTON, INPUT);      // BUTTON è un input
  pinMode(CONTROLLO, INPUT);   // CONTROLLO è input
  pinMode(BUZZ, OUTPUT);       // BUZZ è output
}

void loop(){
  cnt = digitalRead(CONTROLLO);  //legge lo stato del controllo
  
 //Se la protezione è valida allora vai avanti
  if (cnt == HIGH) {
    val = digitalRead(BUTTON);  //legge il valore dell'input e lo conserva
    
    //Verifica che l'input sia HIGH(pulsante premuto) e ne cambia lo stato
    if ((val == HIGH) && (old_val == LOW)) {
      state = 1 - state;
      delay(10);
    }
  
    old_val = val;  // Memorizza il valore precedente di val
  
    if (state == 1){
      digitalWrite(LED, HIGH);  // Accende il LED
    } else {
      digitalWrite(LED, LOW);   // Spegne il LED
    } 
  } else {              //Se la protezione non è valida ferma la macchina e fai suonare il buzz
    val = old_val = LOW;
    digitalWrite(LED, LOW);   // Spegne il LED
    buzz(6, 4186, 100);
    delay(10);
  }
}

void buzz(int targetPin, long frequency, long length) {
 long delayValue = 1000000/frequency/2;
 long numCycles = frequency * length / 1000;
 for (long i=0; i < numCycles; i++)
 {
 digitalWrite(targetPin,HIGH);
 delayMicroseconds(delayValue);
 digitalWrite(targetPin,LOW);
 delayMicroseconds(delayValue);
 }
 }

Procedura di prova
Abilito la protezione
pigio il pulsante
Accendo il LED
disabilito la protezione
il led si spegne e suona il buzz
riabilito la protezione
?????ed il led è di nuovo acceso senza pigiare il tastino????

Cosa potrei fare per far cadere tutte le uscite di Arduino alla disabilitazione della protezione?

Grazie a tutti in anticipo

Ti invitiamo a presentarti qui: Re: Presentazioni nuovi iscritti, fatevi conoscere da tutti! (Part 1) - Generale - Arduino Forum
e a leggere il regolamento: [REGOLAMENTO] Come usare questa sezione del forum - Italiano - Arduino Forum

Il codice DEVE essere racchiuso negli appositi tag code. Vedi sezione 7 del regolamento, spiega come fare. Altrimenti parti del codice vengono interpretati come attributi del testo e quindi mal visualizzati.

Non puoi semplicemente crare un pulsante che accenda la macchina solo se la protezione è high?

con un if accendi la macchina se la protezione c'è else buzzer high
con un secondo if controlli se la protezione è attiva + buzzer low else spegni tutto + buzzer high

Se è un elettroutensile pericoloso, ti consiglio di farlo elettromeccanico il controllo e non con arduino

ciao

pablos in pratica il mio programmino fa proprio quello che hai scritto tu, se la macchina è "attiva e funzionante" :LED Acceso: e all'improvviso manca la protezione questa si ferma del tutto e suona il buzz, se però all'improvviso la protezione torna funzionante mi ritrovo praticamente l'uscita già attiva senza dover pigiare il tastino

si appunto, ma hai troppi val, else su else, ti bastano 2 if e 2 else forse... dovrei fare uno schema a blocchi

loop()

---------- processo button on-off ----------------
pigio salvo lo stato 1 o 0 dello start
se ho pigiato faccio una copia dello start su old-start

-------- processo avviamento motore ------------------
if start == 1 e ptotezione==1 >> motore ON
else
motore OFF

------controllo per buzzer ----------- se lo metto sopra mi suona sempre a motore spento anche con start=0
If protezione == 0 e old-start ==1 >> buzzer ON + start =0