- Anyag szükséges
- A joystick modul megértése:
- Kördiagramm:
- Programozás a botkormány összekapcsolására:
- Szimulációs nézet:
- Hardver és munka:
A beviteli eszközök létfontosságú szerepet játszanak minden elektronikai projektben. Ezek a beviteli eszközök segítik a felhasználót a digitális világ interakciójában. A beviteli eszköz lehet olyan egyszerű, mint egy nyomógomb, vagy olyan bonyolult, mint egy érintőképernyő; a projekt követelményei szerint változik. Ebben az oktatóanyagban megtanuljuk, hogyan kell a joystickot összekapcsolni a PIC mikrovezérlőnkkel. A joystick hűvös módja a digitális világgal való interakciónak, és szinte mindenki ezt használta volna videojátékokhoz serdülőkorában.
A joystick kifinomult eszköznek tűnhet, de valójában csak két potenciométer és egy nyomógomb kombinációja. Ennélfogva az MCU-val való interfész is nagyon egyszerű, feltéve, hogy tudjuk, hogyan kell használni az MCU ADC szolgáltatását. Már megtanultuk, hogyan kell használni az ADC-t a PIC-szel, ezért ez csak egy munka lenne a Joystick összekapcsolására. Azoknak az embereknek, akik újak a pickitben, ajánlott megtanulni a fenti ADC projektet, valamint a LED villogó szekvencia projektet a projekt megértésének megkönnyítése érdekében.
Anyag szükséges
- PicKit 3 programozáshoz
- Joy Stick modul
- PIC16F877A IC
- 40 - Csapos IC tartó
- Tökéletes tábla
- 20 MHz-es kristály OSC
- Bergstik csapok
- 220ohmos ellenállás
- 5 színű LED bármilyen színben
- 1 forrasztókészlet
- IC 7805
- 12V-os adapter
- Csatlakozó vezetékek
- Kenyérlemez
A joystick modul megértése:
A botkormányok különböző formákban és méretben kaphatók. Egy tipikus Joystick modult az alábbi ábra mutat be. A joystick nem más, mint egy pár potenciométer és nyomógomb, amelyek egy okos mechanikus elrendezésre vannak felszerelve. A potenciométert a joystick X és Y mozgásának nyomon követésére használják, és a gombbal érzékelhető, hogy a joystickot lenyomják-e. Mindkét potenciométer analóg feszültséget ad ki, amely a joystick helyzetétől függ. És megkapjuk a mozgás irányát, ha ezeket a feszültségváltozásokat valamilyen mikrovezérlő segítségével értelmezzük. Korábban a Joystickot csatlakoztattuk az AVR-hez, a Joystickot az Arduinóhoz és a Raspberry Pi-hez.
Mielőtt bármilyen érzékelőt vagy modult összekapcsolna egy mikrovezérlővel, fontos tudni, hogyan működik. Itt a joystickunknak 5 kimeneti csapja van, ebből kettő az áramellátás, három pedig az adat. A modult + 5 V-tal kell táplálni. Az adatcsapok neve VRX, VRY és SW.
A „VRX” kifejezés az X tengely változó feszültségét, a „VRY” a változó feszültséget az Y tengelyen, az „SW” pedig a kapcsolót jelenti.
Tehát amikor a joystickot balra vagy jobbra mozgatjuk, a VRX feszültségértéke változni fog, és amikor fel vagy le, a VRY változni fog. Hasonlóképpen, ha átlósan mozgatjuk, akkor a VRX és a VRY is változni fog. Amikor megnyomjuk a kapcsolót, az SW csap csatlakozik a földhöz. Az alábbi ábra segít jobban megérteni a kimeneti értékeket
Kördiagramm:
Most, hogy tudjuk, hogyan működik a Joy stick, arra a következtetésre juthatunk, hogy két ADC és egy digitális bemeneti tűre lesz szükségünk a Joystick modul mindhárom adatcsapjának kiolvasásához. A teljes kapcsolási rajzot az alábbi kép mutatja
Amint az a kapcsolási rajzon látható, a joystick helyett két RV1 és RV3 potenciométert használtunk analóg feszültségbemenetként és logikai bemenetként a kapcsolóhoz. Kövesse az ibolyaszínű címkéket, hogy megfeleljen a csapok nevének, és ennek megfelelően hozza létre a kapcsolatait.
Ne feledje, hogy az analóg csapok az A0 és A1 csatornákhoz, a digitális kapcsolók pedig az RB0-hoz vannak csatlakoztatva. 5 LED-lámpát is csatlakoztatunk majd kimenetként, hogy egyet fényeljünk a joystick elmozdulásának iránya alapján. Tehát ezek a kimeneti csapok a C PORT-hoz vannak csatlakoztatva RC0-tól RC4-ig. Miután átfutottuk a kapcsolási rajzunkat, folytathatjuk a programozást, majd szimulálhatjuk a programot ezen az áramkörön, majd felépíthetjük az áramkört egy táblára, majd feltölthetjük a programot a hardverre. Hogy ötletet kapjak a hardveremről, a fenti kapcsolatok létrehozása után az alábbiakban látható
Programozás a botkormány összekapcsolására:
A joystick és a PIC összekapcsolására szolgáló program egyszerű és egyenes. Azt már tudjuk, hogy a botkormány melyik érintkezőkhöz van csatlakoztatva, és mi a funkciójuk, ezért egyszerűen le kell olvasnunk az analóg feszültséget a csapokról, és ennek megfelelően kell vezérelnünk a kimeneti LED-eket.
A teljes program erre a dokumentum végén található, de a dolgok elmagyarázása érdekében az alábbiakban apró, értelmes részletekben feltöröm a kódot.
Mint mindig, a programot a konfigurációs bitek beállításával indítják, ezért nem sokat fogunk tárgyalni a konfigurációs bitek beállításáról, mert ezt már megtanultuk a LED Blinking projektben, és ez ugyanaz a projekt esetében is. A konfigurációs bitek beállítása után meg kell határoznunk az ADC függvényeket az ADC modul használatához a PIC-ben. Ezeket a funkciókat megtanulták az ADC és a PIC oktatóanyag használatának módjában is. Ezt követően ki kell jelentenünk, hogy melyik csapok bemenetek és melyek a kimeneti csapok. Itt a LED a PORTC-hoz van csatlakoztatva, így azok kimeneti csapok, és a Joystick kapcsolócsapja digitális bemeneti tű. Tehát a következő sorokkal deklaráljuk ugyanezt:
// ***** I / O konfiguráció **** // TRISC = 0X00; // A C portot kimeneti portként használják PORTC = 0X00; // MAke all pins low TRISB0 = 1; // RB0 bemenetként használatos // *** I / O konfiguráció vége ** ///
Az ADC-csapokat nem kell bemeneti csapokként definiálni, mert az ADC-funkció használatakor ezeket bemeneti tűként rendelik hozzá. A csapok definiálása után meghívhatjuk a korábban definiált ADC_initialize függvényt. Ez a funkció beállítja a szükséges ADC regisztereket és előkészíti az ADC modult.
ADC_Initialize (); // Konfigurálja az ADC modult
Most belépünk a végtelen, miközben hurokba. Ezen a hurkon belül figyelemmel kell kísérnünk a VRX, VRY és SW értékeit, és az értékek alapján ellenőriznünk kell a led kimenetét. A monitorozási folyamatot megkezdhetjük a VRX és VRY analóg feszültségének kiolvasásával az alábbi vonalak felhasználásával
int joy_X = (ADC_Read (0)); // Olvassa el a joystick X tengelyét int joy_Y = (ADC_Read (1)); // Olvassa el a Joystick Y tengelyét
Ez a sor megmenti a VRX és a VRY értékét az joy_X és az joy_Y változóban. Az ADC_Read (0) függvény azt jelenti, hogy kiolvassuk az ADC értéket a 0 csatornáról, amely az A0 tű. Csatlakoztattuk a VRX-et és a VRY-t az A0 és A1 csapokhoz, így 0-tól 1-ig olvashattunk.
Ha emlékszik az ADC oktatóanyagunkra, tudjuk, hogy az analóg feszültséget olvastuk, a PIC, mivel digitális eszköz, 0-tól 1023-ig olvassa fel. Ez az érték a joystick modul helyzetétől függ. A fenti címke diagram segítségével megtudhatja, milyen értékre számíthat a joystick minden helyzetében.
Itt a 200 határértéket használtam alsó határként, a 800 értéket pedig felső határként. Bármit használhat, amit csak akar. Tehát használjuk ezeket az értékeket, és kezdjük el ennek megfelelően világítani a LED-eket. Ehhez össze kell hasonlítanunk az joy_X értékét az előre definiált értékekkel egy IF hurok segítségével, és a LED csapokat magasra vagy alacsonyra kell állítanunk az alábbiak szerint. A megjegyzéssorok segítenek jobban megérteni
if (öröm_X <200) // Öröm feljebb lépett {RC0 = 0; RC1 = 1;} // A felső LED izzik, ha (joy_X> 800) // Az öröm lefelé mozdult {RC0 = 1; RC1 = 0;} // Alsó izzó LED más // Ha nem mozgatja {RC0 = 0; RC1 = 0;} // Kapcsolja ki mindkét LED-et
Hasonlóan tehetjük ugyanezt az Y-tengely értékére is. Csak meg kell cserélni a változó joy_X a joy_Y és ellenőrzik a következő két LED tük az alábbiak szerint. Ne feledje, hogy ha a joystickot nem mozgatják, akkor mindkét LED világítunk.
if (öröm_Y <200) // Öröm balra mozgott {RC2 = 0; RC3 = 1;} // bal oldali LED világít , ha (öröm_Y> 800) // Az öröm jobbra mozdult {RC2 = 1; RC3 = 0;} // Right Light LED else // Ha nem mozdult {RC2 = 0; RC3 = 0;} // Kapcsolja ki mindkét LED-et
Most még egy utolsó dolgunk van, ellenőriznünk kell a kapcsolót, ha megnyomják. A kapcsolótüske az RB0-hoz van csatlakoztatva, így újra használhatjuk az if loop-ot és ellenőrizhetjük, hogy be van-e kapcsolva. Ha megnyomják, akkor a LED bekapcsol, jelezve, hogy a kapcsolót megnyomták.
if (RB0 == 1) // Ha az Öröm megnyomása RC4 = 1; // Izzó középső LED, egyéb RC4 = 0; // OFF középső LED
Szimulációs nézet:
A teljes projekt a Proteus szoftver segítségével szimulálható. Miután megírta a programot, fordítsa le a kódot, és kapcsolja össze a szimuláció hexakódját az áramkörrel. Akkor vegye észre a potenciométerek helyzetének megfelelően izzó LED-es lámpákat. A szimuláció az alábbiakban látható:
Hardver és munka:
Miután ellenőrizzük a kódot a Szimuláció segítségével, felépíthetjük az áramkört egy kenyérlapra. Ha követte a PIC oktatóanyagokat, akkor észrevette, hogy ugyanazt a perf lapot használjuk, amelyre a PIC és a 7805 áramkör forrasztva van. Ha Ön is érdekelt egy ilyen elkészítésében, hogy azt az összes PIC-projektjéhez használja, forrassza az áramkört egy tökéletes táblára. Vagy építheti a teljes áramkört egy kenyérlapra is. Ha a hardver elkészült, akkor valami ilyesmi lehet az alábbiakban.
Most töltse fel a kódot a PIC mikrovezérlőbe a PICkit3 segítségével. Hivatkozásként a LED Blink projektre hivatkozhat. Észre kell vennie, hogy a sárga fény magasra emelkedik, amint a program feltöltődik. Most használja a joystickot, és változtassa meg a gombot, a joystick minden irányához észreveheti, hogy a megfelelő LED magasan világít. Amikor megnyomja a középső kapcsolót, akkor kikapcsolja a közepén lévő LED-et.
Ez a munka csak egy példa, rengeteg érdekes projektet építhet rá. A projekt teljes működése megtalálható az oldal végén található videóban is.
Remélem, megértette a projektet, és élvezte az építését, ha bármilyen problémája van ezzel, nyugodtan tegye fel az alábbi megjegyzés rovatba, vagy írja meg a fórumokra a segítségért.