Përmbajtje:

Kontrolluesi i lojërave Arduino me dritat që i përgjigjen lojës së unitetit tuaj :: 24 hapa
Kontrolluesi i lojërave Arduino me dritat që i përgjigjen lojës së unitetit tuaj :: 24 hapa

Video: Kontrolluesi i lojërave Arduino me dritat që i përgjigjen lojës së unitetit tuaj :: 24 hapa

Video: Kontrolluesi i lojërave Arduino me dritat që i përgjigjen lojës së unitetit tuaj :: 24 hapa
Video: CS50 Live, Episode 003 2024, Nëntor
Anonim
Kontrolluesi i lojërave Arduino me dritat që i përgjigjen lojës së unitetit tuaj
Kontrolluesi i lojërave Arduino me dritat që i përgjigjen lojës së unitetit tuaj

Fillimisht e kam shkruar këtë me fjalë. Kjo është hera e parë që përdor instruksione, kështu që sa herë që them: shkruaj kodin, kështu që dije që po i referohem imazhit në krye të atij hapi.

Në këtë projekt unë përdor 2 arduino për të ekzekutuar 2 pjesë të veçanta të kodit pasi kam pasur disa probleme që ta punoj me vetëm një

Këta janë Uno dhe Leonardo

në total kjo është ajo që ju nevojitet për të prerë këtë projekt.

· 7 butona shtypi

· 23 tela kërcyes

· 1 kabllo arduino Leonardo + usb

· 4 rezistorë · 4 led

· 1 kabllo arduino uno + usb

· 2 pjata buke

Hapi 1: Lidhni butonat e kontrollit në Arduino

Lidhja e butonave të kontrollit në Arduino
Lidhja e butonave të kontrollit në Arduino

Çfarë ju nevojitet për të lidhur këtë pjesë:

· 7 butona shtypi

· 14 tela kërcyes

· 1 kabllo arduino Leonardo + usb

· Dërrasë buke

Butonat janë mjaft të thjeshtë për t'u lidhur, por shpejt mund të bëhen një rrëmujë për t'u shfaqur në formën e imazhit.

· Së pari nga ju vendosni butonat e shtytjes në pozicionet që kam shënuar në imazhin e mësipërm.

· Së dyti, ju doni të lidhni një kërcyes nga vendi i tokës në arduino Leonardo në rreshtin minus të pjatës.

· Tani lidhni kërcyesit nga kudo në rreshtin minus në rreshtin që është në përputhje me kunjin e djathtë të butonit të shtypjes. kjo do ta ushqejë fuqinë me të.

· Tjetra ju doni të lidhni një tel kërcyes nga një rresht që është në përputhje me kunjin e majtë të butonit tuaj shtytës në lojëra elektronike hyrëse të Leonardos. Për butonat këtu kam përdorur slotin 2 - 3 - 4 - 5 - 6 - 7- 8

Unë vetëm tregova tela që do të hyjë në figurën 8 sepse bëhet një fotografi shumë e çrregullt për t'ju treguar të gjitha telat që kalojnë njëra -tjetrën.

Hapi 2: Kodimi i Arduino Leonardo:

Kodimi i Arduino Leonardo
Kodimi i Arduino Leonardo

Kështu që t'ju them arsyen pse po e përdor Leonardon për këtë. Becauseshtë sepse ka një çip të caktuar që Uno nuk e bën që kompjuteri ta njohë atë si një pajisje hyrëse usb. Ashtu si do të ishte një tastierë. Kjo na lejon të bëjmë diçka që e bën jetën tonë si programues për këtë projekt shumë më të lehtë. Emulimi i tastierës. Ne do ta mashtrojmë kompjuterin të mendojë se po shtypim disa çelësa në tastierë kur në fakt shtypim butona në kontrolluesin tonë.

Tani do të eci ju menduat kodin hap pas hapi.

Së pari deri në fund, ne përfshijmë Keyboard.h. Kjo do të na lejojë të përdorim funksionet e tastierës që do të përdorim në kodin tonë.

Hapi 3:

Imazhi
Imazhi

Pastaj ne duhet të përcaktojmë lojëra elektronike hyrëse që do të përdorim në

Leonardo për çdo buton.

Unë gjithashtu i kam emëruar secilën prej tyre sipas çelësit që do të imitoj.

Hapi 4:

Imazhi
Imazhi

Nga atje ne hyjmë në funksionin e konfigurimit. Kjo i thotë

arduino çfarë bën kur fillon.

