Förbättrad Arduino Rotary Encoder behandlingen (4 / 4 steg)
Steg 4: slutsats
Jag hoppas du finner här koden användbar för ditt nästa projekt som använder en roterande kodare eller att det har inspirerat er att överväga en roterande kodare som indata för ditt nästa projekt.
Sammanfattning av målen
Jag har försökt att skriva någon kod som har en bra balans av:
- Portabilitet (port manipulation kod är kompromissen när du flyttar till andra marker)
- Hastighet (port manipulation hjälper verkligen)
- Låg kompilerad kod storlek (port manipulation och bitmath hjälper)
- Pålitligt registrerar långsam och snabb manuell rotation
- Minskad verkningslösa avbryta tjänst rutinmässig samtal (med stigande avbrott och tillfälligt avbrott)
Varningar och idéer för förbättring
Denna kod är inte perfekt på något sätt och du skulle vilja ändra det om du vill använda andra stift. Jag testade denna kod med skissen som orsakar mest dröjsmål och minst tillförlitliga mätvärden med andra metoder diskuteras - jag verkligen inte har jämfört det med timers för att se vars kod producerar färre verkningslösa avbryta tjänsten rutiner, tar minst tid att utföra eller filtrerar bort den högsta andelen kontakt studsar. Kanske skulle någon vilja göra ett benchmark-test mot de andra metoderna där ute.