Cuprins:

Arduino și Touchpad Tic Tac Toe: 8 pași (cu imagini)
Arduino și Touchpad Tic Tac Toe: 8 pași (cu imagini)

Video: Arduino și Touchpad Tic Tac Toe: 8 pași (cu imagini)

Video: Arduino și Touchpad Tic Tac Toe: 8 pași (cu imagini)
Video: Arduino - Tic Tac Toe Game with Touchpad 2024, Noiembrie
Anonim
Arduino și Touchpad Tic Tac Toe
Arduino și Touchpad Tic Tac Toe

Sau, un exercițiu de multiplexare de intrare și ieșire și de lucru cu biți. Și o înscriere pentru concursul Arduino.

Aceasta este o implementare a unui joc tic tac toe folosind o gamă 3x3 de LED-uri bicolore pentru un afișaj, un touchpad rezistiv simplu și un Arduino pentru a lega totul împreună. Pentru a vedea cum funcționează, consultați videoclipul: Ce necesită acest proiect: Piese și consumabile O placă de perfecționare (sau placă de benzi) Nouă LED-uri bicolore, catod comun Nouă rezistențe identice, în intervalul 100-220 ohmi Șase rezistențe identice, în 10kohm - gama de 500kohm Un singur pol, comutator dublu aruncat O grămadă de știfturi antice O grămadă de sârmă electrică O foaie mică pătrată de acrilic transparent, grosime de ~ 1 mm, 8 cm pe partea laterală Bandă lipicioasă clară Termocontractori (opțional) Toate cele de mai sus sunt obiecte destul de obișnuite, costul total nu trebuie să depășească 20 USD. Instrumente One Arduino de configurare (Arduino Duemilanove, Arduino IDE, computer, cablu USB) Unelte electrice uzuale (multimetru, pistol de lipit lipit, tăieturi de sârmă, tăietor de sârmă) găsit la https://www.arduino.cc. Mai departe cu construcția!

Pasul 1: Cablarea matricei LED

Cablarea matricei LED
Cablarea matricei LED
Cablarea matricei LED
Cablarea matricei LED

Pentru ca un LED să se aprindă, ambele cabluri trebuie conectate. Dacă ar fi să dedicăm o pereche de pini fiecăruia dintre cele 18 LED-uri (9 roșii, 9 verzi), am rămâne rapid fără pini pe Arduino. Cu toate acestea, cu multiplexare, vom putea aborda toate LED-urile cu doar 9 pini! Pentru a face acest lucru, LED-urile sunt conectate într-un mod transversal, așa cum se arată în prima figură. LED-urile sunt grupate în coloane de trei, iar catodii lor sunt grupați în rânduri de șase. Prin setarea unei linii anodice înalte și a unei anumite linii catodice joase și având o impedanță ridicată pe toate celelalte linii anodice și catodice, putem selectați ce LED dorim să fie aprins, deoarece există o singură cale posibilă pe care o poate lua curentul. De exemplu, în a doua figură, setând linia anodului verde 1 înalt și linia catodului 1 jos, LED-ul verde din stânga jos se aprinde. Calea curentă în acest caz este afișată în albastru. Dar dacă doriți să aprindeți mai mult de un LED pe linii diferite? Vom folosi persistența vederii pentru a realiza acest lucru. Prin selectarea foarte rapidă a perechilor de linii LED, se dă iluzia că toate LED-urile selectate sunt aprinse în același timp.

Pasul 2: Layout Matrix LED

Layout cu matrice LED
Layout cu matrice LED
Layout Matrix LED
Layout Matrix LED

Diagrama circuitului de mai jos arată modul în care LED-urile sunt conectate fizic (G1-G9: LED-uri verzi, R1-R9: LED-uri roșii). Această diagramă este pentru LED-uri roșii și verzi unice, dacă utilizați LED-uri roșu / verde cu catod comun bicolor, există un singur picior de catod pe pereche roșie / verde pe care trebuie să le conectați. Liniile de anod roșu și verde intră în pinii PWM din Arduino (pinii 3, 5, 6, 9, 10, 11 de pe Duemilanove), astfel încât să putem avea efecte precum decolorarea mai târziu. Liniile catodice intră în pinii 4, 7 și 8. Fiecare dintre liniile catodice și anodice au rezistențe de 100 ohmi pentru protecție.

Pasul 3: Adresarea matricei LED

