Go Down

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

diablotron

e si, il lasso di tempo in cui memorizzare questi 3 impulsi,
quello sarebbe stato il terzo step..  :)

niki77

che ne dici di passare alla soluzione interrupt proposta da tuxduino?
Alla lunga ti agevola se vorrai fare ci se poi complicate.
Se decidi di passare a quella versione utilizza il CHANGE al posto di FALLING , e nel loop aggiungi un controllo sul tempo che ogni tot millisecondi ti azzera cmq la variabile cnt.
Vi è una spiegazione scientifica a tutto.
La fede è solo quell'anello che si porta al dito dopo il matrimonio.

diablotron


che ne dici di passare alla soluzione interrupt proposta da tuxduino?
Alla lunga ti agevola se vorrai fare ci se poi complicate.
Se decidi di passare a quella versione utilizza il CHANGE al posto di FALLING , e nel loop aggiungi un controllo sul tempo che ogni tot millisecondi ti azzera cmq la variabile cnt.



infatti vorrei analizzare meglio il codice che ha scritto tuxduino,
perchè io sono agl inizi e alcune parti non le comprendo ancora,
non mi va di scrivere il codice "alla cieca", non imparo niente così..

comunque ieri sera navigando sul sito ho trovato questo
http://arduino.cc/en/Tutorial/ButtonStateChange
che già mi risulta più comprensivo da leggere,
voi che dite, può funzionare?
Ovviamente sostituendo la parte serial con il solito output pinled..

niki77

Bhe non utilizza interrupt, quindi alla fine è identico a quello che hai.
Cosa non capisci del codice di tux?
Possiamo sempre chiarirti qualcosa che non capisci invece di cambiare approccio,impari anche qualcosa di nuovo.
Vi è una spiegazione scientifica a tutto.
La fede è solo quell'anello che si porta al dito dopo il matrimonio.

diablotron


Code: [Select]
volatile byte cnt = 0;
cos'è volatile, che fa byte?

Code: [Select]
void isr() {
    cnt++;
}

cos'è isr? che fa ++ su cnt, incrementa di 1?

Code: [Select]
attachInterrupt(0, isr, FALLING);
cos'è attachInterrupt e perchè ci sono 3 voci anzichè 2 tra parentesi?
Code: [Select]

if (cnt >= MAX_IMPULSI) {
        cnt = 0;
        }

questo se ho capito bene dice che
se cnt raggiunge un valore maggiore o uguale a 5
riporta il suo valore a zero, giusto?

quindi prima di chiudere la parentesi graffa posso anche aggiungere
Code: [Select]
digitalWrite (ledPin, HIGH);
delay (3000);

anzichè la comunicazione su display, che non ho?

Go Up