Përmbajtje:

Arduino dhe Touchpad Tic Tac Toe: 8 hapa (me fotografi)
Arduino dhe Touchpad Tic Tac Toe: 8 hapa (me fotografi)

Video: Arduino dhe Touchpad Tic Tac Toe: 8 hapa (me fotografi)

Video: Arduino dhe Touchpad Tic Tac Toe: 8 hapa (me fotografi)
Video: PC keyboard light on hacks |#lifehack |#hack | #short | #video | #shortsvideos 2024, Shtator
Anonim
Arduino dhe Touchpad Tic Tac Toe
Arduino dhe Touchpad Tic Tac Toe

Ose, një ushtrim në shumëfishimin e hyrjes dhe daljes, dhe punën me bit. Dhe një paraqitje për konkursin Arduino.

Ky është një zbatim i një loje tic tac toe duke përdorur një grup 3x3 LED me dy ngjyra për një ekran, një tastierë prekëse të thjeshtë rezistente dhe një Arduino për të lidhur gjithçka së bashku. Për të parë se si funksionon, shikoni videon: Çfarë kërkon ky projekt: Pjesë dhe materiale harxhuese Një tabelë perf (ose tabelë shiritash) Nëntë LED me dy ngjyra, katodë e zakonshme Nëntë rezistorë identikë, në rangun 100-220 ohm Gjashtë rezistencë identikë, në 10kohm - Gama 500kohm Një shtyllë e vetme, çelës i hedhjes së dyfishtë Një bandë kunjash me kokë Një bandë tela elektrike Një fletë e vogël katrore akrilike transparente, thick 1 mm e trashë, 8 cm në anë Pastro shirit ngjitës të pastër Ngrohje (sipas dëshirës) Të gjitha sa më sipër janë artikuj mjaft të zakonshëm, kostoja totale nuk duhet të kalojë 20 dollarë amerikanë. Instalimi i një mjeti Arduino (Arduino Duemilanove, Arduino IDE, kompjuter, kabllo USB) Mjete të zakonshme elektrike (multimetër, armë lidhëse, gërshërë teli, prerës teli) Gjithçka që lidhet me Arduino mund të jetë gjendet në https://www.arduino.cc. Vazhdoni me ndërtimin!

Hapi 1: Instalimi i matricës LED

Instalimi i matricës LED
Instalimi i matricës LED
Instalimi i matricës LED
Instalimi i matricës LED

Që një LED të ndizet, të dy drejtuesit e tij duhet të jenë të lidhur. Nëse do t'i kushtonim një palë kunja secilës prej 18 LED -ve (9 të kuqe, 9 jeshile), shpejt do të na mbaronin kunjat në Arduino. Sidoqoftë, me shumëfishimin, ne do të jemi në gjendje t'i adresojmë të gjitha LED -të me vetëm 9 kunja! Për ta bërë këtë, LED -të janë të lidhur në mënyrë traversale, siç tregohet në figurën e parë. LED -të janë grupuar në kolona me tre, dhe katodat e tyre janë grupuar në rreshta me gjashtë. Duke vendosur një vijë të veçantë anode të lartë, dhe një linjë të veçantë katode të ulët, dhe duke pasur një rezistencë të lartë në të gjitha linjat e tjera të anodës dhe katodës, ne mund të zgjidhni cilën LED duam të ndizet, pasi ekziston vetëm një rrugë e mundshme që mund të marrë rryma. Për shembull, në figurën e dytë, duke vendosur anodën e gjelbër 1 vijë të lartë dhe vijën katodë 1 të ulët, LED -i jeshil i poshtëm i majtë ndizet Me Rruga aktuale në këtë rast tregohet me ngjyrë blu. Por, çfarë nëse doni të ndizni më shumë se një LED në linja të ndryshme? Ne do të përdorim këmbënguljen e vizionit për ta arritur këtë. Duke përzgjedhur palë linjash LED shumë shpejt, jep iluzionin se të gjitha LED -të e zgjedhura ndizen në të njëjtën kohë.

Hapi 2: Paraqitja e matricës LED

Paraqitja e matricës LED
Paraqitja e matricës LED
Paraqitja e matricës LED
Paraqitja e matricës LED

Diagrami i qarkut më poshtë tregon se si LED-të janë lidhur fizikisht (G1-G9: LED të gjelbër, R1-R9: LED të kuq). Ky diagram është për LED të vetëm të kuq dhe të gjelbër, nëse përdorni LED të kuq/jeshil me katodë të zakonshme dyngjyrëshe, ka vetëm një këmbë katodë për palë të kuqe/jeshile që duhet të lidhni. Linjat e anodës së kuqe dhe jeshile futen në kunjat PWM të Arduino (kunjat 3, 5, 6, 9, 10, 11 në Duemilanove), në mënyrë që të kemi efekte si venitje më vonë. Linjat e katodës shkojnë në kunjat 4, 7 dhe 8. Secila prej linjave të katodës dhe anodës ka rezistencë 100 ohm për mbrojtje.

