- Potrebný materiál
- Pochopenie modulu joysticku:
- Schéma zapojenia:
- Programovanie rozhrania joysticku:
- Zobrazenie simulácie:
- Hardvér a práca:
Vstupné zariadenia hrajú zásadnú úlohu vo všetkých projektoch elektroniky. Tieto vstupné zariadenia pomáhajú používateľovi komunikovať s digitálnym svetom. Vstupné zariadenie môže byť rovnako jednoduché ako tlačidlo alebo také zložité ako dotyková obrazovka; líši sa to podľa požiadavky projektu. V tomto výučbe sa naučíme, ako prepojiť joystick s našim mikrokontrolérom PIC. Joystick je skvelým spôsobom interakcie s digitálnym svetom a takmer každý by ho používal na hranie videohier v dospievaní.
Joystick sa môže javiť ako sofistikované zariadenie, ale v skutočnosti je to iba kombinácia dvoch potenciometrov a tlačidla. Preto je tiež veľmi ľahké rozhranie s akýmkoľvek MCU za predpokladu, že vieme, ako používať funkciu ADC tohto MCU. Už sme sa naučili, ako používať ADC s PIC, a preto by to bolo len riešenie problému s pripojením joysticku. Pre ľudí, ktorí sú v kurze, sa odporúča naučiť sa vyššie uvedený projekt ADC, ako aj projekt LED Blinking Sequence Project, ktorý uľahčí porozumenie projektu.
Potrebný materiál
- PicKit 3 pre programovanie
- Modul Joy Stick
- PIC16F877A IC
- 40 - pinový držiak IC
- Perf doska
- 20 MHz Crystal OSC
- Špendlíky Bergstik
- 220ohmový rezistor
- 5 LED diód ľubovoľnej farby
- 1 spájkovacia súprava
- IC 7805
- 12V adaptér
- Pripojovacie vodiče
- Nepál
Pochopenie modulu joysticku:
Joysticky sú k dispozícii v rôznych tvaroch a veľkostiach. Typický modul Joystick je zobrazený na obrázku nižšie. Joystick nie je nič iné ako pár potenciometrov a tlačidlo pripevnené na inteligentnom mechanickom usporiadaní. Potenciometer slúži na sledovanie pohybu X a Y joysticku a tlačidlo slúži na snímanie stlačenia joysticku. Oba potenciometre poskytujú analógové napätie, ktoré závisí od polohy joysticku. A smer pohybu môžeme získať interpretáciou týchto zmien napätia pomocou nejakého mikrokontroléra. Predtým sme prepojili Joystick s AVR, Joystick s Arduino a Raspberry Pi.
Pred prepojením ktoréhokoľvek snímača alebo modulu s mikrokontrolérom je dôležité vedieť, ako funguje. Tu má náš joystick 5 výstupných kolíkov, z ktorých dva sú napájacie a tri dátové. Modul by mal byť napájaný + 5V. Dátové kolíky sú pomenované ako VRX, VRY a SW.
Pojem „VRX“ znamená premenlivé napätie na osi X a výraz „VRY“ znamená premenlivé napätie na osi Y a „SW“ znamená spínač.
Takže keď pohybujeme joystickom doľava alebo doprava, hodnota napätia na VRX sa bude meniť, a keď ju budeme meniť, bude sa meniť VRY. Podobne, keď ním pohybujeme diagonálne, bude sa meniť VRX aj VRY. Keď stlačíme spínač, SW pin bude pripojený k zemi. Nasledujúci obrázok vám pomôže lepšie pochopiť výstupné hodnoty
Schéma zapojenia:
Teraz, keď vieme, ako Joystick funguje, môžeme dospieť k záveru, že na prečítanie všetkých troch dátových pinov modulu Joystick budeme potrebovať dva ADC piny a jeden digitálny vstupný pin. Kompletná schéma zapojenia je znázornená na obrázku nižšie
Ako vidíte na schéme zapojenia, namiesto joysticku sme ako analógové napäťové vstupy použili dva potenciometre RV1 a RV3 a logický vstup pre prepínač. Môžete sledovať štítky napísané fialovou farbou, aby ste sa zhodovali s názvami špendlíkov a podľa toho vytvorili spojenie.
Nezabudnite, že analógové piny sú pripojené ku kanálom A0 a A1 a digitálny prepínač je pripojený k RB0. Ako výstup budeme mať tiež pripojených 5 LED svetiel, aby sme mohli svietiť jedným na základe smeru, ktorým sa pohybuje joystick. Takže tieto výstupné piny sú pripojené k PORTU C od RC0 po RC4. Keď sme posunuli našu schému zapojenia, môžeme pokračovať v programovaní, potom simulovať program na tomto obvode, potom vytvoriť obvod na doske a potom nahrať program na hardvér. Pre predstavu, môj hardvér po vykonaní vyššie uvedených pripojení je uvedený nižšie
Programovanie rozhrania joysticku:
Program rozhranie joystick s PIC je jednoduchá a priamočiara. Už vieme, ku ktorým pinom je Joystick pripojený a aká je ich funkcia, takže musíme jednoducho načítať analógové napätie z pinov a podľa toho riadiť výstupné LED.
Celý program, ako to urobiť, je uvedený na konci tohto dokumentu, ale kvôli vysvetleniu kódu rozbíjam tento kód na malé zmysluplné úryvky uvedené nižšie.
Ako vždy je program spustený nastavením konfiguračných bitov, nebudeme veľa diskutovať o nastavovaní konfiguračných bitov, pretože sme sa to už naučili v projekte LED Blinking a je to rovnaké aj pre tento projekt. Len čo sú konfiguračné bity nastavené, musíme v našom PIC definovať funkcie ADC pre použitie modulu ADC. Tieto funkcie sme sa naučili aj v návode na použitie ADC s PIC. Potom musíme deklarovať, ktoré piny sú vstupy a ktoré sú výstupné piny. Tu je LED pripojená k PORTC, takže sú výstupnými pinmi a spínací kolík na joysticku je digitálny vstupný kolík. Nasledujúce riadky teda deklarujeme to isté:
// ***** I / O konfigurácia **** // TRISC = 0X00; // PORT C sa používa ako výstupné porty PORTC = 0X00; // MAke all pins low TRISB0 = 1; // RB0 sa používa ako vstup // *** Koniec konfigurácie I / O ** ///
Na ADC kolíky nemusia byť definovaný ako vstupné piny, pretože pri použití funkcie ADC bude priradený ako vstupné pin. Akonáhle sú kolíky sú definované, môžeme volať ADC_initialize funkcie, ktoré sme definovali skôr. Táto funkcia nastaví požadované registre ADC a pripraví modul ADC.
ADC_Initialize (); // Konfigurácia modulu ADC
Teraz sme sa vstúpiť do našej nekonečna , zatiaľ čo slučky. Vo vnútri tejto slučky musíme monitorovať hodnoty VRX, VRY a SW a na základe týchto hodnôt musíme kontrolovať výstup LED. Monitorovací proces môžeme zahájiť načítaním analógového napätia VRX a VRY pomocou nasledujúcich riadkov
int joy_X = (ADC_Read (0)); // Prečítajte si os X joysticku int joy_Y = (ADC_Read (1)); // Prečítajte si os Y na joysticku
Táto linka bude ukladať hodnotu VRX a Vry v premennej joy_X a joy_Y resp. Funkcia ADC_Read (0) znamená, že načítame hodnotu ADC z kanálu 0, ktorým je pin A0. Pripojili sme VRX a VRY k pinom A0 a A1, a tak sme čítali od 0 a 1.
Ak si môžete spomenúť z nášho tutoriálu ADC, vieme, že čítame analógové napätie, PIC ako digitálne zariadenie ho bude čítať od 0 do 1023. Táto hodnota závisí od polohy modulu joysticku. Pomocou vyššie uvedeného diagramu štítkov môžete zistiť, akú hodnotu môžete očakávať pre každú pozíciu joysticku.
Tu som použil limitnú hodnotu 200 ako dolnú hranicu a hodnotu 800 ako hornú hranicu. Môžete použiť čokoľvek chcete. Použime teda tieto hodnoty a začnime podľa toho svietiť LED diódami. Aby sme to dosiahli, musíme pomocou IF slučky porovnať hodnotu joy_X s preddefinovanými hodnotami a dosiahnuť, aby kolíky LED boli vysoké alebo nízke, ako je uvedené nižšie. Riadky komentárov vám pomôžu lepšie pochopiť
if (joy_X <200) // Radosť sa posunula nahor {RC0 = 0; RC1 = 1;} // Svieti horná LED inak, ak (joy_X> 800) // Joy presunutá nadol {RC0 = 1; RC1 = 0;} // Svieti dolne LED inak // Ak sa neposunie {RC0 = 0; RC1 = 0;} // Vypnite obidve led
To isté môžeme urobiť aj pre hodnotu osi Y. Musíme len vymeniť premennú joy_X za joy_Y a tiež ovládať ďalšie dva kolíky LED, ako je to znázornené nižšie. Upozorňujeme, že ak joystickom nehýbete, vypneme obidve svetlá LED.
if (joy_Y <200) // Radosť presunutá doľava {RC2 = 0; RC3 = 1;} // Svieti ľavou LED inou if (joy_Y> 800) // Radosť sa pohybovala doprava {RC2 = 1; RC3 = 0;} // Svieti vpravo inde LED // Ak sa nepresunie {RC2 = 0; RC3 = 0;} // Vypnite obe LED
Teraz máme ešte jednu poslednú vec, ktorú musíme urobiť, musíme skontrolovať prepínač, ak je stlačený. Prepínací kolík je pripojený k RB0, takže môžeme znova použiť slučku if a skontrolovať, či je zapnutá. Ak je stlačené, otočením LED indikujeme stlačenie spínača.
if (RB0 == 1) // Ak je stlačená Joy RC4 = 1; // Svieti stredná LED inak RC4 = 0; // VYPNUTÁ stredná LED dióda
Zobrazenie simulácie:
Celý projekt je možné simulovať pomocou softvéru Proteus. Po napísaní programu skompilujte kód a prepojte hexadecimálny kód simulácie s obvodom. Potom by ste si mali všimnúť, že LED diódy svietia podľa polohy potenciometrov. Simulácia je uvedená nižšie:
Hardvér a práca:
Po overení kódu pomocou Simulácie môžeme vytvoriť obvod na doske s chlebom. Ak ste sledovali výukové programy PIC, určite by ste si všimli, že používame rovnakú dosku perf, na ktorej je spájkovaný obvod PIC a 7805. Ak máte tiež záujem o výrobu jedného tak, aby ste ho mohli použiť pri všetkých svojich projektoch PIC, potom zapojte obvod na dosku perf. Alebo môžete tiež postaviť celý obvod na nepájivej doske. Akonáhle je hardvér hotový, bude to niečo podobné nižšie.
Teraz pomocou PICkit3 nahrajte kód do mikrokontroléra PIC. Pokyny nájdete v projekte LED Blink. Mali by ste si všimnúť, že žlté svetlo zhasne ihneď po načítaní programu. Teraz použite joystick a nastavte gombík, pre každý smer joysticku si všimnete, že príslušná LED dióda stúpa vysoko. Po stlačení prepínača v strede zhasne LED v strede.
Toto fungovanie je len príkladom, navyše na ňom môžete postaviť veľa zaujímavých projektov. Kompletné fungovanie projektu možno nájsť aj na videu na konci tejto stránky.
Dúfam, že ste pochopili projekt a páčilo sa vám jeho zostavenie. Ak máte problém, môžete ho uverejniť v sekcii komentárov nižšie alebo napísať na fóra so žiadosťou o pomoc.