Go Down

Topic: Analisi impulsi contatto a tapparella per antifurti (Read 6 times) previous topic - next topic

tuxduino

Non sarebbe meglio usare un interrupt per contare gli impulsi ?

Tipo:

Code: [Select]
// quando conteggio 5 impulsi dò allarme
const byte MAX_IMPULSI = 5;

volatile byte cnt = 0;


void isr() {
    cnt++;
}


void setup() {
    attachInterrupt(0, isr, FALLING);
    Serial.begin(115200);
}


void loop() {
    // questo controllo forse andrebbe eseguito ogni 10..50ms
    if (cnt >= MAX_IMPULSI) {
        cnt = 0;
       
        Serial.println("Allarme");
    }
}

diablotron

:~

e qui già comincio a non capirci più un tubo!

niki77

#12
Jan 18, 2013, 05:25 pm Last Edit: Jan 18, 2013, 05:29 pm by niki77 Reason: 1
Era il passo seguente tuxduino, ma tu mi hai rovinato la sorpresa!  :smiley-mr-green:

Poi comunque non userei ne RISING ne FALLING, ma CHANGE , in maniera tale da rendere utilizzabile senza modifiche sia contatti NO che NC  8)


Quote


if (reading != lastButtonState) {
  lastDebounceTime = millis();
 }
questa non l'ho capita, ma in pratica che fa?



Fine a se stessa quella parte di codice non fa altro che vedere se lo stato del pin digitale in ingresso è di valore diverso rispetto all'ultima lettura.

Nel globale quella serie di istruzioni non fa altro che monitorare senza interruzione lo stato in ingresso del tuo sensore e si accorge della chiusura del contatto, con la funzionalità di debounce, che detta in parole povere ti consente di discriminare chiusure di contatto inferiori ad un determinato lasso di tempo. (viene utilizzata per filtrare il rumore e rendere più 'pulito' il segnale proveniente da contatti meccanici)

Vi è una spiegazione scientifica a tutto.
La fede è solo quell'anello che si porta al dito dopo il matrimonio.

diablotron

ma in questo modo, se mi discrimina chiusure di contatto inferiori ad un lasso di tempo
(anche se il mio contatto è sempre chiuso e mi serve analizzare l'apertura)
in pratica non mi fà l'esatto opposto di quello che mi serve?

in realtà a me serve appunto analizzare aperture di un contatto NC inferiori ad un lasso di tempo,
talmente breve che neanche il mio tester se ne accorge, sono io ad accorgermene
perchè mi varia qualcosa sul mio display..

quindi la funzionalità di debounce mi fà tutto l'opposto no?

tuxduino

Quote
Poi comunque non userei ne RISING ne FALLING, ma CHANGE , in maniera tale da rendere utilizzabile senza modifiche sia contatti NO che NC


Giusto, tanto basta adeguare il numero di impulsi oltre il quale scatta lo stato di allarme...

Go Up