Table des matières:

Jeux Arduino avec écran LED en ligne : 7 étapes (avec photos)
Jeux Arduino avec écran LED en ligne : 7 étapes (avec photos)

Vidéo: Jeux Arduino avec écran LED en ligne : 7 étapes (avec photos)

Vidéo: Jeux Arduino avec écran LED en ligne : 7 étapes (avec photos)
Vidéo: #1 ARDUINO - Découverte et Premier Projet (Allumer une LED) 2024, Juillet
Anonim
Image
Image
Composants majeurs
Composants majeurs

aka LED Ladder Display Game System.

Un Attiny-85 équipé de matériel et de logiciels pour jouer à des jeux "vidéo" bourrés d'action, sur un écran LED en ligne.

Il dispose d'un affichage en échelle multiplexé à 12 LED et prend en charge jusqu'à 6 entrées de bouton et une sortie audio en option.

Il contient 4 jeux d'adresse, avec plusieurs niveaux de difficulté et quelques variantes (mis à jour à 16 jeux, lorsqu'il est utilisé avec un MCU ATMega).

[Vidéo]

Étape 1: Composants majeurs

J'ai construit mon projet de manière modulaire (deux assemblages distincts). Un sous-ensemble d'affichage principal; qui peut être utilisé seul. Et un sous-ensemble d'entrée Button. De cette façon, je peux réutiliser le bouton ou l'ensemble d'affichage dans un autre projet. Cela permet également des options de montage flexibles.

J'ai également amené la ligne de contrôle à un en-tête pour l'assemblage de l'échelle à LED afin que je puisse utiliser un Arduino Nano (ou un Uno), pour développer un logiciel pour celui-ci ainsi que pour l'utiliser dans d'autres projets. Un Digispark ne fonctionnera pas à cause des autres composants de son circuit imprimé.

J'ai choisi d'utiliser les mêmes affectations de broches pour l'échelle LED que dans les instructables précédents pour permettre à ceux qui ont déjà une telle implémentation matérielle d'utiliser facilement le logiciel dans cet instructable, même si je n'ai pas trouvé les affectations faites pour la logique la plus claire dans les logiciels.

Les deux lignes entre les modules sont PB4 et la masse. Comme tout ce qui se trouve sur l'assemblage à plusieurs boutons est constitué de résistances et de commutateurs, il ne dépend donc pas de la polarité, et l'inversion de la connexion n'a pas d'importance.

