Below is a tachometer program that was patched together... Using a hall effect for the sensor. For some odd reason when the calculation is done for interrupts per second something goes wrong... When set at 30*1000 I get what seems to be a good RPM number... But when changed to 60*1000 the RPM jumps to 20-50k... Not sure what is going on... If someone would be so kind and have a look at the program and see if I am missing something... It would be appreciated.. int ledPin = 11; volatile byte rpmcount; unsigned int rpm; unsigned long timeold; #include LiquidCrystal lcd(8, 13, 9, 4, 5, 6, 7); void rpm_fun() { rpmcount++; } void setup() { lcd.begin(16, 2); attachInterrupt(0, rpm_fun, FALLING); pinMode(ledPin, OUTPUT); rpmcount = 0; rpm = 0; timeold = 0; } void loop() { delay(1000); detachInterrupt(0); rpm = 60 * 1000 / (millis() - timeold) * rpmcount; timeold = millis(); rpmcount = 0; lcd.clear(); lcd.print("Rotary Head RPM:"); lcd.setCursor(6, 1); lcd.print(rpm); if (rpm > 100) { digitalWrite(ledPin, HIGH); } else { digitalWrite (ledPin, LOW); } attachInterrupt(0, rpm_fun, FALLING);