- Потребан материјал
- Разумевање модула џојстика:
- Кружни дијаграм:
- Програмирање за повезивање џојстика:
- Приказ симулације:
- Хардвер и рад:
Улазни уређаји играју виталну улогу у било ком електроничком пројекту. Ови уређаји за унос помажу кориснику у интеракцији са дигиталним светом. Улазни уређај може бити једноставан попут тастера или сложен као додирни екран; она варира у зависности од захтева пројекта. У овом упутству научићемо како повезати џојстик са нашим ПИЦ микроконтролером, џојстик је сјајан начин интеракције са дигиталним светом и готово сви би га користили за играње видео игара у адолесценцији.
Џојстик може изгледати као софистицирани уређај, али заправо је само комбинација два потенциометра и тастера. Отуда је такође врло лако повезати се са било којим МЦУ-ом под условом да знамо како да користимо АДЦ функцију тог МЦУ-а. Већ смо научили како да користимо АДЦ са ПИЦ-ом, па би то било само напорно решење за повезивање џојстика. Људима који су нови у избору препоручује се да науче горе наведени АДЦ пројекат, као и пројекат ЛЕД блинкинг секуенце, како би олакшали разумевање пројекта.
Потребан материјал
- ПицКит 3 за програмирање
- Модул Јои Стицк
- ПИЦ16Ф877А ИЦ
- 40 - Држач ИЦ пин-а
- Перф боард
- 20 МХз Цристал ОСЦ
- Бергстик игле
- 220охм отпорник
- 5-ЛЕД у било којој боји
- 1 Комплет за лемљење
- ИЦ 7805
- 12В адаптер
- Повезивање жица
- Бреадбоард
Разумевање модула џојстика:
Јоистицкс су доступни у различитим облицима и величинама. Типични модул џојстика приказан је на доњој слици. Џојстик није ништа више од неколико потенциометара и тастера постављених преко паметног механичког уређења. Потенциометар се користи за праћење кретања Кс и И џојстика, а дугме се користи за откривање притиска на џојстик. Оба потенциометра дају аналогни напон који зависи од положаја џојстика. А смер кретања можемо добити тумачењем ових промена напона помоћу неког микроконтролера. Претходно смо повезали џојстик са АВР-ом, џојстик са Ардуином и Распберри Пи.
Пре повезивања било ког сензора или модула са микроконтролером, важно је знати како он функционише. Овде наш џојстик има 5 излазних пинова, од којих су два за напајање, а три за податке. Модул треба напајати са + 5В. Прибадаче за податке се називају ВРКС, ВРИ и СВ.
Израз „ВРКС“ означава променљиви напон на Кс-оси, а израз „ВРИ“ означава променљиви напон у И-оси, а „СВ“ означава прекидач.
Дакле, када померимо џојстик улево или удесно, вредност напона на ВРКС-у ће се разликовати, а када променимо горе или доле, ВРИ ће варирати. Слично томе, када га померамо дијагонално, и ВРКС и ВРИ ћемо се разликовати. Када притиснемо прекидач, СВ пин ће бити повезан са масом. Доња слика ће вам помоћи да много боље разумете излазне вредности
Кружни дијаграм:
Сада када знамо како Јои стицк функционише, можемо доћи до закључка да ће нам требати два АДЦ пина и један дигитални улазни пин да бисмо прочитали сва три дата пина модула Јоистицк. Комплетна шема кола приказана је на доњој слици
Као што видите на дијаграму кола, уместо џојстика користили смо два потенциометра РВ1 и РВ3 као аналогне напонске улазе и логички улаз за прекидач. Можете пратити ознаке исписане љубичастом бојом како би се подударали са именима пинова и у складу с тим успоставили везе.
Имајте на уму да су аналогни пинови повезани на канале А0 и А1, а дигитални прекидач на РБ0. Такође ћемо имати 5 ЛЕД лампица повезаних као излаз, тако да можемо да жаримо у зависности од смера померања џојстика. Дакле, ови излазни пинови су повезани на ПОРТ Ц од РЦ0 до РЦ4. Након што окренемо наш дијаграм кола, можемо наставити са програмирањем, затим симулирати програм на овом колу, затим изградити коло на плочи, а затим отпремити програм на хардвер. Да бих вам дао идеју, мој хардвер након успостављања горњих веза приказан је испод
Програмирање за повезивање џојстика:
Програм за интерфејс џојстик са ПИЦ је једноставна и равно напред. Већ знамо на које је пинове џојстик повезан и која је њихова функција, тако да једноставно морамо очитати аналогни напон са пинова и у складу с тим контролисати излазне ЛЕД диоде.
Комплетан програм за то дат је на крају овог документа, али за објашњавање ствари разбијам код на мале значајне исечке у наставку.
Као и увек програм се започиње подешавањем конфигурационих битова, нећемо пуно расправљати о подешавању конфигурационих битова, јер смо то већ научили у пројекту ЛЕД Блинкинг, а то је исто и за овај пројекат. Једном када су постављени битови за конфигурацију, морамо да дефинишемо функције АДЦ за употребу АДЦ модула у нашем ПИЦ-у. Ове функције су такође научене у коришћењу АДЦ-а са упутством за ПИЦ. Након тога, морамо прогласити који су пинови улазни, а који излазни пинови. Овде је ЛЕД повезан на ПОРТЦ тако да су они излазни пинови, а преклопни пин џојстика је дигитални улазни пин. Дакле, користимо следеће редове да бисмо декларисали исто:
// ***** И / О конфигурација **** // ТРИСЦ = 0Кс00; // ПОРТ Ц се користи као излазни порт ПОРТЦ = 0Кс00; // Учини све пинове ниским ТРИСБ0 = 1; // РБ0 се користи као улаз // *** Крај И / О конфигурације ** ///
У АДЦ игле не мора бити дефинисан као улазни игле, јер они када користе функцију АДЦ ће бити додељена као улазни пин. Када се пинови дефинисани, можемо позвати АДЦ_инитиализе функцију коју смо раније дефинисан. Ова функција ће поставити потребне АДЦ регистре и припремити АДЦ модул.
АДЦ_Инитиализе (); // Конфигурисање АДЦ модула
Сада смо корак у наш Инфините вхиле петље. Унутар ове петље морамо да надгледамо вредности ВРКС, ВРИ и СВ, а на основу вредности морамо да контролишемо излаз лед-а. Процес надгледања можемо започети читањем аналогног напона ВРКС и ВРИ користећи доње редове
инт јои_Кс = (АДЦ_Реад (0)); // Прочитајте Кс-ос џојстика инт јои_И = (АДЦ_Реад (1)); // Прочитајте И-ос џојстика
Овај ред ће сачувати вредност ВРКС и ВРИ у променљивим јои_Кс односно јои_И . Функција АДЦ_Реад (0) значи да очитавамо АДЦ вредност са канала 0 који је пин А0. Повезали смо ВРКС и ВРИ на пин А0 и А1 и тако читамо од 0 и 1.
Ако се сећате нашег водича за АДЦ, знамо да смо читали аналогни напон, ПИЦ као дигитални уређај очитава га од 0 до 1023. Ова вредност зависи од положаја модула џојстика. Можете да користите горњи дијаграм налепница да бисте знали коју вредност можете очекивати за сваки положај џојстика.
Овде сам користио граничну вредност 200 као доњу границу, а вредност 800 као горњу границу. Можете користити све што желите. Дакле, употребимо ове вредности и почнимо да светлимо ЛЕД диоде у складу с тим. Да бисмо то урадили, морамо упоредити вредност јои_Кс са унапред дефинисаним вредностима помоћу ИФ петље и ЛЕД пинове учинити високим или ниским, као што је приказано испод. Редови коментара ће вам помоћи да боље разумете
иф (јои_Кс <200) // Радост померена нагоре {РЦ0 = 0; РЦ1 = 1;} // Светли горња ЛЕД лампица иначе ако (јои_Кс> 800) // Радост померена надоле {РЦ0 = 1; РЦ1 = 0;} // Сијање доње ЛЕД лампице елсе // Ако није премештено {РЦ0 = 0; РЦ1 = 0;} // Искључите оба лед диода
Слично можемо учинити и за вредност И осе. Морамо само заменити променљиву јои_Кс са јои_И и такође контролисати следећа два ЛЕД пина као што је приказано доле. Имајте на уму да када се џојстик не помери, искључујемо обе ЛЕД лампице.
иф (јои_И <200) // Радост померена улево {РЦ2 = 0; РЦ3 = 1;} // Свијетли лијево ЛЕД иначе ако (јои_И> 800) // Радост помакнута удесно {РЦ2 = 1; РЦ3 = 0;} // Светли десно ЛЕД елсе // Ако није премештен {РЦ2 = 0; РЦ3 = 0;} // Искључите обе ЛЕД
Сада имамо још једну последњу ствар, морамо да проверимо прекидач ако је притиснут. Прекидач је повезан на РБ0, тако да можемо поново да користимо петљу иф и проверимо да ли је укључена. Ако се притисне, окренут ћемо ЛЕД индикатор да је прекидач притиснут.
иф (РБ0 == 1) // Ако се притисне Јои РЦ4 = 1; // Средња ЛЕД светли у супротном РЦ4 = 0; // ИСКЉУЧЕНИ средњи ЛЕД
Приказ симулације:
Комплетни пројекат се може симулирати помоћу софтвера Протеус. Након што напишете програм, саставите код и повежите хексадецимални код симулације са кругом. Тада бисте требали приметити како ЛЕД лампице светлуцају у складу са положајем потенциометра. Симулација је приказана у наставку:
Хардвер и рад:
Након верификације кода помоћу симулације, можемо да изградимо коло на дасци за хлеб. Ако сте пратили ПИЦ туторијале, приметили бисте да користимо исту перф плочу на којој су залемљени ПИЦ и 7805 круг. Ако сте такође заинтересовани да га направите тако да га користите са свим својим ПИЦ пројектима, онда залемите коло на перф плочу. Или такође можете изградити комплетан круг на плочи за плочу. Једном када је хардвер завршен, биће нешто попут овог у наставку.
Сада отпремите код на ПИЦ микроконтролер помоћу ПИЦкит3. Можете упутити ЛЕД Блинк пројекат за смернице. Требало би да приметите да се жуто светло упали чим се програм отпреми. Сада користите џојстик и подесите дугме, у сваком смеру џојстика ћете приметити како се одговарајућа ЛЕД лампица подиже. Када се притисне прекидач у средини, угасит ће ЛЕД у средини.
Овај рад је само пример, поврх тога можете изградити пуно занимљивих пројеката. Комплетни рад пројекта такође се може наћи на видео снимку датом на крају ове странице.
Надам се да сте разумели пројекат и уживали сте у његовој изради, ако имате било каквих проблема при томе, слободно га објавите у одељку за коментаре испод или напишите на форумима да бисте добили помоћ.