Avec la prise en charge de plus de boutons, une plus grande variété de jeux (ou d'applications) peut être implémentée. Deux des jeux de cette instructable sont mieux joués avec deux boutons. Les quatre boutons principaux permettent d'accéder directement à un jeu associé. Bientôt, je vais implémenter un jeu qui dépend de l'utilisation des quatre boutons principaux.

Ce projet utilise jusqu'à six boutons. Quatre principaux BTN 1-4, Ces boutons peuvent être détectés individuellement même lorsque deux d'entre eux sont enfoncés simultanément. Les deux autres sont des boutons spéciaux, d'abord il y a l'équivalent du bouton unique dans les projets précédents qui établit une connexion dure entre l'entrée PB4 à la terre, j'appelle cela BTN0, ou ESC car ce commutateur peut toujours être détecté et bloquera la détection de l'un des autres. L'autre touche spéciale est la touche de fonction, si elle est enfoncée lorsque BTN 0-4 est enfoncé, elle peut être détectée et utilisée pour modifier la fonctionnalité.

Dans ce sketch de jeu d'adresse, j'utilise:

  • FncKey+Btn1 retour au mode menu
  • FncKey + Btn2 niveau de difficulté avancé (si au plus haut, revenez au plus bas)
  • FncKey + Btn4 Pause instantanée (appuyez sur n'importe quelle touche pour annuler la pause)
  • FncKey + Btn 0 ou 3 ne sont pas définis.

Étape 2: Liste des pièces

Liste des pièces
Liste des pièces

Pièces requises

  • LED, rouges, jaunes, vertes et bleues comme celles-ci
  • Cartes de circuits imprimés articles similaires, vous devrez peut-être acheter une carte plus grande et la couper à la taille souhaitée.
  • broche dip socket articles similaires
  • Puce Attiny-85
  • résistants
  • Interrupteurs à bouton utilisés: boutons-poussoirs tactiles momentanés pour circuits imprimés de 12 x 12 x 8 mm et 6 x 6 x 6 mm

conseillé:

  • buzzer 5v, type actif
  • un bâton de Popsicle
  • Bande d'en-tête de broche de 2,54 mm
  • Fil de calibre 30 et outil d'enroulement de fil https://www.ebay.com/itm/351798901037le lien ci-dessus est un fil qui ressemble plus à 36 ga. J'aurais aimé connaître une telle offre pour de vrais 30 ga. câble

Étape 3: Faits saillants de la construction

Faits saillants de la construction
Faits saillants de la construction
Faits saillants de la construction
Faits saillants de la construction
Faits saillants de la construction
Faits saillants de la construction
Faits saillants de la construction
Faits saillants de la construction

Sur l'assemblage de la carte principale, j'ai électriquement le même que d'autres projets d'échelle à LED antérieurs, auxquels vous pouvez vous référer pour d'autres instructions de construction de base

Cependant, je n'utilise pas de résistance pull-up extérieure sur l'entrée analogique A2 (PB4), j'utilise également des LED rouges, jaunes, vertes et bleues, au lieu d'une seule couleur, ce qui est souhaitable pour certains des jeux que j'ai créés pour ce matériel.

Voici les affectations d'E/S comme prévu par les esquisses logicielles ci-jointes:

Projet MCU AT-85 Uno/Nano

Noms nom pin# nom de brd --------- ---- ---- --------- Rouge L1-3 PB3 2 D-11 Yel L4-6 PB0 5 D-8 Vert L7-9 PB1 6 D-9 Bleu L10-11 PB2 7 D-10 Ain PB4/A2 3 A-2 Audio PB5 1 D-3

La seule différence significative est que j'ai deux boutons câblés à PB4. Le premier va directement de PB4 à la terre mais sans résistance de rappel externe (j'appelle cela BTN0). J'ai aussi un interrupteur à bouton (que j'appelle BTN1) connecté à un 75Kohm en série à la masse. Cette carte principale peut être utilisée sans la carte d'assemblage "Bouton", mais avec des fonctionnalités limitées.

Les résistances de limitation de courant allant aux ensembles de LED doivent être choisies en fonction de la luminosité des différentes LED de couleur que vous utilisez et de la luminosité souhaitée. Je me suis retrouvé avec 91 Ohms pour le rouge, 75 jaune, 430 vert et 150 Ohms pour le bleu. Ces valeurs peuvent sembler faibles, mais rappelez-vous que les leds sont multiplexées (généralement sur beaucoup < 100% du temps)

J'ai utilisé des leds de 3 mm et je les ai un peu espacées. J'avais les jambes de la LED à cheval sur un bâton de Popsicle. De cette façon, ils ont tous résisté au même montant et surtout à tous les autres composants. J'ai l'intention, à un moment donné, de monter l'unité avec uniquement les LED dépassant d'un cadre.

J'ai choisi de câbler les interconnexions des leds. Sans une carte de circuit imprimé spéciale, c'est plus facile à faire que de souder dans des endroits restreints avec de nombreuses interconnexions; n'a pas tendance à produire des courts-circuits et est plus facile à recâbler en cas d'erreur. Avec tous les courants dans et autour du microcontrôleur dans les milliampères, un fil de 30 ga est largement suffisant.

Boutons et résistances associées:

J'ai conçu une configuration unique (une sorte de double Y) de résistances et de boutons, de sorte que le logiciel puisse discerner les pressions individuelles et doubles (théoriquement, toute combinaison de ces quatre boutons peut être identifiée). J'ai essayé plusieurs configurations avec une multitude de valeurs de résistance dans un tableur à la recherche de la meilleure configuration, puis je les ai simulées dans un logiciel en lui faisant essayer toutes les combinaisons de résistances possibles pour trouver l'ensemble (que j'utilise) qui produirait le maximum de différence minimale de lectures analogiques entre toutes les pressions sur un bouton simple et double. Je les ai arrangés pour que Btn1, Btn4 et Btn1+4 en particulier soient distincts.

