Accensione e spegnimento LED con il fronte del pulsante

Salve come molti di voi sono nuovo del panorama Arduino. Sinceramente sono un programmatore di PLC e sto facendo fatica a capire come poter replicare una funzione che in ambito industriale mi è facile ma con la programmazione scritta di Arduino mi risulta difficile. Praticamente dopo la pressione di un pulsante (tenendolo premuto!!!!) vorrei accendere un led e tenerlo acceso per un tot tempo e poi spegnerlo: successivamente per ripetere il ciclo devo lasciare il pulsante e premerlo di nuovo. Diciamo che il ciclo di accensione, pausa e spegnimento del led deve avvenire solo sul fronte di chiusura del pulsante ....... per intenderci.

Chi mi può aiutare ?

Grazie 1000

Benvenuto! Poiché è il tuo primo post, presentati nella apposita sezione del forum.

Supponiamo che il pulsante chiuda verso massa (conviene rispetto a chiudere verso +5V).

Nel setup usi la funzione pinMode(numpin, INPUT_PULLUP) che attiva il resistore interno di pullup.

Nel loop leggi lo stato del pulsante con digitalRead(numpin) che normalmente è HIGH.

Non appena diventa LOW, memorizzi in una variabile Timer unsigned long il valore di millis(), accendi il LED e, per spegnerlo, da quel momento verifichi che la differenza millis() - Timer non superi il valore in millisecondi del ritardo stabilito.

Non ti posto il codice perché devi studiare bene la cosa.

Abbozza il codice e se hai altri problemi siamo qui!

GiampIX: Salve come molti di voi sono nuovo del panorama Arduino.

Ti invitiamo a presentarti (dicci quali conoscenze hai di elettronica e di programmazione) qui: Presentazioni e a leggere il regolamento se non lo hai già fatto: Regolamento Qui una serie di link utili, non inerenti al tuo problema: - qui una serie di schede by xxxPighi per i collegamenti elettronici vari: ABC - Arduino Basic Connections - qui le pinout delle varie schede by xxxPighi: Pinout - qui una serie di link [u]generali[/u] utili: Link Utili

Grazie tante per i vostri primi feedbacks................................

se le operazioni devono essere eseguite SOLO alla pressione (oppure al rilascio) del pulsante, e poi il pulsante deve essere ignorato finche' non cambia stato di nuovo, avevo gia postato piu volte un'esempio di come si puo farlo in modo semplice ... si usa una variabile come flag per dire a due cicli if consecutivi lo stato precedente del pulsante ... se il pulsante viene premuto, si controlla che sia premuto E che prima non lo fosse, ed in quel caso all'interno del ciclo si eseguono le operazioni da eseguire una sola volta alla pressione, E si setta il flag come premuto ... i successivi cicli verranno ignorati finche' il pulsante rimane premuto, a causa del flag cambiato ... subito dopo questo ciclo ne metti un secondo che controlla l'opposto, cioe' se il pulsante e' stato rilasciato E se prima era premuto .. all'interno di questo ciclo vanno (se serve) tutte le operazioni da eseguire una sola volta al rilascio del pulsante, ed il reset del flag ...