- Potreban materijal
- Razumijevanje modula džojstika:
- Kružni dijagram:
- Programiranje povezivanja džojstika:
- Simulacijski prikaz:
- Hardver i rad:
Ulazni uređaji igraju vitalnu ulogu u svim elektroničkim projektima. Ovi uređaji za unos pomažu korisniku u interakciji s digitalnim svijetom. Ulazni uređaj može biti jednostavan poput tipke ili složen kao dodirni zaslon; ona se razlikuje ovisno o zahtjevu projekta. U ovom uputstvu naučit ćemo kako povezati upravljačku palicu s našim PIC mikrokontrolerom, upravljačka tipka je sjajan način interakcije s digitalnim svijetom i gotovo bi je svi koristili za igranje video igara u svojoj adolescenciji.
Džojstik se može činiti sofisticiranim uređajem, ali zapravo je samo kombinacija dva potenciometra i gumba. Stoga je vrlo lako sučeliti se s bilo kojim MCU-om pod uvjetom da znamo koristiti ADC značajku tog MCU-a. Već smo naučili kako koristiti ADC s PIC-om, pa bi to bilo samo posao oko povezivanja džojstika. Ljudima koji su novi u izboru preporučuje se da nauče gornji ADC projekt, kao i LED blinking sequence Project (projekt treptajuće LED diode) kako bi olakšali razumijevanje projekta.
Potreban materijal
- PicKit 3 za programiranje
- Modul Joy Stick
- PIC16F877A IC
- 40 - Držač IC pin-a
- Perf ploča
- Kristalni OSC od 20 MHz
- Pribadače Bergstik
- Otpornik od 220 oma
- 5-LED u bilo kojoj boji
- 1 Komplet za lemljenje
- IC 7805
- 12V adapter
- Spajanje žica
- Breadboard
Razumijevanje modula džojstika:
Joystickovi su dostupni u različitim oblicima i veličinama. Tipični modul džojstika prikazan je na donjoj slici. Joystick nije ništa više od nekoliko potenciometara i gumba postavljenih na pametni mehanički raspored. Potenciometar se koristi za praćenje kretanja X i Y džojstika, a tipka služi za prepoznavanje pritiska na džojstik. Oba potenciometra daju analogni napon koji ovisi o položaju joysticka. A smjer kretanja možemo dobiti tumačenjem tih promjena napona pomoću nekog mikrokontrolera. Prije smo Joystick povezali s AVR-om, Joystick s Arduinom i Raspberry Pi.

Prije povezivanja bilo kojeg senzora ili modula s mikrokontrolerom, važno je znati kako on funkcionira. Ovdje naš džojstik ima 5 izlaznih pinova, od kojih su dva za napajanje, a tri za podatke. Modul treba napajati s + 5V. Priključci za podatke nazivaju se VRX, VRY i SW.
Izraz "VRX" označava promjenjivi napon na osi X, a izraz "VRY" označava promjenjivi napon u osi Y, a "SW" prekidač.
Dakle, kada pomaknemo džojstik ulijevo ili udesno, vrijednost napona na VRX-u će se mijenjati, a kada ga mijenjamo gore ili dolje, VRY će varirati. Slično tome, kad ga pomičemo dijagonalno, i VRX i VRY ćemo se razlikovati. Kada pritisnemo prekidač, SW iglica će biti spojena na masu. Sljedeća slika pomoći će vam da puno bolje razumijete izlazne vrijednosti

Kružni dijagram:
Sad kad znamo kako Joy stick djeluje, možemo doći do zaključka da će nam trebati dvije ADC pinove i jedan digitalni ulazni klin za čitanje sve tri podatkovne pinove Joystick modula. Kompletna shema sklopa prikazana je na donjoj slici

Kao što možete vidjeti na shemi sklopa, umjesto joysticka koristili smo dva potenciometra RV1 i RV3 kao analogne naponske ulaze i logički ulaz za sklopku. Možete slijediti naljepnice ispisane ljubičastom bojom kako bi se podudarale s imenima pinova i prema tome uspostavile veze.
Imajte na umu da su analogni pinovi povezani na kanale A0 i A1, a digitalni prekidač na RB0. Također ćemo imati 5 LED svjetala spojenih kao izlaz, tako da možemo svijetliti jedno na temelju smjera pomicanja joysticka. Tako su ovi izlazni pinovi povezani na PORT C od RC0 do RC4. Nakon što smo okrenuli naš dijagram sklopa, možemo nastaviti s programiranjem, zatim simulirati program na ovom krugu, zatim izgraditi sklop na ploči, a zatim program prenijeti na hardver. Da bih vam dao ideju, dolje je prikazan moj hardver nakon uspostavljanja gornjih veza

