sera a tutti , invece di scrivere cosi per fare un serial.print ogni volta che un valore cambia , si puo ' fare in un modo piu' veloce evitando di creare variabili di confronto?
No, non si può fare in maniera diversa. Devi confrontare il vecchio valore con il nuovo valore per sapere se è diverso, per farlo serve un istruzione condizionale, qualunque istruzione utilizzassi, non cambierebbe molto.
Come detto no. Per definizione ogni volta che un programma deve tenere conto di uno stato passato... serve una variabile di stato / flag che memorizzi questa informazione.
Ci sono casi molto specifici in cui l'if si può non scrivere, ma la variabile per lo stato al tempo T-1 rimane comunque necessaria (l'esempio seguente inverte la variabile 'led' ogni volta che 'nuovo_stato' passa da 0 a 1).
led ^= nuovo_stato && !vecchio_stato;
vecchio_stato = nuovo_stato