#include #include LiquidCrystal_I2C lcd(0x27,16,2); // set the LCD address to 0x27 for a 16 chars and 2 line display. ACHTUNG: Adresse kann auch 0x3F sein !!! // Anschlüsse: // GND - GND // VCC - 5V // SDA - ANALOG Pin 4 // SCL - ANALOG pin 5 int sensor = 2; unsigned long currentTime; unsigned long lastTime; unsigned long pulse_freq; // =========================== // ======= SETUP ========= // =========================== void setup() { pinMode(sensor, INPUT); Serial.begin(9600); attachInterrupt(0, pulse, FALLING); // Setup Interrupt currentTime = millis(); lastTime = currentTime; lcd.begin(); // initialize the lcd lcd.backlight(); lcd.setCursor(0,0); lcd.print("Drehzahl-"); lcd.setCursor(0,1); lcd.print("messer"); delay(3000); lcd.setCursor(0,0); lcd.print(" "); lcd.setCursor(0,1); lcd.print(" "); } // ======================== // ======= LOOP ========= // ======================== void loop () { currentTime = millis(); // Every second, calculate frequency if(currentTime >= (lastTime + 1000)) { lastTime = currentTime; /* Serial.print(pulse_freq); Serial.println(" Hz"); */ lcd.setCursor(0,0); lcd.print("f = "); lcd.print(pulse_freq); lcd.print(" Hz "); lcd.setCursor(0,1); lcd.print(pulse_freq * 60); lcd.print(" RPM "); pulse_freq = 0; // Reset Counter } } // ============================= // ======= INTERRUPT ========= // ============================= void pulse () // Interrupt function { pulse_freq++; }