Table des matières:

Console Arduino VGA avec cinq jeux : 4 étapes
Console Arduino VGA avec cinq jeux : 4 étapes

Vidéo: Console Arduino VGA avec cinq jeux : 4 étapes

Vidéo: Console Arduino VGA avec cinq jeux : 4 étapes
Vidéo: Raspberry pi 5 inch HDMI Screen Installation | #Shorts 2024, Juillet
Anonim
Image
Image
Console Arduino VGA avec cinq jeux
Console Arduino VGA avec cinq jeux
Console Arduino VGA avec cinq jeux
Console Arduino VGA avec cinq jeux

Dans mes précédents Instructables, j'ai reproduit des versions simplifiées de certains des jeux d'arcade classiques les plus populaires, au moyen d'un Arduino nu et de quelques autres composants. Plus tard, j'ai réuni cinq d'entre eux dans un seul croquis. Ici, je vais montrer comment vous pouvez construire une console simple qui peut jouer à Pong, Breakout, Bomber, Tetris et un jouet de dessin inspiré d'Etch-a-Sketch. Cette console peut également être utilisée pour jouer à Snake, et à deux autres jeux écrits par d'autres auteurs: Bit Ninja de Sandro Maffiodo aka "Smaffer" et Stacker de Nikita Kurylev.

La principale caractéristique est la génération d'un signal VGA, grâce à la bibliothèque VGAx, la console a donc besoin d'un moniteur VGA. Mon objectif, comme d'habitude, est d'éviter tout "composant spécial" pour le construire, vous n'avez alors pas besoin de circuits intégrés ou de boucliers de support ! Les seuls composants sont deux potentiomètres, cinq boutons, quelques résistances et un connecteur DSUB15 (VGA). Un haut-parleur piézo est facultatif. Vous pouvez voir à quoi ressemblent ces jeux dans les images de cette page.

La bibliothèque VGAx permet d'utiliser quatre couleurs avec une résolution de 120 x 60 pixels, pas beaucoup mais suffisante pour cette console de jeu rétro. Le graphisme est brut mais, grâce à l'utilisation des potentiomètres, les jeux se déroulent sans problème. Des effets sonores simples sont également disponibles.

Étape 1: Comment créer votre propre console Arduino VGA

Comment construire votre propre console Arduino VGA
Comment construire votre propre console Arduino VGA
Comment construire votre propre console Arduino VGA
Comment construire votre propre console Arduino VGA

Téléchargez d'abord les codes ArduinoVGAgame.ino et/ou Snake.ino en bas de cette page et copiez-les sur votre PC dans un répertoire du même nom. Téléchargez la bibliothèque VGAx à partir de ce lien sur GitHub. Le plus simple est de le copier dans le sous-dossier du logiciel Arduino nommé "libraries", pour être immédiatement reconnu.

IMPORTANT: cette bibliothèque fonctionne pour Arduno IDE 1.6.4 mais elle n'est pas entièrement compatible avec les versions plus anciennes ou plus récentes.

Téléchargez le code dans votre carte Arduino (j'ai testé à la fois Uno et Nano). Un avertissement pour mémoire disponible faible est normal. Si vous n'avez pas d'autres erreurs, tout va bien et vous pouvez immédiatement commencer à créer votre propre console.

Pour cela il vous faut:

  • un Arduino Uno Rev. 3 ou Arduino Nano 3.x (ATmega328)
  • un connecteur DSUB15, c'est-à-dire un connecteur VGA femelle ou un câble VGA à couper.
  • résistances: 2 x 68 Ohm et 2 x 470 Ohm et 5 x 1 à 2 kOhm
  • deux potentiomètres linéaires de 10 kOhm (des valeurs similaires conviennent également)
  • cinq boutons
  • un bout de câble
  • une ou deux jolies boites pour mettre tous les composants.

Facultatif:

  • une planche à pain ou une planche à bande
  • un haut-parleur piézo

Le schéma est rapporté en haut de cette étape, avec un exemple de « console » finie.

le schéma montre comment connecter un bouton et un potentiomètre. Plus précisément, vous devez connecter cinq boutons aux broches 5, 10, 11, 12 et 13 respectivement. L'action effectuée par chaque bouton est décrite dans le tableau en haut à droite du schéma. Sur la gauche, il est montré comment connecter un potentiomètre (vous avez besoin de deux potentiomètres sur les broches A1 et A2). Le haut-parleur doit être connecté à la broche analogique A0.

J'ai placé la carte Arduino avec le connecteur VGA dans une boîte en bois, qui contient également le potentiomètre du premier lecteur et quatre boutons, tandis que le potentiomètre du deuxième lecteur et son bouton de démarrage sont dans une boîte séparée et plus petite.

Si vous aimez ce jouet et que vous décidez de le reproduire, j'apprécie que vous écriviez un commentaire ou envoyez une photo dans la section commentaire ci-dessous.

Étape 2: Jeux d'autres auteurs

Sandro Maffiodo a récemment publié le jeu BitNinja. Vous pouvez trouver plus d'informations ici et télécharger le code ici.

Pour utiliser ma console, il suffit de remapper le bouton dans son code comme suit:

#define BTN_UP 11 (au lieu de 13)

#define BTN_LEFT 10 (au lieu de 12)

#define BTN_RIGHT 12 (au lieu de 11)

Stacker, de Nikita Kurylev, est disponible ici. Plus d'informations ici.

Encore une fois, vous devez remapper un bouton, dans une partie différente du code: remplacez simplement digitalRead(2) par digitalRead(13)

Étape 3: Annexe 1: Plus de détails sur la façon de construire les contrôleurs

Annexe 1: Plus de détails sur la façon de construire les contrôleurs
Annexe 1: Plus de détails sur la façon de construire les contrôleurs
Annexe 1: Plus de détails sur la façon de construire les contrôleurs
Annexe 1: Plus de détails sur la façon de construire les contrôleurs
Annexe 1: Plus de détails sur la façon de construire les contrôleurs
Annexe 1: Plus de détails sur la façon de construire les contrôleurs
Annexe 1: Plus de détails sur la façon de construire les contrôleurs
Annexe 1: Plus de détails sur la façon de construire les contrôleurs

Vous pouvez réaliser le contrôleur de différentes manières, en fonction du matériel disponible et de vos goûts.

J'aime les réaliser avec des caisses en bois (voir les photos dans cette page). Un boitier principal pour l'Arduino, le connecteur VGA et les boutons et potentiomètre du premier lecteur; un deuxième (plus petit) juste pour le bouton et la molette du deuxième joueur (nécessaire pour Pong et le jouet de dessin). Une autre possibilité est de tout mettre dans une seule boîte plus grande.

Je recommande d'abord de connecter le port VGA. Dans les première et deuxième images, vous pouvez voir quelques détails: notez les deux résistances de 470 Ohm pour le rouge et le vert connectées aux broches 6 et 7 respectivement, et deux 68 Ohm aux broches 3 et 9 pour le signal de synchronisation horizontale et verticale.

Vous pouvez choisir différentes combinaisons de couleurs en fonction des broches que vous connectez sur le connecteur VGA DSUB15, les broches 1, 2 et 3 représentent respectivement le rouge, le vert, le bleu (RVB). J'ai connecté les broches 1 et 2, j'ai donc la combinaison de couleurs suivante: (0, 0) = noir; (1, 0) = rouge; (0, 1) = vert; (1, 1) = jaune.

Pour toutes les différentes possibilités, je suggère de lire les détails dans la page où vous téléchargez les bibliothèques VGAx.

Dès que le connecteur VGA est prêt, vous pouvez préparer tous les autres câbles pour les boutons, les roues et le haut-parleur (voir photo 2).

Maintenant, il suffit de tout assembler: rappelez-vous que chaque broche de bouton doit être connectée à la terre via une résistance de 1 ou 2 kOhm, sinon lorsque le bouton est ouvert, l'état de la broche peut être indéfini. Cela signifie que si la broche est laissée déconnectée, vous pouvez avoir une tension aléatoire (statique) qui peut l'activer. Voir pour plus de deteils le schéma dans la deuxième étape de cette instructable.

La dernière étape consiste à tout remettre en place. J'ai utilisé le pistolet à colle chaude, mais vous pouvez utiliser votre méthode préférée.

Étape 4: Annexe 2: Quelques considérations sur les limites de mémoire

Il est étonnant qu'un simple Arduino soit capable de générer un signal VGA et tous ces jeux ensemble. Le vrai goulot d'étranglement est le manque de SRAM. Le microcontrôleur AVR ne dispose que de 2048 octets disponibles pour stocker et manipuler les variables, et la bibliothèque VGAx stocke les variables d'écran dans un framebuffer de 120x60 pixels où chaque pixel a besoin de 2 bits (4 couleurs), pour un total de 1800 octets. Cela signifie qu'il ne reste que 248 octets pour les variables d'esquisse. De plus, d'après mon expérience, il faut laisser au moins 100 octets libres pour éviter les instabilités. En utilisant plus de 1950 octets de mémoire dynamique, le microcontrôleur commence à montrer un comportement étrange et imprévisible.

Cela signifie que toutes les variables doivent être partagées entre les différents jeux, ce qui rend le code assez illisible et difficile à déboguer. Il ne s'agit pas seulement d'"ajouter un nouveau jeu" au sketch précédent, mais tout le code doit être profondément modifié et optimisé.

De plus, je devais utiliser le format de variable minimum possible: par exemple, pour toutes les coordonnées, je devais utiliser "byte" au lieu de "int" ou, dans d'autres cas, je devais préférer "int" au lieu de "float".

Enfin, mes remerciements vont à Sandro Maffiodo alias Smaffer, le créateur de la bibliothèque VGAx et du jeu génial BitNinja. Sans cette bibliothèque, ce projet n'aurait pas pu être réalisé.

Merci également à Nikita Kurylev pour le jeu simple mais amusant Stacker.

Conseillé: