Table des matières:

Arduino et Touchpad Tic Tac Toe : 8 étapes (avec photos)
Arduino et Touchpad Tic Tac Toe : 8 étapes (avec photos)

Vidéo: Arduino et Touchpad Tic Tac Toe : 8 étapes (avec photos)

Vidéo: Arduino et Touchpad Tic Tac Toe : 8 étapes (avec photos)
Vidéo: Arduino - Tic Tac Toe Game with Touchpad 2024, Septembre
Anonim
Arduino et Touchpad Tic Tac Toe
Arduino et Touchpad Tic Tac Toe

Ou, un exercice de multiplexage d'entrée et de sortie, et de travail avec des bits. Et une soumission pour le concours Arduino.

Il s'agit d'une implémentation d'un jeu de morpion utilisant un réseau 3x3 de LED bicolores pour un écran, un simple pavé tactile résistif et un Arduino pour tout lier ensemble. Pour voir comment cela fonctionne, regardez la vidéo:Ce que nécessite ce projet:Pièces et consommables Une carte perf (ou carte à ruban) Neuf LED bicolores, cathode commune Neuf résistances identiques, dans la gamme 100-220 ohm Six résistances identiques, dans le Gamme 10kohm - 500kohm Un interrupteur unipolaire, double jet Un tas de broches d'en-tête Un tas de fil électrique Une petite feuille carrée d'acrylique transparent, ~ 1 mm d'épaisseur, 8 cm de côté Ruban adhésif transparent Thermorétractables (facultatif) Tout ce qui précède sont des articles assez courants, le coût total ne doit pas dépasser 20 USD. Outils Une configuration Arduino (Arduino Duemilanove, Arduino IDE, ordinateur, câble USB) Outils électriques habituels (multimètre, pistolet à souder, cisailles, coupe-fil) Tout ce qui concerne Arduino peut être trouvé sur https://www.arduino.cc. En avant la construction !

Étape 1: Câblage de la matrice LED

Câblage de la matrice LED
Câblage de la matrice LED
Câblage de la matrice LED
Câblage de la matrice LED

Pour qu'une LED s'allume, ses deux fils doivent être connectés. Si nous devions dédier une paire de broches à chacune des 18 LED (9 rouges, 9 vertes), nous serions rapidement à court de broches sur l'Arduino. Cependant, avec le multiplexage, nous pourrons adresser toutes les LED avec seulement 9 broches ! Pour ce faire, les LED sont câblées en crossbar, comme le montre la première figure. Les LED sont regroupées en colonnes de trois et leurs cathodes sont regroupées en rangées de six. En réglant une ligne d'anode particulière à un niveau élevé et une ligne de cathode particulière à un niveau bas, et en ayant une impédance élevée sur toutes les autres lignes d'anode et de cathode, nous pouvons sélectionnez la LED que nous voulons allumer, car il n'y a qu'un seul chemin possible que le courant peut emprunter. Par exemple, dans la deuxième figure, en réglant la ligne d'anode verte 1 haute et la ligne cathode 1 basse, la LED verte en bas à gauche s'allume. Le chemin actuel dans ce cas est indiqué en bleu. Mais que se passe-t-il si vous souhaitez allumer plus d'une LED sur des lignes différentes ? Nous utiliserons la persistance de la vision pour y parvenir. En sélectionnant des paires de lignes de LED très très rapidement, cela donne l'illusion que toutes les LED sélectionnées sont allumées en même temps.

Étape 2: Disposition de la matrice LED

Disposition de la matrice LED
Disposition de la matrice LED
Disposition de la matrice LED
Disposition de la matrice LED

