Debouncing issues

I think the second option might be what I'm looking for, that or using a hall effect sensor. The debouncing code I have been using is similar to yours:

void rotation() {
  dT = ((micros() - last_micros)/1e6);
  if(dT >= debouncing_time / 1e3 && dt <= 10) {
    Serial.print(dT);
    Serial.println(" dT");
    last_micros = micros();
  }
}