Taula de continguts:

Arduino i Touchpad Tic Tac Toe: 8 passos (amb imatges)
Arduino i Touchpad Tic Tac Toe: 8 passos (amb imatges)

Vídeo: Arduino i Touchpad Tic Tac Toe: 8 passos (amb imatges)

Vídeo: Arduino i Touchpad Tic Tac Toe: 8 passos (amb imatges)
Vídeo: Arduino - Tic Tac Toe Game with Touchpad 2024, Juny
Anonim
Arduino i Touchpad Tic Tac Toe
Arduino i Touchpad Tic Tac Toe

O bé, un exercici de multiplexació d’entrada i sortida i treballar amb bits. I una presentació per al concurs Arduino.

Es tracta d’una implementació d’un joc de tic tac toe que utilitza una matriu de 3x3 de LEDs bicolors per a una pantalla, un senzill touchpad resistiu i un Arduino per lligar-ho tot. Per veure com funciona, mireu el vídeo: Què requereix aquest projecte: peces i consumibles Una placa perf (o placa de tires) Nou LEDs bicolors, càtode comú Nou resistències idèntiques, en el rang de 100-220 ohmis Sis resistències idèntiques Gamma de 10 kohm - 500 kohm Un polsador de doble tir Un munt de passadors de capçalera Un munt de filferro elèctric Una petita làmina quadrada d’acrílic transparent, de ~ 1 mm de gruix, 8 cm al lateral Cinta adhesiva clara Encongits de calor (opcional) són articles força habituals, el cost total no ha de superar els 20 dòlars EUA. La configuració d’eines One Arduino (Arduino Duemilanove, Arduino IDE, ordinador, cable USB) Eines elèctriques habituals (multímetre, pistola de soldar, retalladors de filferro, tallador de filferro). es troba a https://www.arduino.cc. Continuem amb la compilació.

Pas 1: Cablatge de la matriu LED

Cablatge de la matriu LED
Cablatge de la matriu LED
Cablatge de la matriu LED
Cablatge de la matriu LED

Perquè un LED s’encengui, els dos cables han d’estar connectats. Si dediquéssim un parell de pins a cadascun dels 18 LED (9 vermells, 9 verds), ens quedaria ràpidament sense pins a l’Arduino. No obstant això, amb el multiplexat, podrem abordar tots els LED amb només 9 pins. Per fer-ho, els LED es connecten de forma transversal, com es mostra a la primera figura. Els LED s’agrupen en columnes de tres i els seus càtodes s’agrupen en files de sis. Posant una línia d’ànode particular alta i una línia de càtode particular baixa i tenint una impedància elevada en la resta de línies d’ànode i càtode, podem seleccioneu quin LED volem il·luminar, ja que només hi ha un camí possible que pot prendre el corrent. Per exemple, a la segona figura, establint l’ànode verd 1 línia alta i la línia càtode 1 baixa, el LED verd inferior esquerre s’encén. El camí actual en aquest cas es mostra en blau. Però, i si voleu il·luminar més d’un LED en línies diferents? Utilitzarem la persistència de la visió per aconseguir-ho. En seleccionar parells de línies de LED molt ràpidament, es fa la il·lusió que tots els LED seleccionats s’encenen al mateix temps.

Pas 2: Disseny de matriu LED

Disseny de matriu LED
Disseny de matriu LED
Disseny de matriu LED
Disseny de matriu LED

El diagrama del circuit següent mostra com es connecten físicament els LED (G1-G9: LEDs verds, R1-R9: LEDs vermells). Aquest diagrama és per a LEDs vermells i verds únics, si utilitzeu LEDs vermells / verds de càtode comú bicolor, només hi ha una pota de càtode per parell vermell / verd que heu de connectar. de l'Arduino (pins 3, 5, 6, 9, 10, 11 al Duemilanove), de manera que puguem tenir efectes com la decoloració més endavant. Les línies de càtode van als pins 4, 7 i 8. Cadascuna de les línies de càtode i ànode té resistències de 100 ohms per protegir-les.

Pas 3: Direcció de la matriu LED