Reportez-vous au schéma du réseau de boutons ci-dessus.

Vous devez couvrir tout le câblage qui se connecte à PB4 (et éventuellement les contacts et les résistances de commutation) avec du ruban isolant, de la colle chaude ou quelque chose d'autre qui ne conduit pas du tout, car une simple résistance en méga-ohms annulera la capacité de déterminer quel(s) commutateur(s) sont enfoncés; et tout contact de ce type que vous établiriez en tenant une assemblée le ferait.

Instructables associés plus tard:

Jeux à 4 boutons avec une entrée analogique/

Dual-Power-for-Your-Portable-Micro-Controller-Proj/

Boîtier-imprimé-en-3D-pour-console-d'affichage-LED-en-ligne-et/

Étape 4: Autres options et notes

Autres options et notes
Autres options et notes

Sortie audio en option

La sortie audio en option utilise PB5. J'ai connecté un buzzer 5v, en série avec une résistance de 150 Ohm pour limiter sa sortie par ailleurs bruyante et gênante. Je vous recommande d'utiliser 50-200 Ohm. On pourrait mettre en parallèle le buzzer avec un capuchon (2-10uf) pour le rendre moins rauque, ou utiliser un haut-parleur de 10 mm 32 ohms sorti d'un ensemble d'écouteurs stéréo bon marché, au lieu de la résistance et du buzzer. Je l'aime bien, pour les sons de jeu, mieux comme je l'ai.

Par défaut, l'Attiny-85 utilise PB5 comme réinitialisation, efficace signifie que l'audio fonctionnerait mais cela n'aura aucun effet néfaste sur toute autre opération. Lorsque vous utilisez un Nano ou Uno, l'audio fonctionnera (sortant de son D3). Pour obtenir de l'audio avec l'Attiny, vous devrez modifier la configuration des broches internes afin que le logiciel puisse utiliser PB5 comme sortie. Il y a des ramifications importantes à faire cela; veuillez vous référer à ceux-ci:

forum.arduino.cc/index.php?topic=178971.0

www.instructables.com/id/Simple-and-cheap-F…

et

Généralement, pendant le jeu, une erreur ou un échec provoquera un bip ou un court son de framboise. Il y a un air de félicitation joué lorsque vous terminez un niveau ou gagnez, comme au ping-pong. Je trouve que l'accompagnement audio augmente vraiment la joie de jouer.

Boutons de type contrôleur de jeu alternatif

Pour mes petits-enfants, qui sont rudes avec l'équipement, j'ai fabriqué des boutons séparés durables, Btn1 et Btn4, à l'extrémité de longs fils conducteurs. Regarde la photo. J'ai monté les boutons dans des poignées de tamisage; avec un 75Kohm en ligne avec Btn1 et un ~37Kohm en ligne avec Btn4. En série avec Btn4 j'ai en fait utilisé un 36K, un 33K ou même éventuellement un 39K pourrait être utilisé. Avec les boutons de piston externes à l'esprit, ce serait une bonne idée d'avoir un ensemble séparé de broches d'en-tête, pour connecter les boutons portables externes considérés comme Btn1 et Btn4.

Alimentation de qualité nécessaire

Pour une source d'alimentation, vous pouvez utiliser directement la sortie USB 5v d'un PC, d'une tablette, d'un chargeur mural, d'une banque d'alimentation ou d'une batterie 3,7 Li.

J'ai constaté que lors de l'alimentation de l'unité à partir de certains chargeurs USB et de plusieurs banques d'alimentation USB, je remarquais des scintillements et des ratés occasionnels et même des réinitialisations. Si vous rencontrez cela, trouvez une source d'alimentation avec une meilleure régulation, sinon l'ajout d'un grand condensateur (100-1000 uf) à travers +V à la terre peut aider.

Essai