së pari ne shkruajmë Serial.begin i cili do të hap portën serike dhe vendos shpejtësinë e të dhënave në 9600 bps

dhe ne përcaktojmë që të gjitha janë emërtuar kunjat si inpute.

Hapi 5:

Imazhi
Imazhi

Dhe së fundi ne shkruajmë funksionin tonë të lakut i cili do të kontrollojë nëse

butonat po shtypen dhe i tregojnë arduino -s se si t'i përgjigjet kësaj.

Së pari ne shkruajmë Keyboard.begin i cili do t'i tregojë arduino se ai duhet të kujdeset për ne duke përdorur funksionet e tastierës

Hapi 6:

Imazhi
Imazhi
Imazhi
Imazhi
Imazhi
Imazhi

Pastaj për çdo buton ne shkruajmë një deklaratë if/else që shkon kështu

Pra, ajo që i thashë arduino këtu është: Nëse butoni im i majtë është duke u shtypur në kontrollues, bëjeni kompjuterin të mendojë se ne po shtypim butonin "a" dhe nëse nuk është kështu, mendoni se e kemi lënë çelësin.

Ju në thelb përsërisni këtë bllok të kodit për çdo buton në kontrolluesin tuaj. me ndryshime për çdo ndryshore dhe çelësat që ndryshori duhet të imitojë

Hapi 7:

Imazhi
Imazhi

Çelësat që i thamë kompjuterit të godasë këtu janë W - A - S - D të cilat

janë shumë standarde për lëvizjen në lojërat kompjuterike dhe E-Q-dhe shiritin hapësinor i cili në këtë kod njihet si ‘’ cilat janë butonat që përdor për të mbledhur-shkarkuar dhe ndezur në lojën time. Ndjehuni të lirë t'i ndryshoni këto në cilindo çelës që mendoni se funksionojnë më mirë për lojën/kontrolluesin tuaj.

Pastaj së fundi i themi arduino -s të ndalojë kontrollin se cila tastierë.përfundojë

Hapi 8: Kodimi i Lëvizjes në Unitet:

Lëvizja e Kodimit në Unitet
Lëvizja e Kodimit në Unitet

Fillimisht më lejoni t'ju them se po e bëj këtë për një lojë 2d kështu

shembujt që do të shihni janë ndërtuar për këtë. Do të thotë kryesisht se ku përdor vektorët2 nëse jeni duke punuar në 3d do të përdorni vektorët3. sepse do të duhet të shqetësoheni për dimensionin shtesë të lëvizjes në 3D.

Tani arsyeja pse kam përdorur emulimin e tastierës nga ana arduino është sepse Uniteti ka diçka të integruar për të njohur çelësat në tastierë të cilat ne mund t'i përdorim.

Nëse e hapni projektin tuaj në unitet, shkoni te Edit -> Cilësimet e projektit -> Input. Ju mund të shihni në inspektorin tuaj se ai fillon menaxherin e hyrjes. Ku nëse klikoni në Akset mund të shihni një bandë të tërë të emrave të hyrjes të hapura të cilat zakonisht përdoren për kontrolluesit e kompjuterëve si ata që po bëjmë tani. 2 hyrjet që do të përdorim janë horizontale dhe vertikale, të cilat, sipas mendimit tuaj, e morën me mend W-A-S-D.

Së pari ju doni të bëni një objekt Në hierarkinë tuaj të skenave të unitetit i cili do të jetë lojtari juaj. Në rastin tim duke qenë ky djalë i vogël argëtues. Kjo mund të jetë gjithçka që ju nevojitet për të qenë, por për qëllimin e lojës sime e bëra këtë djalë.

Hapi 9:

Imazhi
Imazhi

Ju doni t'i jepni këtij lojtari 2 gjëra. Një përplasës kuti 2d dhe

një Rigidbody 2d dhe modifikoni ato që të jenë si imazhi i mësipërm.

Hapi 10:

Imazhi
Imazhi

Pastaj dëshironi të futeni në dosjen e projekteve tuaja dhe të krijoni një

Shkrimi C#. Të cilën e kam quajtur PlayerMovement.

Në këtë skenar ju do të përcaktoni 2 ndryshore. Një noton publik të cilin e quaj moveSpeed. E cila do të përcaktojë sa shpejt shkoni. Dhe një Rigidbody2D privat të cilin e quaj RigidPlayer. E cila do të kërkojë lojtarët tuaj të ngurtë.

