Ho provato a riscrivere velocemente il codice, eliminando il delay e l'if, e cambiando l'interrupt in modo che mi prenda quando da HIGH va a LOW, sperando di aver capito giusto..
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 6, 5, 4, 3);
int giriRuota;
void setup(){
lcd.begin(16,2);
pinMode(2, INPUT_PULLUP);
attachInterrupt(0, giro, FALLING);
}
void loop(){
giriRuota=0;
delay(1000);
lcd.clear();
lcd.print(giriRuota);
}
void giro(){
giriRuota=giriRuota+1;
}
Ho tralasciato tutto il resto del codice perchè non serve adesso.. è tutta una derivazione da questo.. se non va questo, non va neanche il resto..
Comunque, il circuito è un semplice reed switch, collegato al pin 2 e al GND.. Quando la ruota fa un giro, il magnete passa sul sensore e me lo chiude.. Questo deve far capire ad arduino quando la ruota fa un giro..
Il resto del codice (che partirebbe appena dopo il delay(1000)) prevede che calcoli i km/h in base ai giri totali effettuati nel secondo, e in base alla velocità accenda determinati colori di un led..