Lätt Arduino menyer för rotationsencoder
Roterande pulsgivare med centrum - tryckknappar är cool ingång hårdvara för projekt, särskilt om du vill kunna bläddra igenom menyer och väljer alternativ. Förhoppningsvis detta Instructable kommer att ge dig självförtroende att prova grundläggande menysystem och kombinera det med en rotationsencoder att ge en professionell känsla till ditt nästa projekt!
Varför menyer och roterande pulsgivare behöver koden
Jag ville ha en meny i ett kommande projekt och använda en roterande kodare med en centrum tryckknapp som min input hårdvara. Detta är verkligen liknar den LCD-styrenheter för RAMPER och Arduino MEGA 3D-skrivare. Rotary encoder tillåter mig att rulla genom menyalternativen, dvs navigera i menyn, Välj undermenyer och också ändra värdena inom sub-sub-menus/inställningar - mycket mångsidig för en hårdvara gränssnitt! En mikrokontroller för att hantera allt detta och microcontrollers behöver instruktioner, AKA koden!
Andra alternativ
Problemet jag hade med existerande Arduino menyn bibliotek och menykod är att de var alltför komplicerade för enkla menyer. En annan nackdel med många alternativ var att koden var avsedd för LCD-skärmar och momentan tryckknappar, inte rotationsencoder och kan anpassas till andra uppvisning produktionerna. Dessa menyer var inriktad runt att välja mellan ett litet antal lägen och öka värdena förhållandevis långsamt. Vi vet att roterande pulsgivare är en bra hårdvara alternativ eftersom de har råd relativt snabb indatavärdet ändras samtidigt behålla fin kontroll på låg hastighet. Jag ville skriva koden som skulle tillåta entydig högsta nivå menynavigering men också att du kan snabbt bläddra igenom ett stort antal värden inom varje sub-menu/inställning, att utnyttja styrkan i rotary encoder.
Strategin
Jag beslutade att följa några råd du använder if() uttalanden för en enkel menystruktur och hålla den skiss-baserade. Den resulterande kod bygger på min tidigare Instructable som syftade till att på ett tillförlitligt sätt läsa rotation pulser och riktning. Vänligen kolla bakgrunden.
I denna skiss, skulle vi lägga till läsning av knappen centrum på vridomkopplaren axeln, med hjälp av kod att Nick Gammon utvecklad på inspelningsknappen statliga förändringar med debouncing och utan att förlita sig på den Arduino delay() funktion som förhindrar mikrokontroller köra andra kod och eventuellt införa märkbar fördröjning i vår skiss, e.g. långsamt skärm uppdateringsfrekvens. Knappen Ändra statuskod är mycket mer användbar än att bara läsa digital logik högt eller lågt när du använder en knapp välja något en gång, som en menyn alternativ, eftersom det kan hjälpa dig att förhindra oavsiktlig flera val för varje knapptryckning.
Låt oss ta en titt på vad du behöver ställa in för att använda denna exempelkod i steg 1.