Stap 10: Module 3 - Rotary Encoder en switches - overzicht
Een van de grote dingen over dit project is dat wanneer u de tijd vanuit de roterende encoder instellen kan u net zo gemakkelijk worden een Bond-schurk kiezen van de count-down op zijn gestolen atoom-bom! Zeker, je zou kunnen doen dit project zonder de roterende encoder - een "up", een "down" en een "set" switch zou het werk doen en nemen hetzelfde aantal pinnen, maar waar zou het plezier in dat?
Deze module is de kortste en makkelijkste, maar er zijn een paar leuke rimpels en het resultaat is geweldig.
Ten eerste aan encoders - ik enkel geselecteerd op basis van hoe goedkoop kon ik hen bron uit e-bay. Er kunnen betere criteria maar dat gewerkt voor me. Krijgen met 5 pinnen - zij hebben een druk op de-knop, evenals de links/rechts draai-encoder. Je wilt dat.
Een encoder is in wezen twee schakelaars. Wanneer u zwenking op een manier de eerste switch is aangesloten, gevolgd door de tweede, gevolgd door afsluiting van de eerste, gevolgd door afsluiting van de tweede. In de andere richting, is de volgorde teruggedraaid, zodat de tweede schakelaar verbindt, gevolgd door de eerste, gevolgd door de tweede verbinding verbreken, gevolgd door de eerste verbinding verbreken. Met behulp van een pull-down weerstand op de output en aansluiten van de gemeenschappelijke terminal aan + 5V krijgen we een "Hoog" input voor een aangesloten switch en een "laag" voor verbroken.
De reeks gaat zo:
Met de klok mee:
A: H-H-L-L-H-H-L-L-H-H-L-L
B: L-H-H-L-L-H-H-L-L-H-H-L
Linksom:
A: L-H-H-L-L-H-H-L-L-H-H-L
B: H-H-L-L-H-H-L-L-H-H-L-L
De gemakkelijkste manier om deze te lezen maakt gebruik van een interrupt ingesteld op een routine noemen als een van de ingangen staat wordt gewijzigd. Van kijken naar de bovenstaande volgorde, zult u zien dat wanneer het gaat met de klok mee, A altijd wijzigingen in verschillende van B (A is toonaangevende). Gaat linksom, A altijd wijzigingen zijn hetzelfde als B (A is volgende). Een zeer korte routine kan worden aangeroepen wanneer een gewijzigd en gewoon een teller te verhogen, als A = B en daling van de teller als een = / = B. Interrupts korte houden is altijd een goed plan.
Het enige probleem is dat wij een echt goedkoop encoder gebruiken. De bovenstaande idee werkt prima maar de goedkope encoder "stuitert" zo slecht dat het ligt dicht bij onbruikbaar.
Er zijn tal van ontdendering circuits op het internet voor rotary encoders, maar ik wilde iets dat een) gemakkelijk & b) met was delen die ik had op mijn bank. Blijkt dat door verbinden met de invoer pin via een 1K, met behulp van een 10K pull-down en het toevoegen van een 100nf dop over het buffer, we kunnen gaan van onbruikbaar te bijna perfecte met twee extra onderdelen. Het is eigenlijk een ruwe low-pass filter. Schakelschema wordt weergegeven in de tweede foto.
We kunnen even debounce in software en u zult zien dat ik in de voorbeeldcode, en de volledige klok code, commentaar regels die zou-commentaar om een software ontdendering hebben opgenomen. Als u niet kunt een 100nf cap sparen of uw encoder zelfs meer vreselijk dan de mijne (dat lijkt niet mogelijk) stuitert dan u de software ontdendering un-comment kunt.