Hapi 3: Adresimi i Matricës LED

Për kodin tic tac, ne do të duhet të jemi në gjendje të ruajmë informacionin e mëposhtëm në lidhje me LED -të: - nëse një LED është ndezur apo jo - nëse ndizet, nëse është e kuqe apo jeshile Një mënyrë për ta bërë këtë është ruajtja e gjendjes në një grup me 9 qeliza, duke përdorur tre shifra për të përfaqësuar gjendjen (0 = fikur, 1 = kuqe ndezur, 2 = jeshile aktiv). Sa herë që duhet të kontrollojmë gjendjet e LED -it, për shembull, për të kontrolluar nëse ka një kusht fitimi, do të na duhet të kalojmë nëpër grup. Kjo është një metodë e zbatueshme, por mjaft e ngathët. Një metodë më e efektshme do të ishte përdorimi i dy grupeve me nëntë bit. Grupi i parë me nëntë bit ruan statusin e ndezjes së LED-ve, dhe grupi i dytë prej nëntë bit ruan ngjyrën. Pastaj, manipulimi i gjendjeve LED thjesht bëhet një çështje pak aritmetike dhe zhvendosëse. Këtu është një shembull i punuar. Le të themi se ne vizatojmë rrjetin tonë tic tac toe në mënyrë grafike, dhe së pari përdorim 1s dhe 0s për të përfaqësuar statusin e ndezjes-fikjes (1 është aktiv, 0 është i fikur): 000 000 = matrica me LED të poshtëm të majtë të ndezur 100 100 010 = matricë me diagonale LED të ndezur 001 Nëse numërojmë qelizat nga poshtë majtas, mund të shkruajmë paraqitjet e mësipërme si një seri bitesh. Në rastin e parë, kjo do të ishte 100000000, dhe në rastin e dytë, do të ishte 001010100. Nëse i konsiderojmë këto si përfaqësime binare, atëherë secila seri e bitëve mund të kondensohet në një numër të vetëm (256 në rastin e parë, 84 në rastin e dytë). Pra, në vend që të përdorim një grup për të ruajtur gjendjen e matricës, ne mund të përdorim vetëm një numër të vetëm! Në mënyrë të ngjashme, ne mund të përfaqësojmë ngjyrën e LED në të njëjtën mënyrë (1 është e kuqe, 0 është jeshile). Le të supozojmë së pari të gjitha LED-të janë ndezur (kështu që statusi i ndezjes-fikjes përfaqësohet me 511). Matrica më poshtë do të përfaqësojë gjendjen e ngjyrave të LED -ve: 010 jeshile, e kuqe, jeshile 101 e kuqe, jeshile, e kuqe 010 jeshile, e kuqe, jeshile Tani, kur shfaqim matricën LED, ne vetëm duhet të kalojmë nëpër secilën nga bitët, së pari në gjendjen on-off, dhe pastaj në gjendjen e ngjyrave. Për shembull, le të themi se gjendja jonë e ndezjes është 100100100, dhe gjendja e ngjyrave është 010101010. Këtu është algoritmi ynë për ndriçimin e matricës LED: Hapi 1. Bëni një shtesë bitike të gjendjes së fikjes me një binar 1 (dmth. Bit maskimi). Hapi 2. Nëse është e vërtetë, LED është ndezur. Bëni tani një shtesë bitike të gjendjes së ngjyrave me një binar 1. Hapi 3. Nëse është e vërtetë, ndizni LED -in e kuq. Nëse është e rreme, ndizni LED -in e gjelbër. Hapi 4. Zhvendosni gjendjen e ndezjes dhe fikjes së ngjyrës, një bit në të djathtë (dmth. Zhvendosja e bitit). Hapi 5. Përsëritni Hapat 1 - 4 derisa të gjitha nëntë bit -et të jenë lexuar. Vini re se ne po e mbushim matricën mbrapsht - fillojmë me qelizën 9, pastaj vazhdojmë përsëri në qelizën 1. Gjithashtu, gjendjet on -off dhe ngjyra ruhen si një lloj i plotë (fjalë) i panënshkruar në vend të një lloji të plotë të nënshkruar. Kjo ndodh sepse me pak ndryshime, nëse nuk jemi të kujdesshëm, mund të ndryshojmë pa dashje shenjën e ndryshores. Bashkangjitur është kodi për ndriçimin e matricës LED.

Hapi 4: Ndërtimi i bllokut të prekjes

Ndërtimi i bllokut të prekjes
Ndërtimi i bllokut të prekjes
Ndërtimi i bllokut të prekjes
Ndërtimi i bllokut të prekjes
Ndërtimi i bllokut të prekjes
Ndërtimi i bllokut të prekjes
Ndërtimi i bllokut të prekjes
Ndërtimi i bllokut të prekjes

Tastiera me prekje është ndërtuar nga një fletë akrilike e hollë, mjaft e madhe për të mbuluar matricën LED. Pastaj, ngjitni telat e rreshtit dhe kolonës në fletën akrilike, duke përdorur shirit të qartë. Shirit i qartë përdoret gjithashtu si ndarës izolues midis telave, në kryqëzimet. Sigurohuni që të përdorni mjete të pastra, për të parandaluar që yndyrat e gishtërinjve të futen në anën ngjitëse të shiritit. Njollat e gjurmëve të gishtërinjve jo vetëm që duken të shëmtuara, por e bëjnë kasetën më pak ngjitëse. Hiqeni njërin skaj të secilës prej rreshtave dhe lidhni skajin tjetër në një tel më të gjatë. Lidhni një rezistencë në përputhje me telat, para se të bashkoni lidhësit. Rezistencat e përdorura këtu janë 674k, por çdo vlerë midis 10k dhe 1M duhet të jetë e mirë. Lidhjet me Arduino bëhen duke përdorur 6 kunjat analoge, me kunjat 14-16 të lidhur me rreshtat e rrjetit teli, dhe kunjat 17-19 të lidhur me kolonat.

Hapi 5: Mbulesa me prekje - si funksionon

Pad Touch - Si funksionon
Pad Touch - Si funksionon
Pad Touch - Si funksionon
Pad Touch - Si funksionon

Ashtu siç kemi përdorur një multiplexer tërthor për të ngritur një matricë LED me kunja minimale, ne mund të përdorim një multiplexer të ngjashëm me shirita për të ngritur një grup sensorësh me prekje, të cilin më pas mund ta përdorim për të aktivizuar LED -të. Koncepti për këtë jastëk prekës është i thjeshtë. Essentialshtë në thelb një rrjet teli, me tre tela të zhveshur që rrjedhin në rreshta dhe tre tela të zhveshur që punojnë në kolona mbi rreshtat. Në secilën pikë kryqëzimi është një shesh i vogël izolimi që parandalon prekjen e dy telave. Një gisht që prek kryqëzimin do të bëjë kontakt me të dy telat, duke rezultuar në një rezistencë të madhe, por të kufizuar midis dy telave. Prandaj, një rrymë e vogël, por e zbulueshme, mund të bëhet që të rrjedhë nga një tel në tjetrin, përmes gishtit. Për të përcaktuar se cila kryqëzim është shtypur, është përdorur metoda e mëposhtme: Hapi 1: Vendosni të gjitha linjat e kolonës në OUTPUT LOW. Hapi 2: Vendosni linjat e rreshtave në INPUT, me tërheqjet e brendshme të aktivizuara. Hapi 3: Merrni një lexim analog në secilën rresht rreshti derisa vlera të bjerë nën një prag të caktuar. Kjo ju tregon në cilën rresht është kryqëzimi i shtypur. Hapi 4: Përsëritni Hapat 1-3, por tani me kolonat si hyrje dhe rreshtat si dalje. Kjo ju tregon se cila kolonë është kryqëzimi i shtypur. Për të minimizuar efektet e zhurmës, merren një numër leximesh dhe më pas mesatarizohen. Rezultati mesatar krahasohet më pas me një prag. Meqenëse kjo metodë vetëm kontrollon një prag, nuk është e përshtatshme për zbulimin e shtypjeve të njëkohshme. Sidoqoftë, meqenëse gishti tic tac vazhdon me kthesë, leximi i një shtypi të vetëm është i mjaftueshëm. Bashkangjitur është një skicë që ilustron se si funksionon tastiera me prekje. Ashtu si me matricën LED, copat përdoren për të përfaqësuar se cila kryqëzim është shtypur.

Hapi 6: Vendosja e gjithçkaje së bashku

Vendosja e gjithçkaje së bashku
Vendosja e gjithçkaje së bashku

Tani që të gjithë komponentët individualë janë bërë, është koha për t'i bashkuar të gjithë së bashku. Vishni rrjetën e telit në matricën LED. Ju mund të keni nevojë të ndryshoni renditjen e numrave të kunjave në kodin e matricës LED për ta sinkronizuar atë me sensorin e rrjetit teli. Siguroni rrjetën e telit në vend me fiksime ose ngjitëse të zgjedhjes suaj dhe ngjiteni në një dërrasë të bukur për lojë. Shtoni një ndërprerës midis kunjit 12 dhe tokëzimit të Arduino. Ky çelës duhet të kalojë midis modalitetit 2 lojtar dhe modalitetit 1 lojtar (kundrejt mikrokontrolluesit).

