Antirimbalzo hardware per pulsanti.

Sep 03, 2019 27 Replies

Il 05/09/2019 10:23, LAB ha scritto:

De gustibus (non basta un condensatore)

Se ci sono disturbi tali da simulare in hard la pressione del pulsante allora c'e' un problema non trascurabile estraneo al codice. In non "mission critical" la tecnica del delay per me e' la piu' semplice e razionale, come quella del circuito RC se non si desidera fermare il flusso. A proposito dell'RC lo possiamo simulare eseguendo via software la media dei valori al pin relativo al tasto, decidendo che c'e' una pressione quando la media raggiunge un certo valore. Il top e' usare un flip-flop. G

Il 05/09/2019 10:53, RobertoA ha scritto:

Ok, quindi potrei usare la funzione millis()?

che non esistano altri modi:

Saluti da Drizzt. www.agidone.altervista.org http://www.tappezzeriagraziella.com/ MAI PIU' OPEL IN VITA MIA!!!!

Il 05/09/19 12:58, Drizzt do'Urden ha scritto:

Il sito parla di un uso a basso livello (leggi sofisticato) dei timer che solitamente con Arduino non serve. Se ad esempio usassi i PIC, dovresti occuparti obbligatoriamente di quei dettagli che permettono di avere il pieno controllo sull'hardware. Lo puoi fare anche con Arduino. Ma l'ambiente Arduino e` stato appositamente semplificato (ecco perche' all'amico non piace), e millis e` piu` che sufficiente.

La seguente riga e`un passa basso (debounce all'attacco e al rilascio). La variabile 'out' insegue la variabile 'in' a 20ms di distanza dall'ultimo livello stabile. Impulsi piu` brevi di 20ms vengono ignorati.

if (in == out) t=millis(); else if (millis()-t > 20) out=in;

Il 05/09/2019 17:16, Claudio_F ha scritto:

Saluti da Drizzt. www.agidone.altervista.org http://www.tappezzeriagraziella.com/ MAI PIU' OPEL IN VITA MIA!!!!

Il 05/09/2019 21:04, Drizzt do'Urden ha scritto:

Non e' questione di pic o Arduino, di tipo processore La questione e' se usare l'Ide Arduino come ambiente di sviluppo oppure no, perche' anche diverse schede Arduino dispongono di connettorino per collegare un debugger ed operare con compilatore+debugger a posto del cavetto usb ed ide Arduino E la possibilita' di usare compilatore+debugger, pur se inizialmente piu' difficoltosa da avviare, ti consente di lavorare 'vedendo' cosa avviene sul micro

Il 05/09/2019 17:16, Claudio_F ha scritto:

in overflow e si resetta quindi quando capita succede un macello almeno per un ciclo, ho cercato la soluzione a questo problema ma non ci ho capito molto:

formatting link

testarlo se non aspettare 50 giorni:

unsigned long tempo_2 = millis();

tempo = (tempo_2 - tempo_1); //tempo trascorso in mS fra i due interrupt che corrisponde a mezzo giro o 0,5m/S

if(conta) conta--; //un ciclo a vuoto solo per la partenza else

andato in overflow e lo allinea

tempo_1 = tempo_2; //mette il tempo iniziale uguale al tempo finale per prepararlo alla prossima sottrazione

Il 06/09/19 14:04, LAB ha scritto:

Esatto, in quel sito Leonardo ha un po' complicato.

Non serve gestire o occuparsi dell'overflow.

Con la sottrazione binaria intera senza segno millis()-t il risultato viene sempre corretto, anche in presenza di overflow.

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required