Programiranje povezivanja džojstika:
Program sučelje joystick sa PIC je jednostavna i ravno naprijed. Već znamo s kojim je pinovima Joystick povezan i koja je njihova funkcija, pa jednostavno moramo očitati analogni napon s pinova i u skladu s tim kontrolirati izlazne LED diode.
Kompletni program za to dan je na kraju ovog dokumenta, ali za objašnjavanje stvari razbijam kôd na male značajne isječke u nastavku.
Kao i uvijek program se pokreće postavljanjem konfiguracijskih bitova, nećemo puno raspravljati o postavljanju konfiguracijskih bitova, jer smo to već naučili u projektu LED Blinking, a to je isto i za ovaj projekt. Nakon postavljanja bitova za konfiguraciju, moramo definirati ADC funkcije za korištenje ADC modula u našem PIC-u. Te su funkcije također naučene u načinu korištenja ADC-a s vodičem za PIC. Nakon toga moramo deklarirati koji su pinovi ulazni, a koji izlazni pinovi. Ovdje je LED dioda spojena na PORTC, tako da su oni izlazni pinovi, a prekidač pin Joysticka digitalni je ulazni pin. Stoga koristimo sljedeće retke da bismo deklarirali isto:
// ***** I / O konfiguracija **** // TRISC = 0X00; // PORT C se koristi kao izlazni port PORTC = 0X00; // Neka sve pinove budu niske TRISB0 = 1; // RB0 se koristi kao ulaz // *** Kraj I / O konfiguracije ** ///
U ADC igle ne moraju biti definirani kao ulazne pinove jer oni kada koristite ADC funkciju će biti dodijeljen kao ulazni pin. Jednom kada su pinovi definirani, možemo pozvati funkciju ADC_initialize koju smo prethodno definirali. Ova će funkcija postaviti potrebne ADC registre i pripremiti ADC modul.
ADC_Initialize (); // Konfiguriranje ADC modula
Sada smo korak u našoj beskonačnog dok petlje. Unutar ove petlje moramo pratiti vrijednosti VRX, VRY i SW, a na temelju vrijednosti moramo kontrolirati izlaz LED-a. Postupak praćenja možemo započeti očitavanjem analognog napona VRX i VRY pomoću donjih redaka
int joy_X = (ADC_Read (0)); // Pročitajte X-os džojstika int joy_Y = (ADC_Read (1)); // Pročitajte Y os Joysticka
Ovaj će redak spremiti vrijednost VRX i VRY u varijablu joy_X odnosno joy_Y . Funkcija ADC_Read (0) znači da vrijednost ADC čitamo s kanala 0 koji je pin A0. Spojili smo VRX i VRY na pin A0 i A1 i tako čitamo iz 0 i 1.
Ako se sjećate iz našeg vodiča za ADC, znamo da smo pročitali analogni napon, PIC kao digitalni uređaj očitat će ga od 0 do 1023. Ova vrijednost ovisi o položaju modula upravljačke palice. Gornji dijagram naljepnica možete koristiti da biste znali koju vrijednost možete očekivati za svaki položaj navigacijske tipke.
Ovdje sam koristio graničnu vrijednost 200 kao donju granicu, a vrijednost 800 kao gornju granicu. Možete koristiti sve što želite. Dakle, upotrijebimo ove vrijednosti i počnimo u skladu s tim svijetliti. Da bismo to učinili, moramo usporediti vrijednost joy_X s unaprijed definiranim vrijednostima pomoću IF petlje i LED pinove postaviti visokim ili niskim, kako je prikazano dolje. Redci za komentare pomoći će vam da bolje razumijete
if (joy_X <200) // Radost pomaknuta prema gore {RC0 = 0; RC1 = 1;} // Svijetli gornja LED dioda inače ako (joy_X> 800) // Radost pomaknuta prema dolje {RC0 = 1; RC1 = 0;} // Svijetli donja LED dioda else // Ako nije pomaknuta {RC0 = 0; RC1 = 0;} // Isključite oba vodiča
Slično možemo učiniti i za vrijednost Y osi. Moramo samo zamijeniti varijablu joy_X s joy_Y i također kontrolirati sljedeća dva LED pina kao što je prikazano dolje. Imajte na umu da kada se joystick ne pomakne, isključujemo obje LED lampice.
if (joy_Y <200) // Radost pomaknuta ulijevo {RC2 = 0; RC3 = 1;} // Svijetli lijevo LED inače ako (joy_Y> 800) // Radost pomaknuta udesno {RC2 = 1; RC3 = 0;} // Svijetli desno LED else // Ako nije premješten {RC2 = 0; RC3 = 0;} // Isključite obje LED
Sada imamo još jednu završnu stvar, moramo provjeriti prekidač ako je pritisnut. Prekidač je spojen na RB0, tako da možemo ponovno koristiti if petlju i provjeriti je li uključen. Ako se pritisne, okrenut ćemo LED da pokažemo da je prekidač pritisnut.
if (RB0 == 1) // Ako se pritisne Joy RC4 = 1; // Svijetli srednja LED dioda inače RC4 = 0; // ISKLJUČENI srednji LED
Simulacijski prikaz:
Cjelokupni projekt može se simulirati pomoću softvera Proteus. Nakon što napišete program, sastavite kod i povežite hex-kod simulacije sa sklopom. Tada biste trebali primijetiti kako LED svjetla svijetle prema položaju potenciometra. Simulacija je prikazana u nastavku:

Hardver i rad:
Nakon provjere koda pomoću Simulacije, krug možemo izgraditi na ploči za kruh. Ako ste slijedili PIC tutorijale, primijetili biste da koristimo istu perf ploču na kojoj su zalemljeni krug PIC i 7805. Ako ste također zainteresirani za njegovu izradu kako biste ga koristili sa svim svojim PIC projektima, onda lemite sklop na perf ploču. Ili također možete sagraditi kompletan krug i na ploči. Jednom kad je hardver završen, slijedi nešto slično ovome.

Sada prenesite kod na PIC mikrokontroler pomoću PICkit3. Možete uputiti projekt LED Blink za smjernice. Trebali biste primijetiti žuto svjetlo visoko kad se program prenese. Sada upotrijebite navigacijsku tipku i mijenjajte tipku, za svaki smjer joysticka primijetit ćete kako se odgovarajuća LED dioda podiže. Kad se pritisne prekidač u sredini, ugasit će LED u sredini.
Ovo je samo primjer, na njemu možete izgraditi puno zanimljivih projekata. Kompletni rad projekta također se može naći na videozapisu datom na kraju ove stranice.
Nadam se da ste razumjeli projekt i uživali ste u njegovoj izradi, ako imate bilo kakvih problema pri tome, slobodno ga objavite u odjeljku za komentare ispod ili napišite na forumima da biste dobili pomoć.