Hapi 7: Programimi i Tic Tac Toe

Bashkangjitur është kodi për lojën. Le ta zbërthejmë së pari lojën tic tac toe në hapat e saj të ndryshëm, në mënyrën me dy lojtarë: Hapi 1: Lojtari A zgjedh një qelizë të paplotësuar duke prekur një kryqëzim. Hapi 2: LED për atë qelizë ndizet me ngjyrën A. Hapi 3: Kontrolloni për të parë nëse Lojtari A ka fituar. Hapi 4: Lojtari B zgjedh një qelizë të paplotësuar. Hapi 5: LED për atë qelizë ndizet me ngjyrën B. Hapi 6: Kontrolloni për të parë nëse Lojtari B ka fituar. Hapi 7: Përsëriteni 1-6 derisa të ketë një gjendje fitimi, ose nëse të gjitha qelizat janë të mbushura. Leximi i qelizave: Programi lakon midis leximit të rrjetit dhe shfaqjes së matricës LED Me Përderisa sensori i rrjetit nuk regjistron një vlerë jo-zero, ky lak do të vazhdojë. Kur shtypet një kryqëzim, ndryshorja Presed ruan pozicionin e qelizës së shtypur. Kontrollimi nëse qeliza është e paplotësuar: Kur merret një lexim pozicioni (ndryshore e shtypur), krahasohet me statusin aktual të qelizës (të ruajtur në ndryshoren GridOnOff) duke përdorur një shtesë bitwise. Nëse qeliza e Shtypur nuk është e mbushur, atëherë vazhdoni të ndizni LED, përndryshe kthehuni në leximin e qelizave. Ndryshimi i ngjyrave: Një variabël boolean, Turn, përdoret për të regjistruar se ku është radha. Ngjyra LED e zgjedhur kur zgjidhet një qelizë përcaktohet nga kjo ndryshore, e cila alternohet sa herë që zgjidhet një qelizë. Kontrollimi i një kushti fitues: Ekzistojnë vetëm 8 kushte të mundshme të fitimit, dhe këto ruhen si variabla të fjalëve në një grup (winArray) Dy shtesa bitike përdoren për të krahasuar pozicionet e qelizave të mbushura të një lojtari me kushtet e fitimit. Nëse ka një ndeshje, atëherë programi shfaq një rutinë fitore, pas së cilës fillon një lojë të re. Kontrollimi i një kushti barazimi: Kur janë regjistruar nëntë kthesa dhe ende nuk ka kusht fitore, atëherë loja është barazim. LED -të pastaj zbehen dhe fillon një lojë e re. Kalimi në modalitetin e një lojtari: Nëse çelësi është në pozicionin e ndezur, programi kalon në modalitetin e një lojtari, me lojtarin njerëzor që fillon i pari. Në fund të radhës së lojtarit njerëzor, programi thjesht zgjedh një qelizë të rastësishme. Natyrisht, kjo nuk është strategjia më e zgjuar!

Hapi 8: Vërejtje dhe Përmirësime të Mëtejshme

Këtu një video që tregon modalitetin e një lojtari, me programin që luan lëvizje krejtësisht të rastësishme: Programi i treguar këtu është vetëm një version minimal, i zhveshur. Shumë gjëra të tjera mund të bëhen me këtë: 1) Ndriçimi i LED -ve tre në të njëjtën kohëKodi aktual shfaq vetëm një LED në të njëjtën kohë. Sidoqoftë, me instalimet elektrike të paraqitura këtu, është e mundur të ndizni të gjitha LED -të e lidhur me një linjë katodë në të njëjtën kohë. Pra, në vend që të ecni me biçikletë nëpër të nëntë pozicionet, gjithçka që duhet të bëni është të kaloni nëpër tre linjat katodë. 2) Përdorni ndërprerjet për të shfaqur LED -të. Në varësi të rutinës së ekranit LED dhe sasisë së përpunimit, LED -të mund të tregojnë një shkallë të dridhje Duke përdorur ndërprerjet, koha e LED -ve mund të kontrollohet saktësisht dhe do të çonte në një ekran më të butë. 3) Një lojtar kompjuter më i zgjuar Kodi aktual merr vetëm disa kb, duke lënë shumë më tepër për zbatimin e një tic tac kompjuterik më të zgjuar lojtar i shputave. Shpresoj se ju ka pëlqyer të lexoni këtë udhëzues sa më shumë që kam argëtuar duke punuar në të!

Recommended: