I pin 2-3-4-5-6 cambiano di stato ma non viene reso visibile in quanto (come puoi notare dal codice) sono "pin il cui stato dipende da un ingresso"
Questo non l'hai detto nelle specifiche però devi ammetterlo, tali condizioni dei pin OUT dipendenti dagli analog non sono visualizzati sulla web page, sono identici a tutti gli altri, non c'è nulla che faccia pensare ad una dipendenza tipo (input > di x) o (input < di x) o (input == a x) .. riporta i valori analog a fianco al pin che possiede il vincolo evidenziando un enable/disable alla commutazione manuale.
La password può essere cambiata solo da un utente che ha già effettuato il Login e quindi ad un utente a cui è consentito farlo.
Si, questo l'ho capito, ma una altra persona può sedersi alla tua scrivania mentre sei a fare pipì, per questo la prassi chiede sempre di verificare la vecchia passw, essa la conosce solo il proprietario assoluto.
Consigli per rendere la chiave non visibile?
beh, te l'ho detto, ormai tutti i browser aprono un popup di autenticazione quando lanci un 401 al posto del 200 OK, se proprio vuoi spedire in chiaro le chiavi non criptate, usa il json, jsonp, ajax, delega il compito al client di caricare le lib javascript per non appesantire lo sketch, inoltre tale metodo ti consente un pollig client-server persistente (la pagina si aggiorna senza essere ricaricata ogni volta), ciò allegerisce la ethernet che deve solo inviare i dati e non la pagina intera.
Puoi optare all'uso di una SD che contiene il file di installazione html che resterà sul client per sempre una volta fatto il download di essa (un po' come funziona la telecamera IP, si scarica il viewer che è contenuto nel chip di essa una volta solo, poi le connessioni successive lavorano con solo scambio di pochi byte.
Puoi riconoscere se chi si collega è un SO tipo linux, un windows, un apple, un android ...
Puoi leggere anche il modello dello smartphone che possiede chi si connette (se non lo ha nascosto)
Puoi riconoscere la lingua usata dal client che si collega
Puoi riconoscere il tipo di browser che fa la connessione Win explorer, firefox, crome, Thunderbird .. ecc
Puoi sapere l'IP remoto e il suo MAC di chi si collega e porre delle restrizioni ...
Fare tutto è un po' stretto per una Uno, però si possono fare.
Le mie non sono critiche sul tuo lavoro, sono osservazioni basate su centinaia di ore di studio, prove e perchè no anche incaxxature, anzi ... quello di generare una chiave casuale da spedire al client ha attirato la mia attenzione, anche il digest autentication usa un metodo opzionale simile usando ad esempio data/ore/min/sec creando key univoche.
Hai fatto un lavorone, ti ho risposto per farti notare dove può essere migliorato, se non avessi notato impegno e lavoro da parte tua, non ti avrei nemmeno risposto 
ciao