Per al codi tic tac toe, haurem de poder emmagatzemar la informació següent sobre els LED: - si un LED està encès o no - si està encès, si és vermell o verd. Una manera de fer-ho és emmagatzemar l'estat en una matriu de 9 cel·les, amb tres dígits per representar l'estat (0 = apagat, 1 = vermell activat, 2 = verd activat). Sempre que hàgim de comprovar els estats del LED, per exemple, per comprovar si hi ha una condició de guanyar, haurem de recórrer la matriu. Aquest és un mètode viable, però bastant maldestre. Un mètode més racional seria utilitzar dos grups de nou bits. El primer grup de nou bits emmagatzema l'estat d'encesa i apagada dels LED i el segon grup de nou bits emmagatzema el color. Aleshores, manipular els estats del LED simplement es converteix en una qüestió d’aritmètica i de canvi de bits. Aquí hi ha un exemple funcionat. Diguem que dibuixem gràficament la nostra quadrícula tic tac toe i primer fem servir 1s i 0s per representar l'estat d'encesa-apagada (1 està activat, 0 està apagat): 000 000 = matriu amb LED inferior esquerre il·luminat 100 100 010 = matriu amb diagonal Els LED s’encenen 001 Si enumerem les cel·les de la part inferior esquerra, podem escriure les representacions anteriors com una sèrie de bits. En el primer cas, seria 100000000 i, en el segon cas, seria 001010100. Si pensem en aquestes representacions binàries, llavors cada sèrie de bits es pot condensar en un sol nombre (256 en el primer cas, 84 en el segon cas). Per tant, en lloc d’utilitzar una matriu per emmagatzemar l’estat de la matriu, només podem utilitzar un sol número. De la mateixa manera, podem representar el color del LED de la mateixa manera (1 és vermell, 0 és verd). Primer suposem que tots els LED estan il·luminats (de manera que l’estat d’encesa i apagada es representa amb 511). La matriu següent representarà l’estat de color dels LED: 010 verd, vermell, verd 101 vermell, verd, vermell 010 verd, vermell, verd Ara, quan es visualitza la matriu LED, només hem de recórrer cadascun dels bits, primer en estat on-off i després en color. Per exemple, suposem que el nostre estat d’encesa i apagada és 100100100 i l’estat de color és 010101010. Aquí teniu el nostre algoritme per il·luminar la matriu LED: Pas 1. Feu una addició a bit de l’estat d’encesa i apagada amb un 1 binari (és a dir, bit emmascarament). Pas 2. Si és cert, el LED s’encén. Feu ara una addició a nivell de bits de l'estat de color amb un binari 1. Pas 3. Si és cert, il·lumineu el LED vermell. Si és fals, encén el LED verd. Pas 4. Canvieu tant l'estat d'encesa i apagat com l'estat de color, un bit cap a la dreta (és a dir, canviant de bits). Pas 5. Repetiu els passos 1 - 4 fins que s'hagin llegit els nou bits. Tingueu en compte que omplim la matriu cap enrere: comencem per la cel·la 9 i després tornem cap avall fins a la cel·la 1. A més, els estats d'encesa i apagat i de color s'emmagatzemen com un tipus enter sense signar (paraula) en lloc d'un tipus enter signat. Això es deu al fet que en canviar de bits, si no anem amb compte, podríem canviar sense voler el signe de la variable. S'adjunta el codi per il·luminar la matriu LED.

Pas 4: construcció del teclat tàctil

Construint el touch pad
Construint el touch pad
Construint el touch pad
Construint el touch pad
Construint el touch pad
Construint el touch pad
Construint el touch pad
Construint el touch pad

El touchpad està construït a partir d’una làmina d’acrílic prim, prou gran per superposar-se sobre la matriu LED. A continuació, enganxeu els fils de la fila i la columna sobre el full d’acrílic amb cinta transparent. La cinta transparent també s’utilitza com a espaiador aïllant entre els cables, a les interseccions. Assegureu-vos d’utilitzar eines netes per evitar que el greix dels dits arribi al costat enganxós de la cinta. Les taques d’empremtes digitals no només semblen lletges, sinó que fan que la cinta sigui menys enganxosa: retalleu un extrem de cadascuna de les línies i soldeu l’altre extrem amb un cable més llarg. Soldeu una resistència en línia amb els cables, abans de soldar els connectors. Les resistències que s’utilitzen aquí són 674k, però qualsevol valor entre 10k i 1M hauria d’estar bé. Les connexions a l’Arduino es fan mitjançant els 6 pins analògics, amb els pins 14-16 connectats a les files de la xarxa de filferro i els pins 17-19 connectats a les columnes.

Pas 5: el touch pad: com funciona

El Touch Pad: com funciona
El Touch Pad: com funciona
El Touch Pad: com funciona
El Touch Pad: com funciona

De la mateixa manera que hem utilitzat un multiplexor de travessers per configurar una matriu de LED amb pins mínims, podem utilitzar un multiplexor de travessers similar per configurar una matriu de sensors tàctils, que després podem utilitzar per activar els LED. El concepte d’aquest teclat tàctil és senzill. Es tracta essencialment d’una xarxa de filferro, amb tres cables nus que corren en files i tres cables nus que corren en columnes per sobre de les files. A cada punt d’intersecció hi ha un petit quadrat d’aïllament que impedeix que els dos cables es toquin. Un dit que toqui la intersecció entrarà en contacte amb els dos cables, donant lloc a una resistència enorme però finita entre els dos cables. Per tant, es pot fer que un corrent petit, però detectable, flueixi d’un cable a l’altre mitjançant el dit. Per determinar quina intersecció es va prémer, es va utilitzar el següent mètode: Pas 1: Establiu totes les línies de columna a OUTPUT LOW. Pas 2: definiu les línies de fila a INPUT, amb les extraccions internes activades. Pas 3: feu una lectura analògica a cada línia de fila fins que el valor caigui per sota d’un llindar determinat. Això us indica en quina fila es troba la intersecció premuda. Pas 4: Repetiu els passos 1-3, però ara amb les columnes com a entrades i les files com a sortides. Això us indica quina columna és la intersecció premuda. Per minimitzar els efectes del soroll, es fan diverses lectures i es fan una mitjana. El resultat mitjà es compara amb un llindar, ja que aquest mètode només es compara amb un llindar, no és adequat per detectar premses simultànies. Tanmateix, atès que el tic tac toe continua per torns, n'hi ha prou amb llegir una sola premsa. Adjuntem un esbós que il·lustra el funcionament del touchpad. Igual que amb la matriu LED, s'utilitzen bits per representar quina intersecció es va prémer.

