[RISOLTO] Allarme con sensore ad ultrasuoni

Standardoil:
Ma sono l'unico che si è ricordato che dichiarare una variabile dentro una funzione "maschera" una eventuale variabile pari nome globale?
Ri-dichiarare la stessa variabile, globale e poi nella loop, come lo OP ha fatto nel suo primo esempio porta a problemi, non ci si deve stupire che NON farlo vada bene
Semmai ci si dovrebbe stupire che vada bene "farlo"...

Ecco il problema! Involontariamente in fase di debugging ho ri-dichiarato dentro al loop la stessa variabile globale. Come dici tu il problema è nato da questo, ed ecco perchè anche se le condizioni non erano soddisfatte il programma procedeva ugualmente.

Si ma quello vale solo per il primo sketch, poi le altre versioni non avevano quel problema, e la cosa che lamenta ora (se mette le variabili nel loop) è la questione da chiarire. Ma se non ci posta il codice con le variabili definite nel loop non possiamo sapere cosa abbia combinato realmente (potrebbe aver DUPLICATO le definizioni, anche delle variabili che invece devono essere solo globali)...
Aspettiamo che ci dica l'esito della prova che gli ho chiesto, e vediamo.

Confermo che anche in questo caso hai ragione. Come scritto sopra, anche definendo le variabili come globali ho inavvertitamente lasciato la dicitura float davanti al nome della variabile anche nel loop, generando di fatto il problema.
Con l'ultimo codice postato, definire le distanze come globali o come locali non cambia nulla!

In ogni caso una cosa l'ho capita: sempre meglio lavorare con variabili globali!