Salve,
sono nuovo da queste parti! Ho da poco costruito un Contagiri e Contakm/h usando una scheda arduino uno e due sensori costruiti da un led IR e un ricevitore IR.
Dato che sono un novellino ho preso spunto da vari codici trovati in giro per la rete in particolare uno sketch adatto a creare un contagiri.
Solo il contagiri funzionava bene... Oggi pero mi sono deciso a "clonare" la funzione di conteggio dei giri al minuto in modo da poter calcolare la velocità della ruota e quindi i km/h.
Il problema adesso è che conta soltanto gli rpm e non precisi..
I sensori sono collegati rispettivamente ai pin 2-13 e 3-6.
Di seguito il codice, grazie a chi sarà disponibile da dare un'occhiata...
int ledPin = 13;
volatile byte rpmcount;
unsigned int rpm;
unsigned long timeold;
int ledPin2 = 6;
volatile byte rpmcount_tyre;
unsigned int rpm_tyre;
unsigned long timeold_tyre;
unsigned long kmh;
#include <LiquidCrystal.h>
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);
void rpm_fun()
{
rpmcount++;
}
void rpm_tyre_func ()
{
rpmcount_tyre++;
}
void setup()
{
lcd.begin(16, 2);
attachInterrupt(0, rpm_fun, FALLING);
attachInterrupt(1,rpm_tyre_func, FALLING);
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, HIGH);
pinMode(ledPin2, OUTPUT);
digitalWrite(ledPin2, HIGH);
rpmcount = 0;
rpm = 0;
timeold = 0;
rpmcount_tyre=0;
rpm_tyre = 0;
timeold_tyre = 0;
}
void loop()
{
delay(1000);
detachInterrupt(0);
detachInterrupt (1) ;
rpm = 60*1000/(millis() - timeold)*rpmcount;
timeold = millis();
rpmcount = 0;
rpm_tyre= 60*1000/(millis() - timeold_tyre)*rpmcount_tyre;
timeold_tyre = millis();
rpmcount_tyre = 0;
kmh = ((rpm_tyre*1,307)/1000000)*60;
lcd.clear();
lcd.setCursor(0,0);
lcd.print("RPM:");
lcd.print(rpm);
lcd.setCursor(9,0);
lcd.print("KMH:");
lcd.print(kmh);
attachInterrupt(0, rpm_fun, FALLING);
attachInterrupt(1, rpm_tyre_func, FALLING);
}