Pulsante con doppia funzione

Si vuole associare ad un pulsante una doppia funzione, ovvero se il pulsante viene premuto per meno di 3 secondi (ad esempio) viene attivata una determinata funzione F1, mentre invece se il pulsante viene premuto per più di 3 secondi viene attivata la funzione F2. Bisogna assicurarsi che la funzione F1 venga attivata soltanto se il pulsante viene rilasciato prima dei 3 secondi (o del tempo che scegliamo) e pertanto bisognerà rilevare un fronte di discesa (edge falling detection).

Si può fare in questo modo:
pulsante_doppia_funzione_11

dove M1 viene attivato per UN SOLO CICLO se l’ingresso I1 è alto per meno di 3 secondi. Invece M2 viene attivato non appena l’ingresso I1 è alto per più di tre secondi (in questo caso M2 resta alto fino a quando I1 non va zero).

Fcendo come sopra ottengo un impulso solo per M1 (che si usa per attivare la funzione F1), e non per M2 (che invece si usa per attivare la funzione F2) dove appunto come detto precedentemente rimane attivo finché I1=1.

Se si vuole avere un impulso anche per M2 allora bisogna aggiungera una AND (Edge) per rilevare un fronte di salita, quindi:
pulsante_doppia_funzione_22

Oppure al contrario si potrebbe desiderare di “settare” M1 ed M2, in modo da avere le funzioni F1 e F2 attive fintantoché M1 e M2 siano alti. Ovvero utilizzando delle autoritenute con un pulsante di stop I2 (da notare che essendo i pulsanti di stop normalmente chiusi, il contatto nel programma è normalmente aperto) avremmo:

pulsante_doppia_funzione_set2

Come esempio per il funzionamento, supponiamo di avere due luci: una rossa e una verde.
Quando la funzione F1 è attiva (ossia quando M1=1) la luce verde è accesa fissa e la luce rossa è spenta, mentre quando è attiva la funzione F2 (ossia quando M2=1) la luce verde è spenta e la luce rossa lampeggia con un periodo T=1s e duty_cycle=50% (quindi per 0.5s luce accesa, e per 0.5s luce spenta). Possiamo fare questo in maniera molto semplice, ovvero:

pulsante_doppia_funzione_ultimo2

Potete scaricare i sorgenti da questo link –>> Download


Warning: count(): Parameter must be an array or an object that implements Countable in /membri/fabioplc/wp-includes/class-wp-comment-query.php on line 399
Menu Title