Aujourd'hui, nous avons un projet avec une micro console de jeu, que tout le monde peut répéter.
Matériaux et composants nécessaires:
Ce manuel est extrait de la chaîne YouTube AlexGyver. Le microcontrôleur pour ce projet a besoin de ceci:
C'est Attiny85 dans le package DIP, cela nous suffira. Afin de ne pas le souder, nous prenons la soi-disant socket.
Nous avons également besoin d'un écran avec Aliexpress, OLED avec une résolution de 128 par 32 pixels.
Les épingles sont également utiles.
Les boutons que nous utiliserons ici sont:
Bien sûr, vous pouvez prendre des claviers, mais ils devront être finalisés, mais je ne veux pas vraiment couper et souder. Le compartiment à piles est de ce type:
Et nous assemblerons notre console de jeu avec une planche à pain (si vous le souhaitez, vous pouvez faire une planche vous-même). Nous flasherons le programmateur USBasp, mais n'importe quel AVR fera l'affaire.
Schéma de câblage Les composants seront les suivants:
L'écran se connecte aux broches du bus I2C du microcontrôleur. Nous connectons les boutons à d'autres broches libres. Ajoutez également un interrupteur pour allumer / éteindre le système. Et en gros c'est tout, il reste à connecter l'alimentation.
Le firmware est chargé dans le microcontrôleur par le programmeur selon le schéma suivant:
Maintenant, commençons l'assemblage et organisons tous les éléments sur la maquette. Essayons de nous assembler et de voir à quoi tout cela ressemble.
Cela s'est avéré assez ascétique. Pas mal. La partie excédentaire de la planche à pain peut être sciée.
Maintenant, nous réparons tous les composants simplement en soudant leurs jambes.
Vous devez maintenant relier les conclusions selon le schéma. À cette fin, l'auteur recommande d'utiliser un mince fil de montage chinois.
Et pour plus de commodité, vous pouvez utiliser ce schéma de connexion en miroir.
Ces fils ont une isolation si fine que vous pouvez les souder directement. L'isolation elle-même fondra et le fil sera soudé.
Ensuite, procédez à l'étanchéité du compartiment des piles et de l'interrupteur. Le compartiment doit également être fixé en plus avec un pistolet à colle chaude.
Eh bien, c'est tout, le système est assemblé, il reste à télécharger le firmware. Nous flasherons la «pierre» séparément en la connectant au programmateur sur la planche à pain.
Le firmware, comme tous les projets de l'auteur, est dans le domaine public et peut être téléchargé à partir de. Sur la page du projet, vous trouverez également un diagramme et toutes les autres informations nécessaires sur ce projet.
Nous ne nous attarderons pas sur le téléchargement en détail, si quelque chose n'est pas clair, vous pouvez toujours consulter l'auteur pour des instructions détaillées.
Pour le firmware, installez simplement Arduino ide, installez le noyau pour travailler avec les microcontrôleurs de la série Attiny, sélectionnez une carte, choisissez un programmeur.
Ensuite, nous sélectionnons la fréquence de 8 ou 16 MHz, ouvrons l'onglet «Outils», trouvons et sélectionnons «Record Loader».
Il n'y a pas de chargeur, mais le microcontrôleur sera réglé sur la fréquence requise. Sélectionnez ensuite l'onglet «Sketch» - «télécharger via le programmateur». Et nous attendons que l'esquisse soit chargée dans le microcontrôleur.
Maintenant, nous sortons la «pierre» et l'insérons au cœur de notre mini console de jeu.
Comme vous pouvez le voir, cela fonctionne! Et maintenant, regardons de plus près ce que nous avons dans le firmware. ATtiny85 est un microcontrôleur avec 512 octets de RAM, ce qui est très petit. 99% des bibliothèques pour travailler avec un tel écran utilisent un tampon sur le côté du microcontrôleur pour redessiner correctement l'image, car cet écran ne peut pas lire les données de son propre tampon, et il est là d'ailleurs.
Le tampon pour cet affichage de 128 * 32 pixels prendra 512 octets, si nous voulons nous souvenir de l'état de chaque bit, c'est-à-dire un pixel.
En plus du tampon, nous devons également stocker d'autres données, de sorte que cette option ne tient certainement pas en mémoire d'une telle taille.
Par conséquent, il a été décidé de réduire la résolution d'affichage à 64 * 16 pixels en tamponnant des carrés de 4 pixels.
L'auteur a travaillé directement avec cet affichage et a réussi à mettre en œuvre son idée avec succès. Un croquis peut être utile pour quelqu'un qui souhaite travailler avec cet affichage à l'aide d'Attiny.
Maintenant, en ce qui concerne le jeu lui-même. Cela fonctionne tout simplement. Une balle se déplace sur une minuterie distincte, le mouvement consiste à supprimer un point avec les mêmes coordonnées et à ajouter un nouveau point dans les nouvelles coordonnées.
Le calcul des coordonnées consiste simplement à ajouter des valeurs de vitesse aux coordonnées dans le système d'affichage.
Lorsque la balle dépasse les murs horizontaux, elle rebondit simplement sur eux, changeant la composante verticale de la vitesse à l'opposé, c'est-à-dire avec un signe moins (-).
De plus, le programme vérifie les limites verticales du terrain de jeu, si la balle frappe la raquette (enfin, ou comme vous l'appelez correctement), elle rebondit et l'angle de rebond est aléatoire.
Si le ballon brise le mur derrière la raquette, le joueur a donc perdu le tour en cours et l'adversaire reçoit un point.
Le mouvement de la raquette du joueur est mis en œuvre de la même manière que le mouvement de la balle, c'est-à-dire que l'ancienne raquette est effacée et une nouvelle est tirée, déjà avec de nouvelles coordonnées. Les coordonnées changent lorsque vous cliquez sur le bouton.
Ainsi, cela s'avère beaucoup plus rapide que de nettoyer tout l'affichage et de rendre à nouveau tous les éléments.
Maintenant, pour la raquette de l'adversaire. Il est contrôlé par l'IA (intelligence artificielle).
Bien sûr, l'intelligence artificielle est dite à haute voix, mais néanmoins cette intelligence fait une chose très simple, à savoir, elle fait bouger la raquette dans la direction où se trouve la balle, tout en essayant d'aligner son centre le long de l'axe vertical avec la coordonnée verticale de la balle. Afin de vraiment battre un tel adversaire, l'auteur l'a fait ralentir, c'est-à-dire qu'il calcule à nouveau son prochain mouvement par le chronomètre, et peut donc ne pas avoir le temps d'attraper le ballon et ainsi de le repousser.
Également dans le jeu, des mécanismes de complexité croissante ont été mis en œuvre. Tous les 10 points en faveur du joueur, la vitesse du ballon augmente. Parallèlement à cela, la vitesse de réaction de l'IA (adversaire) augmente également.
En conséquence, voici un petit Pong si simple. Pas pour rien, ce jeu vidéo a été développé tout d'abord, car même un programmeur débutant peut l'écrire. Mais malgré l'apparente simplicité du projet, le bruit avec l'affichage chinois a pris environ 20 heures de temps pur à l'auteur. Dans le même temps, il n'a pas pris en compte le temps passé à écrire le code du jeu lui-même et les autres flux de travail liés au débogage et à la configuration du circuit.
Dans cette chose, le buzz lui-même est le processus d'assemblage, pas l'application.Développer des jeux, même les plus simples, peut être très intéressant. Surtout lorsque vous essayez de les enfoncer dans un très petit microcontrôleur. Et quand la vitrine chinoise vous attend au coin de la rue ...
C’est tout. Merci de votre attention. A très bientôt!
Vidéo de l'auteur: