- Nepieciešams materiāls
- Izpratne par kursorsviras moduli:
- Ķēdes shēma:
- Programmēšana kursorsviras saskarnei:
- Simulācijas skats:
- Aparatūra un darbs:
Ievades ierīcēm ir būtiska loma visos elektronikas projektos. Šīs ievades ierīces palīdz lietotājam mijiedarboties ar digitālo pasauli. Ievades ierīce var būt tikpat vienkārša kā spiedpoga vai tikpat sarežģīta kā skārienekrāns; tas mainās atkarībā no projekta prasībām. Šajā apmācībā mēs iemācīsimies sasaistīt kursorsviru ar mūsu PIC mikrokontrolleru, kursorsvira ir lielisks veids, kā mijiedarboties ar digitālo pasauli, un gandrīz visi to būtu izmantojuši videospēļu spēlēšanai pusaudža vecumā.
Šķiet, ka kursorsvira ir sarežģīta ierīce, taču patiesībā tā ir tikai divu potenciometru un spiedpogas kombinācija. Tādējādi tas ir arī ļoti viegli saskarni ar jebkuru MCU, ja mēs zinām, kā izmantot šī MCU ADC funkciju. Mēs jau esam iemācījušies izmantot ADC ar PIC, tāpēc tas būtu tikai darbs, lai sasaistītu kursorsviru. Cilvēkiem, kuriem ir maza izvēle, ieteicams apgūt iepriekš minēto ADC projektu, kā arī LED mirgojošās sērijas projektu, lai būtu vieglāk saprast projektu.
Nepieciešams materiāls
- PicKit 3 programmēšanai
- Joy Stick modulis
- PIC16F877A IC
- 40 - pin IC turētājs
- Perfekts dēlis
- 20 MHz kristāla OSC
- Bergstik piespraudes
- 220ohm rezistors
- Jebkuras krāsas 5 gaismas diodes
- 1 lodēšanas komplekts
- IC 7805
- 12V adapteris
- Savienojošie vadi
- Maizes dēlis
Izpratne par kursorsviras moduli:
Kursorsviras ir pieejamas dažādās formās un izmēros. Tipisks kursorsviras modulis parādīts zemāk redzamajā attēlā. Kursorsvira ir nekas cits kā pāris potenciometri un spiedpoga, kas piestiprināta pār gudru mehānisku izvietojumu. Potenciometru izmanto, lai sekotu kursorsviras X un Y kustībai, un pogu izmanto, lai noteiktu, vai kursorsviru nospiež. Abi potenciometri izvada analogo spriegumu, kas ir atkarīgs no kursorsviras stāvokļa. Un mēs varam iegūt kustības virzienu, interpretējot šīs sprieguma izmaiņas, izmantojot kādu mikrokontrolleru. Iepriekš mēs sasaistījāmies kursorsviru ar AVR, kursorsviru ar Arduino un Raspberry Pi.
Pirms jebkura sensora vai moduļa saskarnes ar mikrokontrolleru ir svarīgi zināt, kā tas darbojas. Šeit mūsu kursorsvirai ir 5 izejas tapas, no kurām divas ir domātas jaudai, bet trīs - datiem. Modulim jābūt barotam ar + 5V. Datu tapas tiek nosauktas kā VRX, VRY un SW.
Termins “VRX” apzīmē mainīgo spriegumu uz X ass un termins “VRY” nozīmē mainīgo spriegumu Y asī un “SW” nozīmē slēdzi.
Tātad, pārvietojot kursorsviru pa kreisi vai pa labi, VRX sprieguma vērtība mainīsies, un, mainot to uz augšu vai uz leju, VRY mainīsies. Līdzīgi, pārvietojot to pa diagonāli, gan VRX, gan VRY mainīsies. Nospiežot slēdzi, SW tapa tiks savienota ar zemi. Zemāk redzamais attēls palīdzēs jums daudz labāk izprast izejas vērtības
Ķēdes shēma:
Tagad, kad mēs zinām, kā darbojas Joy stick, mēs varam nonākt pie secinājuma, ka mums būs nepieciešamas divas ADC tapas un viena digitālā ievades tapa, lai nolasītu visas trīs Joystick moduļa datu tapas. Pilna shēma ir parādīta zemāk esošajā attēlā
Kā redzat ķēdes shēmā, kursorsviras vietā kā analogās sprieguma ieejas un loģisko ieeju slēdzim esam izmantojuši divus potenciometrus RV1 un RV3. Jūs varētu sekot etiķetēm, kas rakstītas violetā krāsā, lai tie atbilstu tapu nosaukumiem, un attiecīgi izveidot savienojumus.
Ņemiet vērā, ka analogās tapas ir savienotas ar kanāliem A0 un A1 un digitālais slēdzis ir savienots ar RB0. Mums būs arī 5 LED gaismas, kas savienotas kā izeja, lai mēs spīdētu vienu, pamatojoties uz virzienu, kurā kursorsviru pārvieto. Tātad šīs izejas tapas ir savienotas ar PORT C no RC0 līdz RC4. Kad esam panierējuši savu shēmu, mēs varam turpināt programmēšanu, pēc tam simulēt programmu šajā ķēdē, pēc tam veidot ķēdi uz paneļa un pēc tam augšupielādēt programmu aparatūrā. Lai dotu jums priekšstatu, mana aparatūra pēc iepriekš minēto savienojumu izveidošanas ir parādīta zemāk
Programmēšana kursorsviras saskarnei:
Programma saskarnes kursorsvira ar PIC ir vienkārša un taisni uz priekšu. Mēs jau zinām, ar kurām vadības svirām ir pieslēgtas tapas un kāda ir to funkcija, tāpēc mums vienkārši jāizlasa tapu analogais spriegums un attiecīgi jākontrolē izejas gaismas diodes.
Pilna programma, kā to izdarīt, ir dota šī dokumenta beigās, bet, lai izskaidrotu lietas, es salauzu kodu maziem nozīmīgiem fragmentiem zemāk.
Kā vienmēr programma tiek startēta, iestatot konfigurācijas bitus, mēs daudz nedomāsim apspriest konfigurācijas bitu iestatīšanu, jo mēs to jau esam iemācījušies LED mirgojošajā projektā, un tas pats attiecas arī uz šo projektu. Kad konfigurācijas biti ir iestatīti, mums ir jādefinē ADC funkcijas ADC moduļa izmantošanai mūsu PIC. Šīs funkcijas tika iemācītas arī kā izmantot ADC ar PIC apmācību. Pēc tam mums jāpaziņo, kuras tapas ir ieejas un kuras ir izejas tapas. Šeit LED ir savienots ar PORTC, tāpēc tie ir izejas tapas, un kursorsviras slēdzis ir digitāla ievades tapa. Tāpēc mēs izmantojam šādas rindas, lai deklarētu to pašu:
// ***** I / O konfigurācija **** // TRISC = 0X00; // PORT C tiek izmantots kā izejas porti PORTC = 0X00; // MAke all pins low TRISB0 = 1; RB0 tiek izmantots kā ieeja // *** I / O konfigurācijas beigas ** ///
Par ADC tapas nav iespējams definēt kā ieejas tapas, jo viņi, kad izmanto ADC funkciju tas tiks piešķirts kā ieejas pin. Kad tapas ir definētas, mēs varam izsaukt ADC_initialize funkciju, kuru mēs definējām iepriekš. Šī funkcija iestatīs nepieciešamos ADC reģistrus un sagatavos ADC moduli.
ADC_Initialize (); // Konfigurējiet ADC moduli
Tagad mēs ieejam savā bezgalīgajā, kamēr ciklā. Šīs cilpas iekšpusē mums jāuzrauga VRX, VRY un SW vērtības, un, pamatojoties uz vērtībām, mums jākontrolē LED izeja. Monitoringa procesu mēs varam sākt, nolasot VRX un VRY analogo spriegumu, izmantojot zemāk redzamās līnijas
int prieks_X = (ADC_Read (0)); // Izlasiet kursorsviras X asi int joy_Y = (ADC_Read (1)); // Izlasiet kursorsviras Y asi
Šī līnija ietaupīs VRX un VRY vērtību attiecīgi mainīgajos joy_X un joy_Y . Funkcija ADC_Read (0) nozīmē, ka mēs lasām ADC vērtību no 0 kanāla, kas ir tapa A0. Mēs esam savienojuši VRX un VRY ar tapām A0 un A1, un tāpēc mēs lasām no 0 un 1.
Ja jūs varat atcerēties no mūsu ADC apmācības, mēs zinām, ka mēs lasām analogo spriegumu, PIC, kas ir digitāla ierīce, to nolasīs no 0 līdz 1023. Šī vērtība ir atkarīga no kursorsviras moduļa stāvokļa. Lai uzzinātu, kādu vērtību varat sagaidīt katrā kursorsviras pozīcijā, varat izmantot iepriekš redzamo etiķešu diagrammu.
Šeit es izmantoju robežvērtību 200 kā apakšējo robežu un 800 vērtību kā augšējo robežu. Jūs varat izmantot visu, ko vēlaties. Tāpēc izmantosim šīs vērtības un sāksim attiecīgi apgaismot gaismas diodes. Lai to izdarītu, mums jāsalīdzina joy_X vērtība ar iepriekš noteiktajām vērtībām, izmantojot IF cilpu, un LED tapas ir jāpadara augstas vai zemas, kā parādīts zemāk. Komentāru rindiņas palīdzēs labāk saprast
ja (prieks_X <200) // Prieks virzījās uz augšu {RC0 = 0; RC1 = 1;} // augšējā gaismas diode kvēl, ja (prieks_X> 800) // prieks pārvietojās uz leju {RC0 = 1; RC1 = 0;} // Apakšējā spīdošā gaismas diode cits // Ja nav pārvietots {RC0 = 0; RC1 = 0;} // Izslēdziet abus LED
Līdzīgi mēs varam darīt to pašu arī Y ass vērtībai. Mums vienkārši jāmaina mainīgais joy_X ar joy_Y un jākontrolē arī nākamie divi LED kontakti, kā parādīts zemāk. Ņemiet vērā, ka tad, kad kursorsviru nepārvieto, mēs izslēdzam abus LED apgaismojumus.
ja (prieks_Y <200) // prieks pārvietojās pa kreisi {RC2 = 0; RC3 = 1;} // kreisā spīdošā gaismas diode citādi, ja (prieks_Y> 800) // prieks pārvietojās pa labi {RC2 = 1; RC3 = 0;} // Labi mirdzoša gaismas diode cits // Ja nav pārvietots {RC2 = 0; RC3 = 0;} // Izslēdziet abas gaismas diodes
Tagad mums ir vēl viena pēdējā lieta, kas jādara, mums jāpārbauda slēdzis, ja tas ir nospiests. Slēdža tapa ir pievienota RB0, lai mēs atkal varētu izmantot if loop un pārbaudīt, vai tā ir ieslēgta. Ja tas tiek nospiests, mēs pagriezīsim LED, lai norādītu, ka slēdzis ir nospiests.
ja (RB0 == 1) // Ja prieks ir nospiests, RC4 = 1; // Glow middle LED else RC4 = 0; // IZSLĒGTS vidējais LED
Simulācijas skats:
Visu projektu var simulēt, izmantojot programmatūru Proteus. Kad esat uzrakstījis programmu, apkopojiet kodu un saistiet simulācijas sešstūra kodu ar ķēdi. Tad jums vajadzētu pamanīt, ka gaismas diodes spīd atbilstoši potenciometru stāvoklim. Simulācija ir parādīta zemāk:
Aparatūra un darbs:
Pēc koda pārbaudes, izmantojot Simulāciju, mēs varam izveidot ķēdi uz maizes dēļa. Ja jūs sekojat PIC apmācībām, jūs pamanījāt, ka mēs izmantojam to pašu perf plāksni, kurai ir pielodēta PIC un 7805 shēma. Ja jūs interesē arī izveidot tādu, lai jūs to izmantotu visiem saviem PIC projektiem, tad pielodējiet ķēdi uz pilnās tāfeles. Vai arī jūs varat arī izveidot visu ķēdi uz maizes dēļa. Kad aparatūra ir pabeigta, tas būs kaut kas līdzīgs šim.
Tagad augšupielādējiet kodu PIC mikrokontrollerī, izmantojot PICkit3. Jūs varat atsaukties uz LED Blink projektu. Jums vajadzētu pamanīt, ka dzeltenā gaisma aiziet augstu, tiklīdz programma ir augšupielādēta. Tagad izmantojiet kursorsviru un mainiet pogu. Katram kursorsviras virzienam pamanīsit, ka attiecīgā gaismas diode virzās uz augšu. Nospiežot centrā esošo slēdzi, tas izslēgs gaismas diode vidū.
Šis darbs ir tikai piemērs, uz tā varat izveidot daudz interesantu projektu. Pilnīga projekta darbība ir atrodama arī video, kas sniegts šīs lapas beigās.
Ceru, ka sapratāt projektu un izbaudījāt tā izveidi, ja jums ir kādas problēmas, droši ievietojiet to zemāk esošajā komentāru sadaļā vai rakstiet forumos, lai saņemtu palīdzību.