Mos harroni të shkoni te redaktuesi juaj i unitetit, klikoni mbi lojtarin tuaj, shtoni këtë skenar të ri duke e tërhequr atë te inspektori dhe vendosni një vlerë numerike për moveSpeed.

Hapi 11:

Imazhi
Imazhi

tani në Start () tuaj doni të bëni një gjë dhe kjo është për të

sigurohuni që RigidPlayer juaj të gjejë paguesin tuaj të ngurtë 2d. Ju e bëni atë me rreshtin e mëposhtëm të kodit:

Hapi 12:

Imazhi
Imazhi

Pastaj kalojmë në azhurnimin (). Këtu po shkojmë

për ta bërë lojtarin të lëvizë.

ne e bëjmë atë me një deklaratë mjaft të thjeshtë nëse do të shikojë çelësat negativë dhe pozitivë nga Horizontal (AD) dhe Vertikal (SW) dhe e zbatojmë atë si një numër për të detyruar ne do të veshim trupin tonë të ngurtë 2d për të shtyrë lojtarin tonë në nje drejtim. Ai numër do të shumëzohet me ndryshoren moveSpeed.

Hapi 13:

Imazhi
Imazhi

Së fundi, ju doni të siguroheni që lojtari juaj të ndalojë së lëvizuri kur

ju nuk shtypni asgjë. Kjo ju pëlqen kështu:

Tani nëse doni të përdorni 3 butonat tuaj të tjerë për çdo gjë që bëni me këtë deklaratë nëse: nëse (Input. GetKeyDown (Keycode. Space))

për hapësirën hapësinore dhe në vend të hapësirës vendosni shkronjën e çelësave të tjerë që keni zgjedhur të përdorni për çelësat e tjerë.

Hapi 14: Lidhja e dritave me Arduino

Lidhja e dritave me Arduino
Lidhja e dritave me Arduino

·

Çfarë ju nevojitet për të lidhur këtë pjesë:

· 9 tela kërcyes

· 4 rezistorë

· 4 led

· 1 kabllo arduino uno + usb

· Dërrasë buke

Lidhja për dritat do të bëhet përmes Uno.

Do të përfundojë të duket si ky imazh më lart:

Ju i lidhni rezistorët në anën e gjatë të LED -ve. Pastaj lidhni një kërcyes nga një numër dixhital pin në uno me rezistorët. në këtë rast kam përdorur fole dixhitale të kunjave 9 -10 -11 -12 këta numra do të jenë të rëndësishëm kur të arrijmë te kodi për dritat.

Nga atje ju doni të lidhni një kërcyes nga foleja e tokës në arduino Uno tuaj në vendin në tabelën tuaj siç shihet me tela të zezë në imazhin e mësipërm.

Pastaj dëshironi të keni 4 kërcyes të gjithë të çojnë në skajin e shkurtër të secilës LED

Hapi 15: Kodimi i Arduino Uno

Kodimi i Arduino Uno
Kodimi i Arduino Uno

Në rregull, së pari ne do të përcaktojmë përsëri ndryshoret tona

Pra, së pari cilat hyrje dixhitale po përdorim për dritat tona. Dhe ne do të bëjmë një karbon të quajtur myCol [20]

Hapi 16:

Imazhi
Imazhi

Pastaj në konfigurim ne duam të bëjmë Serial.fillojmë përsëri. Vendosni të gjitha LED -të tanë në dalje dhe fikini të gjitha kur filloni.

Hapi 17:

Imazhi
Imazhi

Dhe së fundi ju doni të shkruani funksionin tuaj të lakut.

Kjo do të bëjë që Arduino të lexojë çdo të dhënë që vjen përmes serisë derisa të ndodhë një nga dy ngjarjet. Zbulohet ose një karakter i ushqimit të linjës; kjo identifikohet me lf e cila është vendosur në 10 dhe është argumenti i parë ose janë lexuar një sasi e caktuar bajtësh. Ky është argumenti i tretë dhe për këtë shembull është vendosur në vetëm një bajt. Të dhënat ruhen në ndryshoren myCol, e cila është vendosur në char dhe një kufi prej 20. Në readBytesUntil ky është argumenti i dytë. Ose një mënyrë tjetër për ta shpjeguar është Serial.readBytesUntil (terminatorCharacter, buffer, byteLimit);

Dhe deklaratat if do të sigurojnë që dritat e caktuara të ndizen kur uniteti jep sinjalin. Në këtë rast mora 4 drita me ngjyra të ndryshme, kështu që unë bëj që uniteti të dërgojë g që LED jeshil të ndizet, b që LED blu të ndizet, r që LED i kuq të ndizet dhe y për LED të verdhë të ndizet.

