Ciao a tutti, sto sviluppando un progetto per cui quando premo un pulsante si accendono dei led animati e quando lo rilascio si spengono(dopo un tempo preimpostato), fintanto che avevo il pulsante normalmente chiuso, usando il pulsante in pullup lo tenevo in LOW tutto funzionava a meraviglia, ora lo sto usando con un pulsante normalmente aperto e sostituendo LOW con HIGH le luci sono sempre attive sia se prema il pulsante sia che non lo prema, cosa potrebbe essere?
Quando il pulsante viene premuto e si chiude il contatto, il pin a cosa viene collegato? A GND o a Vcc?
Perché la pull-up ti tiene il pin sempre HIGH e quindi, se vuoi rilevare la chiusura devi fare si che esso chiuda verso GND e leggere quando il pin va da HIGH (condizione di NON premuto) a LOW (condizione di premuto).
... e allora, come ti ho spiegato, il pulsante è SEMPRE HIGH (grazie alla pull-up) e va a LOW quando viene premuto ... quindi ... modifica il programma in tal senso.
Ci sono altre cose incongruenti... se il pulsante normalmente aperto chiude verso GND allora la condizione premuto è ==LOW, non ==HIGH (e viceversa per pulsante normalmente chiuso).
Oltre a questo non sono gestiti tutti gli stati, per cui la condizione con il timeout ritorna vera "da sola" per tre secondi ogni 1192 ore, anche senza premere il pulsante. Servirebbe almeno un'altra variabile flag per tenere conto se siamo in stato di fermo o di attivo (variabile che si alza quando si preme, e si abbassa quando avviene il timeout). A questo punto la sequenza deve avvenire semplicemente quando la variabile flag è alta.