#include <U8g2lib.h>
#define RPM_SENSOR_PIN 2 // Pin digitale per il sensore di giri
U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0);
volatile unsigned long pulseCount = 0;
unsigned long lastDisplayUpdate = 0;
int rpm = 0;
void setup() {
pinMode(RPM_SENSOR_PIN, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(RPM_SENSOR_PIN), countPulse, RISING);
u8g2.begin();
}
void loop() {
unsigned long currentMillis = millis();
// Aggiornare il RPM ogni secondo
if (currentMillis - lastDisplayUpdate >= 1000) {
rpm = pulseCount * 60; // Calcolo RPM
pulseCount = 0; // Resettare il contatore
lastDisplayUpdate = currentMillis;
// Disegnare il display
u8g2.clearBuffer(); // Pulisci il buffer
u8g2.setFont(u8g2_font_ncenB08_tr); // Imposta il font
// Centra il testo "Contagiri:" sulla riga superiore
u8g2.setCursor((128 - u8g2.getStrWidth("Contagiri:")) / 2, 10);
u8g2.drawStr(u8g2.getCursorX(), 10, "Contagiri:");
// Centra il testo "0 RPM" sulla riga centrale
String rpmString = String(rpm) + " RPM"; // Crea la stringa "0 RPM"
u8g2.setCursor((128 - u8g2.getStrWidth(rpmString.c_str())) / 2, 30);
u8g2.drawStr(u8g2.getCursorX(), 30, rpmString.c_str()); // Stampa "0 RPM"
u8g2.sendBuffer(); // Invia il buffer al display
}
}
void countPulse() {
pulseCount++; // Incrementa il contatore degli impulsi
}