Hapi 18: Kodimi i Dritave Uniteti Side:

Uniteti i Dritave të Kodimit
Uniteti i Dritave të Kodimit

Oke 2 gjëra së pari para se të hyjmë në këtë.

1. në programin tuaj të kodimit arduino shkoni te Tool -> Port -> dhe kontrolloni për mua në cilën COM është uno juaj. Në rastin tim COM3 e tij (kjo do të jetë e rëndësishme në kod)

2.në unitet Shkoni tek Edit -> Cilësimet e projektit -> Luajtësi pastaj në inspektorin klikoni në cilësimet e tjera shkoni te Niveli i pajtueshmërisë Api dhe Kalojeni atë nga nën -rrjeta. NET 2.0 në vetëm. NET 2.0

Epo kjo është bërë. Le të futemi në të.

Klikoni me të djathtën në hierarkinë tuaj dhe klikoni në Krijo bosh.

Ky do të jetë një objekt i zbrazët i lojës që thjesht do të ekzistojë në lojën tuaj për të mbajtur një skenar për ne. Unë e kam quajtur këtë objekt Init.

Hapi 19:

Imazhi
Imazhi

Pastaj shkoni në skedën e projekteve tuaja dhe krijoni një skenar të ri C#

dhe e quaj Dërgimi.

Gjëja e parë që bëni është t'i shkruani këto rreshta në pjesët e përdorura të kodit tuaj:

duke përdorur System. IO. Ports;

duke përdorur System. Threading;

kjo e bën atë kështu që ne mund të përdorim ndryshoren SerialPort

Hapi 20:

Imazhi
Imazhi

në këtë skenar ne do të bëjmë ndryshoret e mëposhtme. Tani vini re se kam marrë COM3 atje kjo mund të jetë ndryshe për ju siç diskutuam në fillim të këtij hapi. Nëse zëvendësohet 3 me numrin që tha për ju.

Hapi 21:

Imazhi
Imazhi

Në fillim i themi që skripti të përdoret janë OpenConnection

funksionin të cilin do ta shkruajmë pak

përditësimi është më shumë një provë se çdo gjë, por nëse doni ta përfshini atë, është për të testuar mesazhet që dërgohen në unitet. Mund ta injoroni sinqerisht.

Hapi 22:

Imazhi
Imazhi

Ok tani për këtë funksion OpenConnection. Kjo është vetëm një e madhe

if/else deklarata që e mban lidhjen hapur vetëm kopjojeni si të shkruar dhe duhet të jeni mirë.

Hapi 23:

Imazhi
Imazhi

Tani mbani mend nga kodi arduino për të cilin e kam kontrolluar

sinjale që uniteti do t'i dërgojë atij.

mirë, këtu ndodh. Në rastin tim kam marrë 4 drita të lidhura kështu që kam shkruar 4 funksione që janë jashtëzakonisht të thjeshta. E tëra çfarë bëjnë është kur të thirren ata i dërgojnë një letër arduino -s. Kur arduino të marrë atë shkronjë ndez dritën që korrespondon me shkronjën në fjalë.

Hapi 24:

Imazhi
Imazhi

Ju mund të pyesni veten se si ta quaj këtë

funksion? Epo ju e bëni atë me një linjë të thjeshtë në cilindo nga shkrimet tuaja të tjera c# që përdorni për lojën tuaj. Sending. NameFunctionhere ();. Kështu për shembull në lojën time lojtari ka për detyrë të mbledhë 4 rruaza me ngjyrë. Kështu që unë shkrova një skenar të vogël që siguron që kur i afrohet njërit dhe shtyp butonin e djathtë ta marrë atë dhe ai dërgon sinjal në arduino se në këtë rast rruzulli i Verdhë është marrë. Që ta dijë, mirë, duhet ta ndez LED -in e Verdhë:

Ju mund ta vendosni këtë linjë të kodit kudo që dëshironi. Nëse dëshironi që ajo të ndizet kur të fillojë loja vendoseni në funksionin e fillimit. Dëshironi që të ndizet kur të vdesë vendoseni në funksionin tuaj për vdekjen e lojtarëve. Eksperimentoni pak. Unë zgjedh t'i bëj dritat një lloj ui elementi jashtë lojës për të mbajtur nën kontroll orbat që keni për të mbledhur pa rrëmujë ekranin.

Recommended: