- Tarvittava materiaali
- Joystick-moduulin ymmärtäminen:
- Piirikaavio:
- Ohjaussauvan liittämisen ohjelmointi:
- Simulaationäkymä:
- Laitteisto ja työskentely:
Syöttölaitteilla on tärkeä rooli kaikissa elektroniikkaprojekteissa. Nämä syöttölaitteet auttavat käyttäjää olemaan vuorovaikutuksessa digitaalisen maailman kanssa. Syöttölaite voi olla yhtä yksinkertainen kuin painike tai monimutkainen kuin kosketusnäyttö; se vaihtelee projektin vaatimusten mukaan. Tässä opetusohjelmassa aiomme oppia käyttämään ohjaussauvaa PIC-mikrokontrollerimme kanssa. Ohjaussauva on hieno tapa olla vuorovaikutuksessa digitaalisen maailman kanssa, ja melkein kaikki olisivat käyttäneet sitä videopelien pelaamiseen murrosiässä.
Ohjaussauva saattaa tuntua olevan hienostunut laite, mutta se on oikeastaan vain kahden potentiometrin ja painikkeen yhdistelmä. Siksi se on myös erittäin helppo liittää minkä tahansa MCU: n kanssa edellyttäen, että tiedämme kuinka käyttää MCU: n ADC-ominaisuutta. Olemme jo oppineet käyttämään ADC: tä PIC: n kanssa, joten se olisi vain työtä ohjaussauvan liittämiseksi. Ihmisille, jotka ovat uusia valitsemassa, on suositeltavaa oppia yllä oleva ADC-projekti sekä LED-merkkivalo vilkkuva sekvenssiprojekti, jotta projektin ymmärtäminen olisi helpompaa.
Tarvittava materiaali
- PicKit 3 ohjelmointia varten
- Joy Stick -moduuli
- PIC16F877A IC
- 40 - Tappi IC-pidike
- Täydellinen lauta
- 20 MHz: n kristalli-OSC
- Bergstikin nastat
- 220ohmin vastus
- 5 LED-valoa, mikä tahansa väri
- 1 juotossarja
- IC 7805
- 12 V: n sovitin
- Johtojen liittäminen
- Leipälauta
Joystick-moduulin ymmärtäminen:
Ohjaussauvoja on saatavana eri muodoissa ja kooissa. Tyypillinen ohjaussauva-moduuli on esitetty alla olevassa kuvassa. Ohjaussauva on vain muutama potentiometri ja painike, jotka on asennettu älykkään mekaanisen järjestelyn päälle. Potentiometriä käytetään seuraamaan joystickin X- ja Y-liikettä. Painikkeella tunnistetaan, painetaanko ohjainta. Molemmat potentiometrit tuottavat analogisen jännitteen, joka riippuu ohjaussauvan asennosta. Ja voimme saada liikkeen suunnan tulkitsemalla nämä jännitteen muutokset käyttämällä jotakin mikro-ohjainta. Aikaisemmin olemme liittäneet Joystickin AVR: n, Joystickin Arduinon ja Raspberry Pi: n kanssa.
Ennen anturin tai moduulin liittämistä mikro-ohjaimeen on tärkeää tietää, miten se toimii. Tässä ohjaussauvassamme on 5 lähtöpistoketta, joista kaksi on virtaa ja kolme dataa. Moduulin tulisi olla kytkettynä + 5 V: n jännitteeseen. Datanastat on nimetty VRX, VRY ja SW.
Termi "VRX" tarkoittaa vaihteleva jännite X-akselilla ja termi "VRY" tarkoittaa vaihteleva jännite Y-akselilla ja "SW" tarkoittaa kytkintä.
Joten kun liikutamme ohjaussauvaa vasemmalle tai oikealle, VRX: n jännitearvo vaihtelee ja kun vaihdamme sitä ylös tai alas, VRY vaihtelee. Samoin kun siirrämme sitä vinosti, niin VRX kuin VRY vaihtelevat. Kun painamme kytkintä, SW-nasta kytketään maahan. Alla oleva kuva auttaa sinua ymmärtämään lähtöarvot paljon paremmin
Piirikaavio:
Nyt kun tiedämme kuinka Joy-tikku toimii, voimme tehdä johtopäätöksen, että tarvitsemme kaksi ADC-nastaa ja yhden digitaalisen tulonastan lukemaan Joystick-moduulin kaikki kolme dataa. Koko kytkentäkaavio on esitetty alla olevassa kuvassa
Kuten piirikaaviosta näet, olemme joystickin sijaan käyttäneet kahta potentiometriä RV1 ja RV3 analogisina jännitetuloina ja kytkimen logiikkatulona. Voit seurata violetilla värillä kirjoitettuja tarroja vastaamaan nastojen nimiä ja luoda yhteytesi vastaavasti.
Huomaa, että analogiset nastat on kytketty kanaviin A0 ja A1 ja digitaalikytkin on kytketty RB0: een. Meillä on myös 5 LED-valoa, jotka on kytketty lähtöön, jotta voimme hehkua yhden ohjaussauvan liikkeen suunnan perusteella. Joten nämä lähtönastat on kytketty PORT C: hen RC0: sta RC4: een. Kun olemme panoroineet piirikaavion, voimme jatkaa ohjelmointia, simuloida tämän piirin ohjelmaa, rakentaa sitten piirin leipätaululle ja ladata sitten ohjelman laitteistoon. Antaakseni sinulle käsityksen laitteistostani yllä olevien yhteyksien muodostamisen jälkeen, näkyy alla
Ohjaussauvan liittämisen ohjelmointi:
Ohjelman käyttöliittymä joystick PIC on yksinkertainen ja suoraviivainen. Tiedämme jo, mihin nastoihin joystick on kytketty ja mikä on niiden toiminta, joten meidän on yksinkertaisesti luettava analoginen jännite nastoista ja ohjattava lähtö-LEDejä vastaavasti.
Täydellinen ohjelma tätä varten on annettu tämän asiakirjan lopussa, mutta selittämään asioita rikkomalla koodin pieniin mielekkäisiin katkelmiin alla.
Kuten aina, ohjelma käynnistetään asettamalla kokoonpanobittejä, emme aio keskustella paljon kokoonpanobittien asettamisesta, koska olemme jo oppineet sen LED-vilkkuvassa projektissa ja se on sama myös tälle projektille. Kun kokoonpanobitit on asetettu, meidän on määritettävä ADC-toiminnot ADC-moduulin käyttämiseksi PIC: ssä. Nämä toiminnot opittiin myös ADC: n käyttämisessä PIC-opetusohjelman kanssa. Sen jälkeen meidän on ilmoitettava, mitkä nastat ovat tuloja ja mitkä nastat. Tässä LED on kytketty PORTC: iin, joten ne ovat lähtönastoja ja ohjaussauvan kytkintappi on digitaalinen tulotappi. Joten käytämme seuraavia rivejä ilmoittaaksemme saman:
// ***** I / O-määritykset **** // TRISC = 0X00; // PORT C: tä käytetään lähtöportteina PORTC = 0X00; // MAke kaikki nastat matala TRISB0 = 1; // RB0: ta käytetään tulona // *** I / O-kokoonpanon loppu ** ///
ADC nastat ei tarvitse määritellä panos nastat, koska ne käytettäessä ADC toiminto se määrittyy syöttää PIN. Kun nastat on määritelty, voimme kutsua ADC_initialize- funktion, jonka määritimme aiemmin. Tämä toiminto asettaa tarvittavat ADC-rekisterit ja valmistelee ADC-moduulin.
ADC_Initialize (); // Määritä ADC-moduuli
Nyt astua ääretön samalla silmukka. Tämän silmukan sisällä meidän on seurattava VRX: n, VRY: n ja SW: n arvoja ja niiden perusteella meidän on ohjattava ledin lähtöä. Voimme aloittaa tarkkailuprosessin lukemalla VRX: n ja VRY: n analogisen jännitteen käyttämällä alla olevia viivoja
int ilo_X = (ADC_Lue (0)); // Lue joystickin X-akseli int joy_Y = (ADC_Read (1)); // Lue ohjaussauvan Y-akseli
Tämä rivi tallentaa VRX: n ja VRY: n arvon muuttujiin joy_X ja joy_Y . Funktio ADC_Read (0) tarkoittaa, että luemme ADC-arvon kanavalta 0, joka on tappi A0. Olemme liittäneet VRX: n ja VRY: n nastoihin A0 ja A1, joten luemme 0: sta 1: een.
Jos voit muistaa ADC-opetusohjelmastamme, tiedämme, että luemme analogisen jännitteen, PIC on digitaalinen laite lukee sen välillä 0-1023. Tämä arvo riippuu ohjaussauvan moduulin sijainnista. Voit käyttää yllä olevaa tarrakaaviota saadaksesi tietää, minkä arvon voit odottaa jokaiselle ohjaussauvan kohdalle.
Tässä olen käyttänyt raja-arvoa 200 alarajana ja arvoa 800 ylärajana. Voit käyttää mitä haluat. Joten käytämme näitä arvoja ja aloitetaan LEDien hehku vastaavasti. Tätä varten meidän on verrattava joy_X: n arvoa ennalta määriteltyihin arvoihin IF-silmukan avulla ja tehtävä LED-nastat korkeiksi tai mataliksi alla olevan kuvan mukaisesti. Kommenttirivit auttavat sinua ymmärtämään paremmin
if (ilo_X <200) // Ilo nousi ylös {RC0 = 0; RC1 = 1;} // Ylempi LED hehkuu muu, jos (ilo_X> 800) // Ilo siirtyi alas {RC0 = 1; RC1 = 0;} // Alempi hehkuva LED muu // Ellei sitä liikuteta {RC0 = 0; RC1 = 0;} // Sammuta molemmat ledit
Voimme samalla tavalla tehdä saman myös Y-akselin arvolle. Meidän on vain korvattava muuttuja joy_X joy_Y : llä ja myös ohjattava kahta seuraavaa LED-nastaa alla olevan kuvan mukaisesti. Huomaa, että kun ohjainta ei liikuteta, sammutamme molemmat LED-valot.
jos (ilo_Y <200) // Ilo siirtyi vasemmalle {RC2 = 0; RC3 = 1;} // Vasen hehkuva LED muu, jos (joy_Y> 800) // Ilo liikkui oikealle {RC2 = 1; RC3 = 0;} // Hehkuva oikea LED muu // Ellei sitä siirretä {RC2 = 0; RC3 = 0;} // Sammuta molemmat merkkivalot
Nyt meillä on vielä yksi viimeinen tehtävä, meidän on tarkistettava kytkin, jos sitä painetaan. Kytkintappi on kytketty RB0: een, jotta voimme jälleen käyttää if-silmukkaa ja tarkistaa, onko se päällä. Jos sitä painetaan, käännämme LEDiä osoittamaan, että kytkintä on painettu.
if (RB0 == 1) // Jos Iloa painetaan, RC4 = 1; // Hehkuva keski-LED muu RC4 = 0; // POIS keskimmäinen LED
Simulaationäkymä:
Koko projekti voidaan simuloida Proteus-ohjelmistolla. Kun olet kirjoittanut ohjelman, koota koodi ja linkitä simulaation hex-koodi piiriin. Sitten sinun tulisi huomata, että LED-valot palavat potentiometrien sijainnin mukaan. Simulaatio on esitetty alla:
Laitteisto ja työskentely:
Kun koodi on vahvistettu simulaatiolla, voimme rakentaa piirin leipätaululle. Jos olet seurannut PIC-oppaita, olisit huomannut, että käytämme samaa perf-korttia, johon PIC- ja 7805-piirit on juotettu. Jos olet kiinnostunut myös tekemään sellaisen niin, että käytät sitä kaikkien PIC-projektien kanssa, juota piiri täydelliselle levylle. Tai voit myös rakentaa koko piirin myös leipälaudalle. Kun laitteisto on valmis, se olisi jotain tällaista alla.
Lataa koodi nyt PIC-mikrokontrolleriin PICkit3: n avulla. Voit viitata LED Blink -projektiin opastusta varten. Huomaa, että keltainen valo menee korkealle heti, kun ohjelma on ladattu. Käytä nyt ohjainta ja vaihda nuppia. Joystickin jokaisen suunnan kohdalla huomaat, että vastaava LED menee korkealle. Kun keskellä olevaa kytkintä painetaan, se sammuttaa keskellä olevan LEDin.
Tämä työ on vain esimerkki, sen päälle voi rakentaa paljon mielenkiintoisia projekteja. Projektin täydellinen toiminta löytyy myös tämän sivun lopussa olevasta videosta.
Toivottavasti ymmärrät projektin ja nautit sen rakentamisesta, jos sinulla on ongelmia tehdä niin, voit lähettää sen alla olevaan kommenttiosioon tai kirjoittaa foorumeille, jotta saat apua.