const int hallSensorPin1 = 18; // Pin sensor pertama
//const int hallSensorPin2 = 22; // Pin sensor kedua
//const int hallSensorPin3 = 23; // Pin sensor ketiga
float rpm;
float rps;

// Variabel untuk menyimpan status sebelumnya
//int lastState1 = LOW;
//int lastState2 = LOW;
//int lastState3 = LOW;

volatile int counter = 0;

float kecepatan;
unsigned long lalu = millis();
unsigned long sekarang;

void IRAM_ATTR hallInterrupt() {
  counter++; // Increment hitungan pulsa setiap kali interrupt terjadi
}

void setup() {
  Serial.begin(9600);

  // Konfigurasi pin sensor sebagai input
  pinMode(hallSensorPin1, INPUT_PULLUP);
  //pinMode(hallSensorPin2, INPUT_PULLUP);
  //pinMode(hallSensorPin3, INPUT_PULLUP);
  attachInterrupt(digitalPinToInterrupt(hallSensorPin1), hallInterrupt, RISING); // Setup interrupt pada sensor hall
}

void loop() {
  // Baca status dari sensor Hall effect
  //int sensorState1 = digitalRead(hallSensorPin1);
  //int sensorState2 = digitalRead(hallSensorPin2);
  //int sensorState3 = digitalRead(hallSensorPin3);

  // Hitung putaran untuk ketiga sensor
  //if (lastState1 == LOW && sensorState1 == HIGH) {
  //  counter++;
  //}
  //lastState1 = sensorState1;

  //if (lastState2 == LOW && sensorState2 == HIGH) {
  //  counter++;
 // }
  //lastState2 = sensorState2;

  //if (lastState3 == LOW && sensorState3 == HIGH) {
  //  counter++;
  //}
  //lastState3 = sensorState3;

  sekarang = millis();
  if (sekarang - lalu >= 1000) {
    // Perhitungan kecepatan dari gabungan ketiga sensor
    kecepatan = (float)counter * 3600 * PI * 5 / 100000 / 7; // 3600(detik)*PI*5(cm)/100000(cm atau 1km)/7(jumlah magnet dalam 1 putaran)
    rpm = (float)counter * 60 / 7;
    rps = (float)counter / 7;
    // Menampilkan hasil perhitungan di Serial Monitor
    Serial.print("Kecepatan : ");
    Serial.print(kecepatan);
    Serial.print(" km/jam");
    Serial.print(" | RPM : ");
    Serial.print(rpm, 1);
    Serial.print(" | RPS : ");
    Serial.println(rps, 1);
    
    
    counter = 0;
    lalu = sekarang;
  }

  delay(1); // Tunggu 1 ms untuk stabilisasi
}
esp:0
esp:2
esp:4
esp:5
esp:12
esp:13
esp:14
esp:15
esp:16
esp:17
esp:18
esp:19
esp:21
esp:22
esp:23
esp:25
esp:26
esp:27
esp:32
esp:33
esp:34
esp:35
esp:3V3
esp:EN
esp:VP
esp:VN
esp:GND.1
esp:D2
esp:D3
esp:CMD
esp:5V
esp:GND.2
esp:TX
esp:RX
esp:GND.3
esp:D1
esp:D0
esp:CLK
btn1:1.l
btn1:2.l
btn1:1.r
btn1:2.r