Zo kort geleden ik was bezig met een Project waar ik maatregel de RPM van een van de wielen op mijn auto wilde, en daaruit Bereken de snelheid, bijhouden van de Driven afstand etc. met een Arduino.
Ik wilde gebruiken van een magneet en een Reed Switch naar maatregel de RPM, voor dat ik debouce het signaal uit de Reed Switch, moest omdat ik niet kon vinden een manier om debouce een signaal in interrupt functies niet die extra hardware nodig voor het debouncing van het signaal op het Internet, hier is hoe ik het signaal vanuit de Reed Switch debounced...
Software debouncing in Interrupt, door Delphiño K.M.
lange debouncing_time = 15; Debouncing tijd in milliseconden
vluchtige unsigned long last_micros;
VOID Setup {}
attachInterrupt (0, debounceInterrupt, stijgt);
}
void loop {}
}
ongeldig debounceInterrupt() {}
if((Long)(Micros() - last_micros) > = debouncing_time * 1000) {}
Interrupt();
last_micros = micros();
}
}
VOID Interrupt() {}
Iets doen
}
Kun je ook "Do Something" in de main functie, in plaats van het aanroepen van een tweede functie die dan iets doet, ik vond het beter deze manier... Opmerking: Ik heb alleen geprobeerd dit op een Arduino Mega (ATmega1280), met Arduino 0022. Nou, dat is het zo'n beetje, ik hoop dat dit helpt iemand... P.S. Dit is mijn eerste Instructable, dus als je niet iets leuk om te zeggen, niet helemaal zeggen iets, alhoewel correcties, verbeteringen, etc. zijn natuurlijk altijd welkom...
Ook dit is niet een perfecte oplossing, de interrupt-functie is genoemd meerdere keren, de volgenden oproepen stil, in de volgende 15ms gewoon genegeerd, maar he, het doet het werk, dus schroef het!