Le schéma de circuit ci-dessous montre comment les LED sont physiquement câblées (G1-G9: LED vertes, R1-R9: LED rouges). Ce schéma est pour les LED rouges et vertes simples, si vous utilisez des LED rouges/vertes à cathode commune bicolore, il n'y a qu'une seule branche de cathode par paire rouge/vert que vous devez câbler. Les lignes d'anode rouge et verte vont dans les broches PWM de l'Arduino (broches 3, 5, 6, 9, 10, 11 sur le Duemilanove), afin que nous puissions avoir des effets comme la décoloration plus tard. Les lignes cathodiques vont dans les broches 4, 7 et 8. Chacune des lignes cathodiques et anodiques a des résistances de 100 ohms pour la protection.

Étape 3: Adressage de la matrice LED

Pour le code tic tac toe, nous aurons besoin de pouvoir stocker les informations suivantes sur les LED: - si une LED est allumée ou non - si allumée, si elle est rouge ou verte Une façon de faire est de stocker l'état dans un tableau de 9 cellules, en utilisant trois chiffres pour représenter l'état (0 = éteint, 1 = rouge allumé, 2 = vert allumé). Chaque fois que nous devons vérifier les états de la LED, par exemple, pour vérifier s'il y a une condition de victoire, nous devrons parcourir le tableau. C'est une méthode pratique, mais plutôt maladroite. Une méthode plus simple consisterait à utiliser deux groupes de neuf bits. Le premier groupe de neuf bits stocke l'état marche-arrêt des LED, et le deuxième groupe de neuf bits stocke la couleur. Ensuite, la manipulation des états des LED devient simplement une question d'arithmétique binaire et de décalage. Voici un exemple travaillé. Disons que nous dessinons graphiquement notre grille de tic tac toe, et utilisons d'abord des 1 et des 0 pour représenter l'état marche-arrêt (1 est allumé, 0 est éteint): 000 000 = matrice avec LED en bas à gauche allumée 100 100 010 = matrice avec diagonale LED allumées 001 Si nous énumérons les cellules en partant du bas à gauche, nous pouvons écrire les représentations ci-dessus sous la forme d'une série de bits. Dans le premier cas, ce serait 100000000, et dans le second cas, ce serait 001010100. Si nous les considérons comme des représentations binaires, alors chaque série de bits peut être condensée en un seul nombre (256 dans le premier cas, 84 dans le second cas). Ainsi, au lieu d'utiliser un tableau pour stocker l'état de la matrice, nous pouvons simplement utiliser un seul nombre ! De même, nous pouvons représenter la couleur de la LED de la même manière (1 est rouge, 0 est vert). Supposons d'abord que toutes les LED sont allumées (donc l'état marche-arrêt est représenté par 511). La matrice ci-dessous représentera alors l'état de couleur des LED: 010 vert, rouge, vert 101 rouge, vert, rouge 010 vert, rouge, vert Maintenant, lors de l'affichage de la matrice LED, il suffit de parcourir chacun des bits, d'abord dans l'état on-off, puis dans l'état de couleur. Par exemple, disons que notre état marche-arrêt est 100100100, et l'état de couleur est 010101010. Voici notre algorithme pour allumer la matrice LED: Étape 1. Faites une addition au niveau du bit de l'état marche-arrêt avec un 1 binaire (c'est-à-dire masquage). Étape 2. Si c'est vrai, la LED est allumée. Faites maintenant une addition au niveau du bit de l'état de la couleur avec un binaire 1. Étape 3. Si c'est vrai, allumez la LED rouge. Si c'est faux, allumez la LED verte. Étape 4. Décalez à la fois l'état marche-arrêt et l'état de couleur, d'un bit vers la droite (c'est-à-dire décalage de bit). Étape 5. Répétez les étapes 1 à 4 jusqu'à ce que les neuf bits aient été lus. Notez que nous remplissons la matrice à l'envers - nous commençons par la cellule 9, puis revenons à la cellule 1. De plus, les états marche-arrêt et couleur sont stockés en tant que type entier non signé (mot) au lieu d'un type entier signé. C'est parce que dans le décalage de bits, si nous ne faisons pas attention, nous pourrions par inadvertance changer le signe de la variable. Ci-joint le code pour allumer la matrice LED.

Étape 4: Construction du pavé tactile

Construire le pavé tactile
Construire le pavé tactile
Construire le pavé tactile
Construire le pavé tactile
Construire le pavé tactile
Construire le pavé tactile
Construire le pavé tactile
Construire le pavé tactile

Le pavé tactile est construit à partir d'une feuille d'acrylique mince, assez grande pour recouvrir la matrice LED. Ensuite, scotchez les fils des rangées et des colonnes sur la feuille acrylique à l'aide de ruban transparent. Du ruban transparent est également utilisé comme espaceur isolant entre les fils, aux intersections. Assurez-vous d'utiliser des outils propres pour éviter que la graisse des doigts ne pénètre sur le côté collant du ruban. Les taches d'empreintes digitales ont non seulement l'air laides, mais rendent le ruban moins collant. Coupez une extrémité de chacune des lignes et soudez l'autre extrémité à un fil plus long. Soudez une résistance en ligne avec les fils, avant de souder sur les connecteurs. Les résistances utilisées ici sont de 674k, mais toute valeur comprise entre 10k et 1M devrait convenir. Les colonnes.

Étape 5: Le pavé tactile - Comment ça marche

Le pavé tactile - Comment ça marche
Le pavé tactile - Comment ça marche
Le pavé tactile - Comment ça marche
Le pavé tactile - Comment ça marche

Tout comme nous avons utilisé un multiplexeur crossbar pour configurer une matrice de LED avec un minimum de broches, nous pouvons utiliser un multiplexeur crossbar similaire pour configurer un réseau de capteurs tactiles, que nous pouvons ensuite utiliser pour activer les LED. Le concept de ce pavé tactile est simple. Il s'agit essentiellement d'une grille de fils, avec trois fils nus en rangées et trois fils nus en colonnes au-dessus des rangées. À chaque point d'intersection se trouve un petit carré d'isolant qui empêche les deux fils de se toucher. Un doigt touchant l'intersection entrera en contact avec les deux fils, ce qui entraînera une résistance énorme mais finie entre les deux fils. Un courant faible, mais détectable, peut donc être amené à circuler d'un fil à l'autre, via le doigt. Étape 2: définissez les lignes de ligne sur INPUT, avec les pullups internes activés. Étape 3: effectuez une lecture analogique sur chaque ligne de ligne jusqu'à ce que la valeur tombe en dessous d'un seuil donné. Cela vous indique dans quelle ligne se trouve l'intersection enfoncée. Étape 4: Répétez les étapes 1 à 3, mais maintenant avec les colonnes comme entrées et les lignes comme sorties. Cela vous indique dans quelle colonne se trouve l'intersection enfoncée. Pour minimiser les effets du bruit, un certain nombre de lectures sont effectuées puis moyennées. Le résultat moyenné est ensuite comparé à un seuil. Étant donné que cette méthode ne vérifie qu'un seuil, elle ne convient pas pour détecter les appuis simultanés. Cependant, étant donné que le tic tac toe se déroule à tour de rôle, la lecture d'une seule pression est suffisante. Vous trouverez ci-joint un croquis illustrant le fonctionnement du pavé tactile. Comme avec la matrice LED, des bits sont utilisés pour représenter l'intersection qui a été enfoncée.

Étape 6: Tout assembler

Tout mettre ensemble
Tout mettre ensemble

Maintenant que tous les composants individuels sont terminés, il est temps de les assembler. Superposez la grille de fils sur la matrice LED. Vous devrez peut-être réorganiser la numérotation des broches dans le code de la matrice LED pour le synchroniser avec le capteur de grille métallique. Fixez la grille métallique en place avec des fixations ou des adhésifs de votre choix et collez-la sur une belle planche de jeu. Ajoutez un interrupteur entre la broche 12 et la masse de l'Arduino. Ce commutateur permet de basculer entre le mode 2 joueurs et le mode 1 joueur (vs le microcontrôleur).

Étape 7: Programmation du Tic Tac Toe

Ci-joint le code du jeu. Décomposons d'abord le jeu de morpion en ses différentes étapes, dans le mode à deux joueurs: Étape 1: Le joueur A choisit une cellule vide en touchant une intersection. Étape 2: La LED de cette cellule s'allume avec la couleur A. Étape 3: Vérifiez si le joueur A a gagné. Étape 4: Le joueur B choisit une cellule non remplie. Étape 5: La LED de cette cellule s'allume avec la couleur B. Étape 6: Vérifiez si le joueur B a gagné. Étape 7: Répétez 1 à 6 jusqu'à ce qu'il y ait une condition de victoire, ou si toutes les cellules sont remplies. Lecture des cellules: Le programme boucle entre la lecture de la grille et l'affichage de la matrice LED. Tant que le capteur de grille n'enregistre pas de valeur différente de zéro, cette boucle continuera. Lorsqu'une intersection est pressée, la variable Pressé stocke la position de la cellule pressée. Vérifier si la cellule n'est pas remplie: Lorsqu'une lecture de position est obtenue (variable Pressé), elle est comparée à l'état actuel de la cellule (stocké dans la variable GridOnOff) en utilisant une addition au niveau du bit. Si la cellule Pressé n'est pas remplie, alors passez à l'allumage de la LED, sinon retournez à la lecture des cellules. Basculer les couleurs: Une variable booléenne, Turn, permet d'enregistrer à qui est le tour. La couleur de la LED choisie lorsqu'une cellule est sélectionnée est déterminée par cette variable, qui alterne à chaque fois qu'une cellule est choisie. Vérification d'une condition de victoire: il n'y a que 8 conditions de victoire possibles, et celles-ci sont stockées sous forme de variables de mot dans un tableau). Deux ajouts au niveau du bit sont utilisés pour comparer les positions de cellules remplies d'un joueur aux conditions de victoire. S'il y a un match, alors le programme affiche une routine de victoire, après quoi il commence une nouvelle partie. Vérification d'une condition de match nul: Lorsque neuf tours ont été enregistrés et qu'il n'y a toujours pas de condition de victoire, alors le jeu est un match nul. Les LED s'éteignent ensuite et une nouvelle partie démarre. Passage en mode un joueur: Si l'interrupteur est en position marche, le programme passe en mode un joueur, le joueur humain commençant en premier. À la fin du tour du joueur humain, le programme choisit simplement une cellule au hasard. Évidemment, ce n'est pas la stratégie la plus intelligente !

Étape 8: Remarques et améliorations supplémentaires

Voici une vidéo montrant le mode un joueur, avec le programme jouant des mouvements totalement aléatoires: Le programme montré ici n'est qu'une version minimale et rudimentaire. Beaucoup d'autres choses peuvent être faites avec ceci: 1) Allumer les LED trois à la fois Le code actuel n'affiche qu'une LED à la fois. Cependant, avec le câblage montré ici, il est possible d'allumer toutes les LED connectées à une ligne cathodique en même temps. Ainsi, au lieu de parcourir les neuf positions, tout ce que vous avez à faire est de parcourir les trois lignes cathodiques.2) Utilisez des interruptions pour afficher les LEDSelon la routine d'affichage des LED et la quantité de traitement, les LED peuvent afficher un certain degré de vacillant. En utilisant des interruptions, la synchronisation des LED peut être contrôlée avec précision et conduirait à un affichage plus fluide.3) Un lecteur informatique plus intelligentLe code actuel ne prend que quelques ko, laissant un peu plus pour la mise en œuvre d'un ordinateur plus intelligent tic tac joueur d'orteil. J'espère que vous avez apprécié la lecture de cette instructable autant que je me suis amusé à travailler dessus !

Conseillé: