- Potreben material
- Razumevanje modula igralne palice:
- Shema vezja:
- Programiranje za povezovanje igralne palice:
- Pogled simulacije:
- Strojna oprema in delovanje:
Vhodne naprave igrajo ključno vlogo pri vseh elektronskih projektih. Te vhodne naprave uporabniku pomagajo pri interakciji z digitalnim svetom. Vhodna naprava je lahko tako preprosta kot tipka ali tako zapletena kot zaslon na dotik; razlikuje se glede na zahteve projekta. V tej vadnici se bomo naučili, kako povezati krmilno palčko z našim mikrokrmilnikom PIC, krmilna palica je kul način za interakcijo z digitalnim svetom in skoraj vsi bi jo uporabili za igranje video iger v mladostniški dobi.
Mogoče se zdi, da je krmilna palica dovršena naprava, vendar je v resnici le kombinacija dveh potenciometrov in gumba. Zato je tudi zelo enostavno povezati se s katerim koli MCU, če vemo, kako uporabiti funkcijo ADC tega MCU. Že smo se naučili, kako uporabljati ADC s PIC, zato bi bilo to le delo za povezovanje igralne palice. Ljudem, ki šele izberejo projekt, je priporočljivo, da se naučijo zgornjega projekta ADC in projekta LED utripajočega zaporedja, da bodo projekt lažje razumeli.
Potreben material
- PicKit 3 za programiranje
- Modul Joy Stick
- PIC16F877A IC
- 40 - Nosilec IC zatiča
- Perf deska
- 20 MHz Crystal OSC
- Zatiči Bergstik
- 220ohm upor
- 5-LED v kateri koli barvi
- 1 Spajkalni komplet
- IC 7805
- 12V adapter
- Priključne žice
- Breadboard
Razumevanje modula igralne palice:
Joysticks so na voljo v različnih oblikah in velikostih. Tipičen modul Joystick je prikazan na spodnji sliki. Joystick ni nič drugega kot nekaj potenciometrov in tipk, nameščenih na pametni mehanski postavitvi. Potenciometer se uporablja za sledenje gibanju krmilne palice X in Y, gumb pa služi za zaznavanje pritiska na krmilno palčko. Oba potenciometra oddajata analogno napetost, ki je odvisna od položaja krmilne palice. In smer gibanja lahko dobimo z interpretacijo teh sprememb napetosti z uporabo nekaterih mikrokrmilnikov. Prej smo Joystick povezovali z AVR, Joystick z Arduino in Raspberry Pi.
Preden povežete senzor ali modul z mikrokrmilnikom, je pomembno vedeti, kako deluje. Tu ima naša krmilna palica 5 izhodnih zatičev, od katerih sta dva za napajanje in tri za podatke. Modul naj bo napajan z + 5V. Podatkovni zatiči so poimenovani VRX, VRY in SW.
Izraz "VRX" pomeni spremenljivo napetost na osi X, izraz "VRY" pa spremenljivo napetost na osi Y, "SW" pa stikalo.
Ko premikamo krmilno palčko levo ali desno, se bo vrednost napetosti na VRX spreminjala, ko pa jo spreminjamo navzgor ali navzdol, pa se bo spreminjala VRY. Podobno, ko ga premikamo diagonalno, se spreminjata tako VRX kot VRY. Ko pritisnemo stikalo, bo SW zatič povezan z maso. Spodnja slika vam bo pomagala veliko bolje razumeti izhodne vrednosti
Shema vezja:
Zdaj, ko vemo, kako deluje Joy stick, lahko pridemo do zaključka, da bomo za branje vseh treh podatkovnih zatičev modula Joystick potrebovali dva ADC zatiča in en digitalni vhodni zatič. Celoten diagram vezja je prikazan na spodnji sliki
Kot lahko vidite na vezju, smo namesto krmilne palice uporabili dva potenciometra RV1 in RV3 kot analogna napetostna vhoda in logični vhod za stikalo. Lahko sledite nalepkam, napisanim v vijolični barvi, da se ujemajo z imeni nožic in ustrezno vzpostavite povezave.
Upoštevajte, da so analogni zatiči priključeni na kanale A0 in A1, digitalno stikalo pa na RB0. Kot izhod bomo imeli priključenih tudi 5 LED lučk, da bomo lahko svetili eno glede na smer premikanja krmilne palice. Torej so ti izhodni zatiči priključeni na PORT C od RC0 do RC4. Ko prestavimo diagram vezja, lahko nadaljujemo s programiranjem, nato simuliramo program na tem vezju, nato vezje zgradimo na plošči in nato program naložimo na strojno opremo. Da bi dobili idejo, je moja strojna oprema po vzpostavitvi zgornjih povezav prikazana spodaj
Programiranje za povezovanje igralne palice:
Program za vmesnik igralno palico s PIC, je preprost in naravnost naprej. Že vemo, s katerimi nožicami je povezan Joystick in kakšna je njihova funkcija, zato moramo preprosto prebrati analogno napetost z nožic in temu primerno upravljati izhodne LED.
Celoten program za to je podan na koncu tega dokumenta, toda za razlago stvari razčlenjujem kodo v majhne pomembne delčke spodaj.
Kot vedno se program zažene z nastavitvijo konfiguracijskih bitov, o nastavitvi konfiguracijskih bitov ne bomo veliko razpravljali, ker smo se tega že naučili v projektu LED utripa in je tudi za ta projekt enak. Po nastavitvi bitov za konfiguracijo moramo v našem PIC definirati funkcije ADC za uporabo modula ADC. Te funkcije smo se naučili tudi v tem, kako uporabljati ADC z vadnico PIC. Po tem moramo razglasiti, kateri zatiči so vhodni in kateri izhodni zatiči. Tu je LED priključen na PORTC, tako da so to izhodni zatiči, stikalni zatič igralne palice pa digitalni vhodni zatič. Torej uporabljamo naslednje vrstice za razglasitev istega:
// ***** I / O konfiguracija **** // TRISC = 0X00; // PORT C se uporablja kot izhodna vrata PORTC = 0X00; // PRIPRAVI vse nožice TRISB0 = 1; // RB0 se uporablja kot vhod // *** Konec I / O konfiguracije ** ///
V ADC zatiči ni treba opredeliti kot vhodnih sponk, ker pri uporabi funkcije ADC se bo dodeljeno kot vhodni pin. Ko so nožice definirane, lahko pokličemo funkcijo ADC_initialize, ki smo jo definirali prej. Ta funkcija bo nastavila potrebne registre ADC in pripravila modul ADC.
ADC_Initialize (); // Konfigurirajte modul ADC
Zdaj stopimo v našo neskončno zanko while . Znotraj te zanke moramo spremljati vrednosti VRX, VRY in SW in na podlagi vrednosti nadzorovati izhod led. Postopek spremljanja lahko začnemo z odčitavanjem analogne napetosti VRX in VRY z uporabo spodnjih vrstic
int joy_X = (ADC_Read (0)); // Preberite X-os krmilne palice int joy_Y = (ADC_Read (1)); // Preberite os Y igralne palice
Ta vrstica bo shranila vrednost VRX in VRY v spremenljivki joy_X oziroma joy_Y . Funkcija ADC_Read (0) pomeni, da vrednost ADC beremo s kanala 0, ki je pin A0. VRX in VRY smo povezali na pin A0 in A1 in tako beremo od 0 do 1.
Če se lahko spomnite naše vadnice ADC, vemo, da beremo analogno napetost, jo bo PIC, ki je digitalna naprava, prebral od 0 do 1023. Ta vrednost je odvisna od položaja modula krmilne palice. Z zgornjim diagramom nalepk lahko veste, kakšno vrednost lahko pričakujete za vsak položaj krmilne palice.
Tu sem uporabil mejno vrednost 200 kot spodnjo mejo in vrednost 800 kot zgornjo mejo. Uporabite lahko vse, kar želite. Torej, uporabimo te vrednosti in začnimo ustrezno žariti LED. Da bi to naredili, moramo primerjati vrednost joy_X z vnaprej določenimi vrednostmi z uporabo zanke IF in zatiči LED postaviti visoko ali nizko, kot je prikazano spodaj. Vrstice s komentarji vam bodo pomagale bolje razumeti
if (joy_X <200) // Radost premaknjena navzgor {RC0 = 0; RC1 = 1;} // Zasveti zgornja LED drugače, če (joy_X> 800) // Radost premaknjena navzdol {RC0 = 1; RC1 = 0;} // Sveti spodnja lučka LED else // Če ni premaknjena {RC0 = 0; RC1 = 0;} // Izklopite obe led
Podobno lahko storimo enako tudi za vrednost osi Y. Samo spremenljivko joy_X moramo zamenjati z joy_Y in nadzirati naslednja dva LED zatiča, kot je prikazano spodaj. Ko krmilne palice ne premaknete, izklopimo obe LED lučki.
if (joy_Y <200) // Radost premaknjena levo {RC2 = 0; RC3 = 1;} // Sveti levo LED sicer, če je (joy_Y> 800) // Radost premaknjena desno {RC2 = 1; RC3 = 0;} // Sveti desno LED else // Če se ne premakne {RC2 = 0; RC3 = 0;} // Izklopite obe LED
Zdaj nas čaka še ena zadnja stvar, preveriti moramo stikalo, če je pritisnjeno. Stikalo je priključeno na RB0, tako da lahko ponovno uporabimo zanko if in preverimo, ali je vklopljena. Če pritisnete, bomo lučko zasvetili in opozorili, da je stikalo pritisnjeno.
if (RB0 == 1) // Če pritisnemo Joy RC4 = 1; // sveti srednja LED drugače RC4 = 0; // IZKLOPLJENA srednja LED
Pogled simulacije:
Celoten projekt je mogoče simulirati s pomočjo programske opreme Proteus. Ko napišete program, sestavite kodo in povežite šestnajstiško kodo simulacije z vezjem. Nato opazite, da LED lučke svetijo glede na položaj potenciometrov. Simulacija je prikazana spodaj:
Strojna oprema in delovanje:
Po preverjanju kode s pomočjo simulacije lahko vezje sestavimo na plošči za kruh. Če bi sledili vadnicam PIC, bi opazili, da uporabljamo isto ploščo za perf, na katero je prilepljeno vezje PIC in 7805. Če ste tudi vi zainteresirani za izdelavo takšnega, da ga boste uporabili pri vseh svojih projektih PIC, vezje spajkajte na ploščo za perf. Lahko pa celotno vezje zgradite tudi na plošči. Ko je strojna oprema končana, bi bilo nekaj takega spodaj.
Zdaj naložite kodo v mikrokrmilnik PIC s pomočjo PICkit3. Za napotke se lahko obrnete na projekt LED Blink. Takoj, ko program naložite, opazite, da se rumena luč močno poviša. Zdaj uporabite krmilno palčko in spreminjajte gumb, za vsako smer krmilne palice boste opazili, da se posamezna dioda LED visoko dviga. Ko pritisnete stikalo na sredini, ugasne LED na sredini.
To delo je le primer, na njem lahko zgradite veliko zanimivih projektov. Celotno delovanje projekta najdete tudi v videoposnetku na koncu te strani.
Upam, da ste projekt razumeli in ste ga radi zgradili, če imate pri tem kakršne koli težave, ga objavite v spodnjem oddelku za komentarje ali ga napišite na forumih za pomoč.