Pentru codul tic tac toe, va trebui să putem stoca următoarele informații despre LED-uri: - dacă un LED este aprins sau nu - dacă este aprins, dacă este roșu sau verde Un mod de a face acest lucru este stocarea stării într-o matrice de 9 celule, folosind trei cifre pentru a reprezenta starea (0 = oprit, 1 = roșu pornit, 2 = verde aprins). De fiecare dată când trebuie să verificăm stările LED-ului, de exemplu, pentru a verifica dacă există o condiție de câștig, va trebui să parcurgem matricea. Aceasta este o metodă viabilă, dar destul de ciudată. O metodă mai simplificată ar fi utilizarea a două grupuri de nouă biți. Primul grup de nouă biți stochează starea on-off a LED-urilor, iar al doilea grup de nouă biți stochează culoarea. Apoi, manipularea stărilor LED devine pur și simplu o chestiune de aritmetică de biți și schimbare. Iată un exemplu lucrat. Să presupunem că ne desenăm grafica tic tac toe și folosim mai întâi 1s și 0s pentru a reprezenta starea on-off (1 este pornit, 0 este oprit): 000 000 = matrice cu LED stânga jos aprins 100 100 010 = matrice cu diagonală LED-uri aprinse 001 Dacă enumerăm celulele din stânga jos, putem scrie reprezentările de mai sus ca o serie de biți. În primul caz, acesta ar fi 100000000, iar în al doilea caz, ar fi 001010100. Dacă ne gândim la acestea ca reprezentări binare, atunci fiecare serie de biți poate fi condensată într-un singur număr (256 în primul caz, 84 în al doilea caz). Deci, în loc să folosim o matrice pentru a stoca starea matricei, putem folosi doar un singur număr! În mod similar, putem reprezenta culoarea LED-ului în același mod (1 este roșu, 0 este verde). Să presupunem mai întâi că toate LED-urile sunt aprinse (deci starea on-off este reprezentată de 511). Matricea de mai jos va reprezenta apoi starea culorii LED-urilor: 010 verde, roșu, verde 101 roșu, verde, roșu 010 verde, roșu, verde Acum, când afișăm matricea LED, trebuie doar să parcurgem fiecare dintre biți, mai întâi în starea on-off, apoi în starea de culoare. De exemplu, să presupunem că starea noastră de pornire-oprire este 100100100, iar starea de culoare este 010101010. Iată algoritmul nostru pentru aprinderea matricei LED-urilor: Pasul 1. Efectuați o adăugare bit-bit a stării de pornire-oprire cu un binar 1 (adică bit mascare). Pasul 2. Dacă este adevărat, LED-ul este aprins. Efectuați acum o adăugare bit-bit a stării culorii cu un binar 1. Pasul 3. Dacă este adevărat, aprindeți LED-ul roșu. Dacă este fals, aprindeți LED-ul verde. Pasul 4. Schimbați atât starea on-off, cât și starea culorilor, un bit spre dreapta (adică schimbarea de biți). Pasul 5. Repetați pașii 1 - 4 până când toți cei nouă biți au fost citiți. Rețineți că umplem matricea înapoi - începem cu celula 9, apoi trecem înapoi la celula 1. De asemenea, stările de pornire și oprire sunt stocate ca un tip întreg nesemnat (cuvânt) în loc de un tip întreg semnat. Asta pentru că în schimbarea de biți, dacă nu suntem atenți, am putea modifica din greșeală semnul variabilei. Atașat este codul pentru iluminarea matricei LED.

Pasul 4: Construirea touch pad-ului

Construirea touch pad-ului
Construirea touch pad-ului
Construirea touch pad-ului
Construirea touch pad-ului
Construirea touch pad-ului
Construirea touch pad-ului
Construirea touch pad-ului
Construirea touch pad-ului

Touchpad-ul este construit dintr-o foaie de acrilic subțire, suficient de mare pentru a se suprapune peste matricea LED. Apoi, lipiți firele de rând și de coloană pe foaia de acril, folosind bandă transparentă. Banda transparentă este, de asemenea, utilizată ca distanțier izolant între fire, la intersecții. Asigurați-vă că utilizați unelte curate, pentru a preveni pătrunderea grăsimii degetelor pe partea lipicioasă a benzii. Petele de amprentă nu numai că arată urât, dar fac banda mai puțin lipicioasă. Îndepărtați un capăt al fiecărei linii și lipiți celălalt capăt cu un fir mai lung. Lipiți un rezistor în linie cu firele, înainte de a lipi conectorii. Rezistențele utilizate aici sunt 674k, dar orice valoare între 10k și 1M ar trebui să fie fină. Conexiunile la Arduino se fac folosind cei 6 pini analogici, cu pinii 14-16 conectați la rândurile rețelei de sârmă și pinii 17-19 conectați la coloanele.

Pasul 5: Touch Pad - Cum funcționează

Touch Pad - Cum funcționează
Touch Pad - Cum funcționează
Touch Pad - Cum funcționează
Touch Pad - Cum funcționează