J'ai également inclus un programme de test pour aider à valider et déboguer votre matériel. Le code est un travail en cours et a grand besoin d'être nettoyé. J'espère y arriver, mais en attendant, cela devrait répondre à vos besoins. Je ne l'ai récemment utilisé qu'avec un Nano pilotant les ensembles écran et clavier. Vous pouvez utiliser la plupart des boutons pour sélectionner des éléments dans le mode menu. Pour quitter à nouveau une démo/un test, appuyez à nouveau sur n'importe quel bouton. Pour quitter le test des boutons (#4), appuyez sur FncKey + Btn1 ou maintenez la touche EscKey enfoncée (mise à la terre PB4), ou réinitialisez l'alimentation.

En raison des différences dans les résistances internes du MCU et les tolérances de résistance, vous devrez peut-être effectuer quelques ajustements afin que toutes les pressions sur un seul ou deux boutons soient détectées correctement. Pour ce faire, utilisez le test-4 (pour le sélectionner, reportez-vous à la description du fonctionnement du menu ci-dessous) du programme de test. Notez que je n'ai pas utilisé de résistance pull-up externe car j'ai d'autres utilisations prévues pour l'entrée PB4 qui sont incompatibles avec tout pull up.

Étape 5: Présentation du logiciel

Le sketch LadderGames.ino implémente quatre jeux, dont des versions alternatives.

Le croquis peut être téléchargé et exécuté à partir d'un ATtiny-85, Nano, Uno, etc. Pour le programmer dans une puce Attiny, voir: https://www.instructables.com/id/Program-an-ATtiny… et/ou pour programmer votre puce ATtiny-85:

Changez l'horloge interne de l'ATtiny85 à 8MHz, car les performances sont souhaitées pour le jeu. Référer:

forum.arduino.cc/index.php?topic=276606.0

Cette esquisse doit être rétrocompatible avec la plupart des projets d'échelle menés par ATtiny-85 antérieurs, sans modification, mais aura des fonctionnalités limitées.

Fonctionnement des menus

Au démarrage, il y a un bilan de santé sous la forme d'un balayage des LED et d'un ensemble de bips. Ensuite, il passe en mode menu principal. Chaque ensemble de LED d'une couleur s'allume pendant quelques secondes de suite. Un jeu est sélectionné en appuyant sur un bouton alors qu'un poste associé est allumé, jeu 1: Rouge, jeu 2: Jaune, jeu 3: Vert, jeu 4: Bleu. En mode menu, Btn2, Btn3, Btn4 peut être enfoncé pour accéder directement aux jeux 2, 3, 4 respectivement. Une fois qu'un jeu a été sélectionné, vous devrez indiquer la variante que vous souhaitez. Pour chaque variante disponible, un ensemble de leds colorées clignotera. Appuyez simplement sur un bouton sur celui que vous voulez. Les variations, « versions », pour chaque jeu sont décrites plus en détail ci-dessous.

La première version des quatre jeux peut être jouée avec un seul bouton. Soit un câble entre PB4 et la terre (Btn-0) comme dans les instructables d'échelle à LED précédents, soit avec un interrupteur qui connecte une charge de 75k à la terre (Btn-1). L'un ou l'autre fera l'affaire dans les jeux lorsque les instructions parlent d'une pression sur un bouton non spécifique.

Pour quitter n'importe quel jeu, vous pouvez utiliser FncKey+Btn1, maintenez la touche EscKey (alias Btn0) enfoncée pendant 1 à 2 secondes ou éteignez puis rallumez.

Étape 6: Jouer au jeu

Jeu 1: Push-It

Il s'agit d'une adaptation de mon jeu « Push-It » d'un de mes précédents instructable

www.instructables.com/id/Play-a-Game-with-a…

Le but du jeu est d'augmenter le nombre de clignotements et le nombre de LED allumées au maximum. Push-It démarre avec un certain nombre de flashs, qui se répètent ensuite. Si vous appuyez sur le bouton après le dernier flash de la série et lorsqu'un autre flash existe potentiellement, la LED suivante s'allumera et le nombre de flash augmentera de un. Mais si vous « poussez » avant ou après la période de temps d'un éventuel flash supplémentaire, le nombre de flashs dans l'ensemble sera réduit.

Chaque fois que vous parvenez à augmenter le nombre de flashs, le niveau de difficulté augmente à mesure que le timing s'accélère un peu, ce qui rend de plus en plus difficile l'obtention d'un nombre de flashs plus élevé.

Le numéro de comptage actuel est stocké dans la mémoire EEPROM pour un redémarrage ultérieur au même niveau.

Jeu 2: Ping-Pong

Grand (bien que le seul) jeu compétitif à deux joueurs ici; où la balle (un seul coup de lumière) va d'un côté à l'autre, de plus en plus vite, à chaque fois qu'elle est « frappée ».

J'ai d'abord mis en œuvre ce jeu de lumières à une seule rangée sur les boutons lumineux du panneau avant d'un super-mini ordinateur aérospatial dans les années 1970.

Pour frapper la balle d'avant en arrière, la raquette appropriée doit la frapper (bouton enfoncé) lorsqu'elle est en position finale (dernière LED). Le premier côté à rater perd et les voyants du côté gagnant clignotent.

Il existe deux variantes, l'une ne nécessitant qu'un seul bouton (Btn 0 ou 1), qui frappera la balle à chaque extrémité; et une deuxième version, pour deux personnes en tête-à-tête, qui nécessite deux boutons; bouton 1 sur le côté gauche et bouton 4 ou 0 de l'autre. L'utilisation des boutons 1 et 4 est préférable, car ils n'interfèrent pas les uns avec les autres; chacun peut être frappé pour renvoyer la balle depuis son extrémité, quel que soit l'état de l'autre bouton.

Le vainqueur d'un rallye est toujours le serveur du suivant.

Jeu 3: Galerie de Tir

Tirez sur toutes les cibles (lumières) pour terminer un niveau. Dans chaque niveau supérieur, l'action est plus rapide.

Il existe deux versions; un où le site est fixe et les cibles se déplacent et un autre où le site se déplace et les cibles sont immobiles. Dans chaque cas, un coup assomme une lumière cible; et un échec fait apparaître une cible. Lorsqu'une cible est dans le viseur, le viseur s'éclaire plus fort, sinon il est faible.

Dans la première version, le viseur commence à gauche (en bas) et balaye à droite. Dans la version 2, le viseur est fixé au milieu tandis que la cible se déplace de droite à gauche. En regardant le code, il existe des versions fantomatiques 3 et 4 qui pourraient être activées, mais vous mettez votre propre bien-être à vos risques et périls.

Jeu 4: JumpMan

L'idée est que vous parcourez un niveau de jeu où apparaissent des objets sur lesquels vous devez sauter, car au fur et à mesure que vous progressez, ils arrivent plus rapidement. Dans une autre version du jeu, il y a aussi des objets au-dessus de la tête sous lesquels vous devez vous cacher.

Dans la première version, il n'y a que des objets à sauter. Pour sauter, vous devez appuyer sur le bouton lorsque l'objet atteint la dernière cellule à gauche; qui s'éclaircit lorsque cela se produit. Pour sauter 2 objets consécutifs ou plus, vous devez sauter (appuyer) sur le premier et maintenir le bouton enfoncé pour le reste.

Dans la version 2, des objets au-dessus de la tête (clignotants) sont ajoutés. Ceux-ci sont sautés en sautant dans la cellule précédente et relâchés pendant qu'il se trouve dans la cellule finale. Un seul overhead peut clignoter à la fois, donc une fois que l'un d'eux est passé, vous pouvez en voir un autre (pas clignotant avant) nu sur vous. Il n'y aura jamais de frais généraux consécutifs mais ils peuvent être adjacents à un ou plusieurs objets de saut (de type rocher).

Dans la version 3 du jeu, vous devez utiliser un bouton séparé pour les objets suspendus (Btn-2, 4 ou 0 au choix); les sauts nécessitent alors Btn-1.

Une fois que vous avez réussi à dépasser quatre objets de plus que vous n'avez échoué, vous avancez de niveau; il y a des félicitations sonores et visuelles, puis une reprise à un rythme plus élevé. Obtenir par un ensemble d'objets consécutifs compte comme un objet individuel.

Je vous conseille d'imprimer les règles de fonctionnement des jeux et de les relire avant de jouer à un jeu auquel vous n'avez pas joué récemment. Sinon, vous pouvez vous frustrer; pensant que le jeu ne fonctionne pas correctement alors que c'est le cas, mais que vous et le jeu avez des attentes et des manières différentes. Moi-même, j'ai été victime de cela plus d'une ou deux fois.

Étape 7: Mises à jour, plus de jeux

Image
Image

J'ai fabriqué un boîtier de console imprimé en 3D pour abriter l'affichage et les boutons de l'échelle à LED en ligne.

J'ai conçu plus de jeux qui utilisent ce matériel. Découvrez-les et amusez-vous:

De nouveaux jeux de 'Whack a Mole' à 'Tug of War'

Déc. 2016. Maintenant, à la fin du lien ci-dessus, il existe une version unifiée du code comprenant les 12 jeux.

17 février 2017: Voici le dernier ensemble de jeux pour ce projet, maintenant avec 16 jeux (croquis ci-dessous). Cela fonctionnera sur n'importe quelle implémentation MCU avec 32 Ko de mémoire de programme flash. Bien que n'importe lequel à 3 ou 4 des 16 jeux puisse être mis dans un ATtiny. Je recommande d'utiliser les arduinos Nano 3. Les 4 derniers jeux ajoutés sont les courses 'Le Mans', le concours de peinture au pistolet 'Spray', le tir au panier de basket 'PIG', 'BiFunc' un jeu-questionnaire sur les opérations binaires.

Avec un jeu plus important et plus diversifié de ces jeux, des améliorations de leurs capacités de jeu, le plaisir pour tous les joueurs de niveau est possible. Je pense qu'il y a beaucoup de place pour l'amélioration dans les courses du Mans via la conception de la piste et le timing du jeu.

J'ai écrit environ 10 autres activités/jeux/fonctions, dont certaines j'espère rendre disponibles vers l'automne 2017.

De plus, ces jeux à une ligne peuvent être modifiés pour un écran LCD 2x16, avec une ligne d'objets de jeu et une autre pour du texte. J'en ai fait un peu, mais comme je suis soutenu par des projets pour autant que je sache, je ne sais pas quand ni si j'y arriverais. Donc, si quelqu'un est motivé pour adopter et optimiser ces jeux pour un écran LCD 2x16, partagez-le avec moi et les autres.

Outre les 4 nouveaux jeux ici dans Menu_16Games.ino, j'ai joint mon projet et j'ai créé des instructables connexes: Boîtier de console de jeu LED en ligne et alimentant votre projet MCU portable

J'espère que beaucoup prendront le temps et… PROFITEZ de ces jeux.

Jeu de groupe: 1– Rouge 2- Jaune 3 – Vert 4 – Bleu

1 rouge PushIt PingPong ShootEmUp JumpMan 2 Yel QuickDraw Tug_a_War Chicken Hot_Hands 3 Grn Le_Mans Spray PIG BiFunc 4 Blu SimonSays Whack_Mole Sea_Hunt Flip_d

2 septembre 2017: amélioration de la capacité de travail avec de vieux boutons de joystick externes bruyants et sales, dans le jeu tête-tête (groupe 2).

13 décembre 2017: amélioration de la gestion du rebond du bouton et de l'établissement de la mesure, résolution de problèmes mineurs. cette action de jeu rapide a été compromise.

Avr 2018: J'ai découvert que les coupleurs à compression 5/8 font d'excellents corps pour les boutons externes de style piston. Comme mes enfants aiment en utiliser une paire, j'ai ajouté des broches d'en-tête afin de connecter facilement deux d'entre eux (comme Btn1 et Btn4).

Notez que j'ai créé un autre projet, en octobre dernier, qui est construit sur le matériel de cette instructable. C'est dans l'esprit d'Halloween et peut être très amusant, surtout pour les enfants. Instructable: Dispositifs influencés par la psyché fantomatique

Conseillé: