ho un dubbio sulla gestione di un segnale in ingresso da sensore di hall. Io farei come segue, ditemi se secondo voi può andare o se ci sono metodi più efficienti.
In ingresso, il sensore, mi genera una onda quadra 0-5V con frequenza di 27Hz (quindi periodi di 36ms). Questa frequenza può essere leggermente variabile, quindi devo leggere pressoché costantemente.
int variabile_out1 = 0;
int variabile_out2 = 1;
int variabile_out3 = 1;
int variabile_out4 = 1;
void loop() {
leggo_hall=digitalRead(hall);
if ((leggo_hall == 0) && (variabile_out1 == 0) { ... e cambio variabile out1 a 1 e out2 a 0}
if ((leggo_hall == 0) && (variabile_out2 == 0) { ... e cambio variabile out2 a 1 e out3 a 0}
if ((leggo_hall == 0) && (variabile_out3 == 0) { ... e cambio variabile out3 a 1 e out4 a 0}
if ((leggo_hall == 0) && (variabile_out4 == 0) { ... e cambio variabile out4 a 1 e out1 a 0}
}
dove ho messo i ... andrei a sviluppare una funzione che:
attiva una variabile millis() e la sottra al millis() di accensione Arduino, in questo modo so quanto "sfasare" l'output in funzione dell'input.
si ma dovresti fare il contrario. da millis() sottrai il valore dell'ultima lettura e se corrisponde all'attesa che imposti tu fai procedere con la funzione... anche se non è proprio chiarissimo quello che vuoi fare...