Pas 6: ajuntar-ho tot

Posant-ho tot junt
Posant-ho tot junt

Ara que tots els components individuals estan acabats, és hora de posar-los tots junts. Superposeu la xarxa de filferro de la matriu LED. És possible que hàgiu de tornar a ordenar les numeracions de pins del codi de matriu de LED per sincronitzar-lo amb el sensor de xarxa de filferro. Assegureu la xarxa de filferro al seu lloc amb subjeccions o adhesius de la vostra elecció i enganxeu-la en un bonic tauler de joc. Afegiu un commutador entre el pin 12 i el terra de l’Arduino. Aquest commutador permet alternar entre el mode de 2 jugadors i el de 1 jugador (contra el microcontrolador).

Pas 7: Programació de Tic Tac Toe

S'adjunta el codi del joc. Primer descomptem el joc de tic tac toe en els seus diferents passos, en el mode de dos jugadors: Pas 1: El jugador A selecciona una cel·la no emplenada tocant una intersecció. Pas 2: el LED d’aquesta cel·la s’il·lumina amb el color A. Pas 3: comproveu si el jugador A. ha guanyat. Pas 4: el jugador B selecciona una cel·la sense emplenar. Pas 5: el LED d’aquesta cel·la s’il·lumina amb el color B Pas 6: comproveu si el jugador B ha guanyat. Pas 7: repetiu 1-6 fins que hi hagi una condició de guanyar o si s’omplen totes les cel·les. Llegir les cel·les: el programa passa entre la lectura de la quadrícula i la visualització de la matriu LED.. Mentre el sensor de xarxa no registri un valor diferent de zero, aquest bucle continuarà. Quan es prem una intersecció, la variable Pressed emmagatzema la posició de la cel·la premuda. Comprovació de si la cel·la no s’omple: quan s’obté una lectura de posició (variable Pressed), es compara amb l’estat actual de la cel·la (emmagatzemada a la variable GridOnOff) utilitzant una addició a bits. Si la cel·la premuda no està emplenada, procediu a encendre el LED, en cas contrari torneu a llegir les cel·les. Canviant els colors: Una variable booleana, Turn, s'utilitza per enregistrar de quin torn és. El color del LED triat quan es tria una cel·la està determinat per aquesta variable, que s’alterna cada vegada que es tria una cel·la. Comprovació d’una condició de guany: només hi ha 8 condicions de guany possibles, que s’emmagatzemen com a variables de paraula en una matriu (winArray). S’utilitzen dues addicions a bits per comparar les posicions de cel·la plenes d’un jugador amb les condicions de victòria. Si hi ha partit, el programa mostra una rutina de victòries, després de la qual cosa comença un joc nou. Comprovació de la condició d’empat: quan s’han registrat nou torns i encara no hi ha cap condició de victòria, el joc és un empat. A continuació, s’esvaeixen els LED i s’inicia un joc nou. Canviant al mode d’un jugador: si l’interruptor està en posició d’encès, el programa passa al mode d’un jugador, i el jugador humà comença primer. Al final del torn del jugador humà, el programa simplement tria una cel·la aleatòria. Viouslybviament, aquesta no és l'estratègia més intel·ligent.

Pas 8: Observacions i millores addicionals

Aquí hi ha un vídeo que mostra el mode d'un jugador, amb el programa que juga moviments totalment aleatoris: El programa que es mostra aquí és només una versió mínima i sense ossos. Es poden fer moltes altres coses: 1) Encendre els LED de tres en tres El codi actual només mostra un LED alhora. No obstant això, amb el cablejat que es mostra aquí, és possible encendre tots els LED connectats a una línia de càtode al mateix temps. Per tant, en lloc de recórrer totes les nou posicions, tot el que heu de fer és recórrer les tres línies de càtode. 2) Utilitzeu les interrupcions per mostrar els LED. parpellejant. Mitjançant l’ús d’interrupcions, es pot controlar amb precisió la sincronització dels LEDs i conduiria a una visualització més suau. reproductor de peus. Espero que us hagi agradat llegir aquest instructiu tant com m’he divertit treballant-hi.

Recomanat: