Med en kvadratur kodare med en ATtiny 2313 och en OLED-Display (3 / 3 steg)
Steg 3: Firmware
Bifogat är firmware. Du kan kompilera det med "make", som beskrivs i det sista steget. Det är skrivet i en hårdvara oberoende sätt: alla funktioner, som inte är standard C, genomförs i hardware.cpp, så portering till en annan mikrokontroller är lätt. Rotationsencoder funktioner finns i main.c. I display.c är funktioner för text, siffror och rektanglar. OLED-display har en auto baud upptäckten, så du kan använda andra överföringshastigheter också.Det finns två ingående stift för rotary encoder att koda de fyra faserna av kvadratur signalerna (se Wikipedia bild http://upload.wikimedia.org/wikipedia/en/thumb/6/68/Quadrature_Diagram.svg/500px-Quadrature_Diagram.svg.png). Tur riktning kan upptäckas, om man jämför den sista fas staten med den nya staten, e.g. om det ändrar från staten 2 till 3 det var gjort rätt och om det ändrar från staten 3 till 2 förvandlades vänster.
Så du måste veta den förra och den nuvarande staten. En stat är kodad i två bitar. Den sista och nästa medlemsstat kombination är 4 bitar. Detta är index i en tabell med 16 poster, som ger + 1, 0 eller -1, som riktningen som rotary encoder vändes.
Tabellen har den fördelen att du kan enkelt genomföra särskilda beteende, t.ex. för Alperna kodaren finns fasövergångar vid tomgång positioner, som ignoreras, eftersom detta resulterade i studsar mellan två värden ibland. Och denna halfes resolution, vilket resulterar i en räknar steg per raster.
Studsande kontakter är inga problem, om tid mellan jämföra två faser är snabbare än den snabbaste hastigheten två faser kan ändra.