- Kinakailangan na Materyal
- Pag-unawa sa Joystick Module:
- Diagram ng Circuit:
- Programming para sa Interfacing ng Joystick:
- Tingnan ang Simulation:
- Hardware at Paggawa:
Ang mga aparato ng pag-input ay may mahalagang papel sa anumang mga proyekto sa electronics. Ang input device na ito ay makakatulong sa gumagamit na makipag-ugnay sa digital na mundo. Ang isang input aparato ay maaaring maging kasing simple ng isang pindutan ng itulak o kasing kumplikado ng isang touch screen; nag-iiba ito batay sa kinakailangan ng proyekto. Sa tutorial na ito matututunan namin kung paano i-interface ang isang joystick sa aming PIC microcontroller, ang isang joystick ay isang cool na paraan upang makipag-ugnay sa digital na mundo at halos lahat ay maaaring gumamit ng isa para sa paglalaro ng mga video game sa kanilang edad ng pagbibinata.
Ang isang joystick ay maaaring maging isang sopistikadong aparato, ngunit ito ay talagang isang kumbinasyon lamang ng dalawang Potentiometers at isang pindutan ng push. Samakatuwid napakadali ding mag-interface sa anumang MCU na ibinigay alam namin kung paano gamitin ang tampok na ADC ng MCU na iyon. Natutunan na namin kung paano gamitin ang ADC sa PIC, kaya't ito ay magiging isang trabaho lamang para sa pag-interfaced ng Joystick. Para sa mga taong bago sa pagpili ay inirerekumenda na malaman ang nasa itaas na proyekto ng ADC pati na rin ang LED Blinking Sequence Project upang gawing mas madaling maunawaan ang proyekto.
Kinakailangan na Materyal
- PicKit 3 para sa programa
- Module ng Joy Stick
- PIC16F877A IC
- 40 - May hawak ng IC
- Perf board
- 20 MHz Crystal OSC
- Mga Bergstik na pin
- 220ohm Resistor
- 5-LEDs ng anumang kulay
- 1 Soldering kit
- IC 7805
- 12V Adapter
- Mga kumokonekta na mga wire
- Breadboard
Pag-unawa sa Joystick Module:
Magagamit ang mga Joystick sa iba't ibang mga hugis at sukat. Ang isang tipikal na module ng Joystick ay ipinapakita sa larawan sa ibaba. Ang isang Joystick ay hindi hihigit sa isang pares ng mga potentiometers at push button na naka-mount sa isang matalinong pag-aayos ng mekanikal. Ginagamit ang potentiometer upang subaybayan ang kilusang X at Y ng joystick at ginagamit ang pindutan upang maunawaan kung pinindot ang joystick. Ang parehong mga Potentiometers ay naglalabas ng isang analog boltahe na nakasalalay sa posisyon ng joystick. At makukuha natin ang direksyon ng paggalaw sa pamamagitan ng pagbibigay kahulugan sa mga pagbabagong boltahe na ito gamit ang ilang microcontroller. Dati ay nakipag-ugnayan kami sa Joystick sa AVR, Joystick kasama ang Arduino at Raspberry Pi.
Bago i-interfaces ang anumang sensor o module sa isang microcontroller mahalagang malaman kung paano ito gumagana. Narito ang aming joystick ay may 5 output pin na kung saan ang dalawa ay para sa lakas at ang tatlo ay para sa data. Ang module ay dapat na pinalakas ng + 5V. Ang mga pin ng data ay pinangalanan bilang VRX, VRY at SW.
Ang salitang "VRX" ay nangangahulugang Variable boltahe sa X-axis at ang term na "VRY" ay nangangahulugang Variable boltahe sa Y-axis at ang "SW" ay nangangahulugang switch.
Kaya't kapag inilipat namin ang joystick sa kaliwa o pakanan ang halaga ng boltahe sa VRX ay magkakaiba at kapag binago namin ito pataas o pababa, mag-iiba ang VRY. Katulad din kapag inilipat natin ito sa pahilis na pareho kaming magkakaiba-iba ng VRX at VRY. Kapag pinindot namin ang switch ang SW pin ay konektado sa lupa. Tutulungan ka ng figure sa ibaba na maunawaan ang mga halaga ng Output nang mas mahusay
Diagram ng Circuit:
Ngayon alam na natin kung paano gumagana ang Joy stick, makakaabot tayo sa isang konklusyon na kakailanganin natin ng dalawang mga ADC pin at isang digital input pin upang mabasa ang lahat ng tatlong mga data pin ng Joystick module. Ang kumpletong diagram ng circuit ay ipinapakita sa larawan sa ibaba
Tulad ng nakikita mo sa circuit diagram, sa halip na ang joystick ay gumamit kami ng dalawang potentiometer RV1 at RV3 bilang mga input ng analog voltage at isang input ng lohika para sa switch. Maaari mong sundin ang mga label na nakasulat sa kulay na lila upang itugma ang mga pangalan ng mga pin at gawin ang iyong mga koneksyon nang naaayon.
Tandaan na ang mga Analog pin ay konektado sa mga channel A0 at A1 at ang digital switch ay konektado sa RB0. Magkakaroon din kami ng 5 mga ilaw na LED na konektado bilang output, upang maaari kaming mamula ng isa batay sa direksyon na inilipat ang joystick. Kaya ang mga output pin na ito ay konektado sa PORT C mula RC0 hanggang RC4. Sa sandaling nai-pan ang aming circuit diagram maaari kaming magpatuloy sa programa, pagkatapos ay gayahin ang programa sa circuit na ito pagkatapos ay buuin ang circuit sa isang breadboard at pagkatapos ay i-upload ang programa sa hardware. Upang mabigyan ka ng isang ideya ang aking hardware pagkatapos gawin ang mga koneksyon sa itaas ay ipinapakita sa ibaba
Programming para sa Interfacing ng Joystick:
Ang programa upang i-interface ang joystick sa PIC ay simple at tuwid na pasulong. Alam na natin kung aling mga pin ang konektado sa Joystick at kung ano ang kanilang pag-andar, kaya't basahin lamang natin ang analog boltahe mula sa mga pin at kontrolin ang output LED nang naaayon.
Ang kumpletong programa upang magawa ito ay ibinibigay sa pagtatapos ng dokumentong ito, ngunit para sa pagpapaliwanag ng mga bagay ay sinisira ko ang code sa maliliit na makahulugang mga snippet sa ibaba.
Tulad ng lagi na nagsisimula ang programa sa pamamagitan ng pagtatakda ng mga bit ng pagsasaayos, hindi namin pag-uusapan ang tungkol sa mga setting ng mga setting na bit dahil natutunan na natin ito sa proyekto ng LED Blinking at pareho din ito para sa proyektong ito. Kapag naitakda ang mga bit ng pagsasaayos kailangan nating tukuyin ang mga pagpapaandar ng ADC para sa paggamit ng module ng ADC sa aming PIC. Ang pagpapaandar na ito ay natutunan din sa kung paano gamitin ang ADC na may tutorial na PIC. Pagkatapos nito, kailangan naming ideklara kung aling mga pin ang mga input at alin ang mga output pin. Dito nakakonekta ang LED sa PORTC kaya't ang mga ito ay output pin at ang Switch pin ng Joystick ay isang digital input pin. Kaya ginagamit namin ang mga sumusunod na linya upang ideklara ang pareho:
// ***** I / O Configuration **** // TRISC = 0X00; // PORT C ay ginagamit bilang mga output port PORTC = 0X00; // MAke all low pins TRISB0 = 1; // RB0 ay ginamit bilang input // *** Katapusan ng pagsasaayos ng I / O ** ///
Ang mga ADC pin ay hindi kailangang tukuyin bilang mga input pin sapagkat kapag ginagamit nila ang pagpapaandar ng ADC ay itatalaga ito bilang input pin. Kapag natukoy ang mga pin, maaari naming tawagan ang ADC_initialize na pagpapaandar na tinukoy namin nang mas maaga. Itatakda ng pagpapaandar na ito ang kinakailangang mga pagrehistro ng ADC at ihanda ang module ng ADC.
ADC_Initialize (); // I-configure ang module ng ADC
Ngayon, papasok kami sa aming walang hanggan habang loop. Sa loob ng loop na ito kailangan naming subaybayan ang mga halaga ng VRX, VRY at SW at batay sa mga halagang mayroon kami upang makontrol ang output ng led. Maaari nating simulan ang proseso ng pagsubaybay sa pamamagitan ng pagbabasa ng analog boltahe ng VRX at VRY sa pamamagitan ng paggamit ng mga linya sa ibaba
int joy_X = (ADC_Read (0)); // Basahin ang X-Axis ng joystick int joy_Y = (ADC_Read (1)); // Basahin ang Y-Axis ng Joystick
Sine - save ng linyang ito ang halaga ng VRX at VRY sa variable na Joy_X at joy_Y ayon sa pagkakabanggit. Ang pagpapaandar na ADC_Read (0) ay nangangahulugang binabasa natin ang halaga ng ADC mula sa channel 0 na kung saan ay pin A0. Nakakonekta namin ang VRX at VRY upang i-pin ang A0 at A1 at sa gayon nabasa namin mula sa 0 at 1.
Kung maaari mong alalahanin mula sa aming ADC tutorial alam namin na binasa namin ang Analog Voltage ang PIC na isang digital na aparato ay basahin ito mula 0 hanggang 1023. Ang halagang ito ay nakasalalay sa posisyon ng module ng joystick. Maaari mong gamitin ang label diagram sa itaas upang malaman kung anong halaga ang maaari mong asahan para sa bawat posisyon ng joystick.
Dito ko ginamit ang limit na halaga ng 200 bilang mas mababang limitasyon at isang halagang 800 bilang itaas na limitasyon. Maaari mong gamitin ang anumang nais mo. Kaya't gamitin natin ang mga halagang ito at simulan ang pagkinang ng LED s nang naaayon. Upang magawa ito kailangan naming ihambing ang halaga ng joy_X sa mga paunang natukoy na halaga gamit ang isang IF loop at gawin ang mga LED pin na mataas o mababa tulad ng ipinakita sa ibaba. Makakatulong sa iyo ang mga linya ng komento upang maunawaan ang mas mabuti
kung (joy_X <200) // Ang galaw ay lumipat ng pataas {RC0 = 0; RC1 = 1;} // Mag-glow ng itaas na LED kung (Joy_X> 800) // Ang galaw ay bumaba sa {RC0 = 1; RC1 = 0;} // Glow Lower LED else // Kung hindi inilipat {RC0 = 0; RC1 = 0;} // Patayin ang parehong led
Maaari rin nating gawin ang pareho para sa halaga ng Y-axis din. Kami lamang magkaroon upang palitan ang mga variable joy_X na may joy_Y at ring kontrolin ang susunod na dalawang LED pin tulad ng ipinapakita sa ibaba. Tandaan na kapag hindi inilipat ang joystick ay pinapatay namin ang parehong mga ilaw na LED.
kung (joy_Y <200) // Si Joy ay lumipat sa Kaliwa {RC2 = 0; RC3 = 1;} // Glow left LED else kung (joy_Y> 800) // Joy galaw Kanan {RC2 = 1; RC3 = 0;} // Glow Right LED else // Kung hindi inilipat {RC2 = 0; RC3 = 0;} // Patayin ang parehong LED
Ngayon mayroon kaming isa pang pangwakas na bagay na dapat gawin, kailangan nating suriin ang switch kung pinindot. Ang switch pin ay konektado sa RB0 upang maaari naming magamit muli kung loop at suriin kung ito ay nakabukas. Kung pinindot ito ay liliko kami ng LED upang ipahiwatig na ang switch ay naipit.
kung (RB0 == 1) // Kung ang Joy ay pinindot RC4 = 1; // Glow middle LED else RC4 = 0; // OFF gitnang LED
Tingnan ang Simulation:
Ang kumpletong proyekto ay maaaring gayahin gamit ang Proteus software. Kapag nasulat mo na ang programa ay ipunin ang code at i-link ang hex code ng simulation sa circuit. Pagkatapos ay dapat mong mapansin ang mga ilaw ng LED na kumikinang ayon sa posisyon ng mga potensyal. Ang simulation ay ipinapakita sa ibaba:
Hardware at Paggawa:
Matapos mapatunayan ang code gamit ang Simulation, maaari naming maitayo ang circuit sa isang board ng tinapay. Kung sinusundan mo ang mga tutorial na PIC mapapansin mo na gumagamit kami ng parehong perf board na may solder na PIC at 7805 circuit dito. Kung interesado ka ring gumawa ng isa upang magamit mo ito sa lahat ng iyong mga proyekto sa PIC pagkatapos ay maghinang ng circuit sa isang perf board. O maaari mo ring buuin ang kumpletong circuit sa isang breadboard din. Kapag tapos na ang hardware ay magiging katulad nito sa ibaba.
Ngayon i-upload ang code sa PIC microcontroller gamit ang PICkit3. Maaari kang mag-refer sa proyekto ng LED Blink para sa patnubay. Dapat mong mapansin ang dilaw na ilaw na magiging mataas kaagad kapag na-upload ang programa. Ngayon gamitin ang joystick at iba-iba ang knob, para sa bawat direksyon ng joystick mapapansin mo ang kani-kanilang LED na magiging mataas. Kapag ang switch sa gitna ay pinindot, papatayin nito ang LED sa gitna.
Ang pagtatrabaho na ito ay isang halimbawa lamang, maaari kang bumuo ng maraming mga kagiliw-giliw na proyekto sa tuktok nito. Ang kumpletong pagtatrabaho ng proyekto ay maaari ding matagpuan sa video na ibinigay sa pagtatapos ng pahinang ito.
Inaasahan kong naintindihan mo ang proyekto at nasiyahan sa pagbuo nito, kung mayroon kang anumang problema sa paggawa nito huwag mag-atubiling i-post ito sa seksyon ng komento sa ibaba o isulat ito sa mga forum para sa pagkuha ng tulong.