Rotary kapcsoló

A rotary kapcsoló egy igen hasznos adatbeviteli eszköz. Agy forgatógomb, amivel fényerőt (hangerőt) szabályozhatunk, de más hasznos dolgokra is használhatjuk. Én pl. elsőként az ABC betűinek bevitelére használtam. Gyorsabb a forgatógombot tekergetni, mint két különálló gombot nyomogatni. Így néz ki egy rotary gomb:

A tengely forgatás közben érezhetően kis pici pozíciókban áll meg. Az általam használt kapcsoló 30 ilyen pozícióval rendelkezik.

A jeladó belsejében két kapcsoló van (és egy ezektől független harmadik, ami akkor kapcsol, amikor megnyomjuk a tengelyt). Amikor a kapcsoló egy rögzített helyzetben megáll, mindkét kapcsoló nyitott állapotba kerül. Ha valamelyik irányba forgatjuk, akkor az egyik kapcsoló előbb kapcsol, mint a másik. Innen kideríthető a kapcsolás iránya:

Az alábbi ábra szemlélteti a kapcsoló kialakításának módját.

Amint látható, az A és B kontaktus szöghelyzete olyan, hogy:

  • A tengely óramutató járásával megegyező irányú elforgatásával az A és C kivezetések kapcsolnak először.
  • A tengely óramutató járásával ellentétes irányú forgatásakor a B és C kivezetések kapcsolnak először.

Ezt a működést az alábbi ábra szemlélteti:

Lényegében azt kell egy programmal észrevennünk, hogy, hogy melyik kapcsoló vált állapotban először, és ez meghatározza a forgásirányt. Ha A változik először, a kapcsoló az óramutató járásával megegyező irányba forog. Ha B változik először, akkor a kapcsoló az óramutató járásával ellentétes irányban forog.

A rotary kapcsoló kivezetései:

A modul úgy van kialakítva, hogy alacsony a kimenet, amikor a kapcsolók zárt állapotban vannak és magasak, amikor a kapcsolók nyitottak. A zárt állapot a megfelelő kivezetést földre húzza le. Nyitott állapotban a kivezetést egy felhúzó ellenállás a tápfeszültségre húzza fel.

Korábban említettem, hogy van egy harmadik kapcsoló is. Ez akkor záródik, ha a tengelyt megnyomjuk. Így a forgatást követően azonnal jelzést adhatunk a programnak, ha a forgatással kiválasztottuk a megfelelő menüpontot, betűt stb.

Itt egy példaprogram a használatra. A program egy számláló értékét változtatja a rotary tengelyének tekergetésével, fel és le számlál a tekergetés iránya szerint :

int szamlalo = 0;      //szamlalja a pozició váéltások számát 
                                     //előjelesen (előre +, hátra -)
 int rotary_CLK_elozo;     //Utolsó állapota az a kivezetésnek
 int rotary_CLK;                 //A kivezetés aktuális állapota
 int rotary_DT;                    //B kivezetés aktuális állapota
 int rotary_PUSSH;            //nyomógomb kivezetés állapota

 void setup() {
   pinMode (3,INPUT);         //rotary CLK kivezetés
   pinMode (4,INPUT);         //rotary DT kivezetés
   pinMode (5,INPUT);         //rotary nyomógomb kivezetés
   digitalWrite(5,HIGH);      //felhúzó ellenállás bekapcsolása
   pinMode (8,OUTPUT);    //rotary CLK állapotának megjelenítéséhez
   pinMode (9,OUTPUT);    //rotary DT állapotának megjelenítéséhez
   pinMode (10,OUTPUT);  //rotary DT állapotának megjelenítéséhez
   rotary_CLK_elozo = digitalRead(3);  
   Serial.begin (9600);
 }

 void loop() {
   rotary_CLK = digitalRead(3);
   rotary_DT = digitalRead(4);
   rotary_PUSSH = digitalRead(5);
   digitalWrite(8,rotary_CLK);
   digitalWrite(9,rotary_DT);
   digitalWrite(10,rotary_PUSSH);
   if (rotary_CLK and !rotary_CLK_elozo){  //csak a CLK kivezetés 
                                   //felfutó élét figyeljük, 
                                   //mert nyugalmi helyzetben
                                   // CLK=1 felfutó él csak
                                   // tekergetés közben fordul elő
       if (rotary_DT) {         // DT kivezetés 1 - Óramutató járásával 
                                         //megegyezõ irányban forgatunk
         szamlalo--;
       } 
      else {                     // DT kivezetés 0, óramutató játrásával
                                     //ellentétesen forgalunk
         szamlalo++;
       }
      Serial.println(szamlalo);
  }
  rotary_CLK_elozo = rotary_CLK;
}

Mennyire volt hasznos amit olvastál?

Kattints egy csillagra az értékeléshez!

Sajnálom, hogy amit olvastál nem volt hasznos számodra!

Szeretném ha elégedett lennél!

Írd le kérlek, hogy mi nem tetszett!?