La fel cum am folosit un multiplexor cu bare transversale pentru a configura o matrice LED cu pini minimi, putem folosi un multiplexor cu bare transversale similar pentru a configura o matrice de senzori tactili, pe care o putem folosi apoi pentru a activa LED-urile. Conceptul pentru acest touch pad este simplu. Este în esență o rețea de sârmă, cu trei fire goale care rulează în rânduri și trei fire goale care rulează în coloane deasupra rândurilor. La fiecare punct de intersecție este un mic pătrat de izolație care împiedică atingerea celor două fire. Un deget care atinge intersecția va intra în contact cu ambele fire, rezultând o rezistență imensă, dar finită între cele două fire. Prin urmare, un curent mic, dar detectabil, poate fi făcut să curgă de la un fir la următorul, prin deget. Pentru a determina ce intersecție a fost apăsată, a fost utilizată următoarea metodă: Pasul 1: Setați toate liniile coloanei la IEȘIRE LIMBĂ. Pasul 2: Setați liniile de rând la INPUT, cu pullup-urile interne activate. Pasul 3: Faceți o citire analogică pe fiecare linie de rând până când valoarea scade sub un prag dat. Acest lucru vă spune în ce rând este intersecția apăsată. Pasul 4: Repetați pașii 1-3, dar acum cu coloanele ca intrări și rândurile ca ieșiri. Acest lucru vă spune care este coloana intersecției apăsate. Pentru a minimiza efectele zgomotului, sunt luate mai multe citiri și apoi mediatizate. Rezultatul mediu este apoi comparat cu un prag. Deoarece această metodă verifică doar un prag, nu este potrivită pentru detectarea apăsărilor simultane. Cu toate acestea, deoarece tic tac toe se desfășoară pe rând, este suficientă citirea unei singure apăsări. Atașat este o schiță care ilustrează modul în care funcționează touchpad-ul. La fel cu matricea LED, biții sunt folosiți pentru a reprezenta care intersecție a fost apăsată.

Pasul 6: Puneți totul împreună

Punând totul împreună
Punând totul împreună

Acum că toate componentele individuale sunt terminate, este timpul să le puneți la un loc. Poate fi necesar să reordonați numerotarea pinilor din codul matricei LED pentru a o sincroniza cu senzorul rețelei de sârmă. Asigurați rețeaua de sârmă în poziție cu elemente de fixare sau adezivi la alegere și lipiți-vă pe o masă de joc frumoasă. Adăugați un comutator între pinul 12 și solul Arduino. Acest comutator este pentru a comuta între modul 2 jucători și modul 1 jucător (față de microcontroler).

Pasul 7: Programarea Tic Tac Toe

Atașat este codul jocului. Să descompunem mai întâi jocul tic tac toe în diferiții pași, în modul cu doi jucători: Pasul 1: Jucătorul A alege o celulă neumplută atingând o intersecție. Pasul 2: LED-ul pentru acea celulă se aprinde cu culoarea A. Pasul 3: Verificați dacă jucătorul A. a câștigat. Pasul 4: Jucătorul B alege o celulă neumplută. Pasul 5: LED-ul pentru acea celulă se aprinde cu culoarea B. Pasul 6: Verificați dacă jucătorul B. a câștigat. Pasul 7: Repetați 1-6 până când există o condiție de câștig sau dacă toate celulele sunt umplute. Citirea celulelor: Programul trece între citirea grilei și afișarea matricei LED. Atâta timp cât senzorul de rețea nu înregistrează o valoare diferită de zero, această buclă va continua. Când este apăsată o intersecție, variabila Pressed stochează poziția celulei apăsate. Verificarea dacă celula este neumplută: Când se obține o citire a poziției (variabilă Pressed), aceasta este comparată cu starea actuală a celulei (stocată în variabila GridOnOff) folosind un adaos pe biți. Dacă celula presată este neumplută, procedați la aprinderea LED-ului, altfel reveniți la citirea celulelor. Comutarea culorilor: O variabilă booleană, Turn, este utilizată pentru a înregistra al cui rând este. Culoarea LED-ului aleasă atunci când este aleasă o celulă este determinată de această variabilă, care alternează de fiecare dată când este aleasă o celulă. Verificarea unei condiții de câștig: există doar 8 condiții de câștig posibile și acestea sunt stocate ca variabile de cuvânt într-o matrice (winArray). Două adăugări bit-bit sunt folosite pentru a compara pozițiile de celule umplute de un jucător cu condițiile de câștig. Dacă există un meci, atunci programul afișează o rutină de câștig, după care începe un joc nou. Verificarea condiției de remiză: Când s-au înregistrat nouă ture și încă nu există o condiție de câștig, atunci jocul este o remiză. LED-urile sunt apoi stinse și se începe un joc nou. Comutarea la modul pentru un singur jucător: Dacă comutatorul este în poziția pornit, programul intră în modul cu un singur jucător, jucătorul uman pornind primul. La sfârșitul rândului jucătorului uman, programul alege pur și simplu o celulă aleatorie. Evident, aceasta nu este cea mai inteligentă strategie!

Pasul 8: Observații și îmbunătățiri suplimentare

Aici un videoclip care arată modul cu un singur jucător, cu programul care redă mișcări total aleatorii: Programul prezentat aici este doar o versiune minimă, cu oase goale. Multe alte lucruri pot fi făcute cu acest lucru: 1) Aprinderea LED-urilor câte trei Codul curent afișează un singur LED simultan. Cu toate acestea, cu cablajul prezentat aici, este posibil să se aprindă toate LED-urile conectate la o linie de catod în același timp. Deci, în loc să parcurgeți toate cele nouă poziții, tot ce trebuie să faceți este să parcurgeți cele trei linii catodice. pâlpâind. Prin utilizarea întreruperilor, sincronizarea LED-urilor poate fi controlată cu precizie și ar duce la un afișaj mai fin. jucător de la picioare. Sper că ți-a plăcut să citești acest instructable la fel de mult pe cât m-am distrat lucrând la el!

Recomandat: