MARS 2022 - Apprendre à utiliser de nombreux modules
←
→
Transcription du contenu de la page
Si votre navigateur ne rend pas la page correctement, lisez s'il vous plaît le contenu de la page ci-dessous
MARS 2022 MARQUILLY Apprendre à utiliser de nombreux LUX modules Comment utiliser le hardware mis à notre disposition Comment le code est structuré et qu'elles sont les méthodes mise en oeuvres
OMMAIRE 1 / 2 LA MALLETTE JOY-PI ET LES MODULES LE JEU DU SNAKE 3 4 NOS COMPOSANTS NOTRE SNAKE ET LA POMME 5 6 DIRIGER LE SNAKE AFFICHER LE SNAKE 7 / 8 9 AFFICHER LE SCORE BUZZER ET FIN DE PARTIE 10 11 LES LIBRAIRIES
PRÉSENTATION DE LA. MALETTE JOY-PI MALETTE JOY-PI LA MALLETTE TOUT EN UN JOY-PI EST COMPOSÉE D'UN RASPBERRY-PI, D'UN ÉCRAN ET D'UNE MULTITUDE DE COMPOSANTS PERMETTANT LA CRÉATION DE NOMBREUX PROJETS. 1
Les différents modules 1- RASPBERRY PI 13- CAPTEUR ULTRA-SON 2- LEDS 14 À 16- POUR L'UTILISATION 3- BREADBOARD DE MOTEURS 4- LCD 17- CAPTEUR D'INCLINAISON 5- COURANT 18- CAPTEUR INFRAROUGE 6- LED MATRIX 19- CAPTEUR TACTILE 7- 7 SEGMENTS 20- CAPTEUR D'HUMIDITÉ ET 8- MODULE DE VIBRATION DE TEMPÉRATURE 9- CAPTEUR DE LUMIÈRE 21- RELAY 10- BUZZER 22- MATRICE DE BOUTONS 11- CAPTEUR DE SON 23- 4 BOUTONS 12- CAPTEUR DE 24- MODULE RFID MOUVEMENT 25- SWITCH 2
Le jeu du snake Le joueur contrôle une longue et fine ligne semblable à un serpent, qui doit slalomer entre les bords de l'écran et les obstacles qui parsèment le niveau. Pour gagner chacun des niveaux, le joueur doit faire manger à son serpent un certain nombre de pastilles similaire à de la nourriture, allongeant à chaque fois la taille du serpent. Alors que le serpent avance inexorablement, le joueur ne peut que lui indiquer une direction à suivre (en haut, en bas, à gauche, à droite) afin d'éviter que la tête du serpent ne touche les murs ou son propre corps, auquel cas il risque de mourir. Les jeux de serpent sont en fait un concept : il existe plusieurs sortes de snake game. Au départ, c’est Blockade qui fait son entrée dans les salles de jeux d’arcade en 1976. Développé par Gremlin, le jeu se joue en duel. Chaque joueur étant représenté par un serpent. Le premier qui touche son adversaire ou se mord la queue perd. La même année sort son clone : Bigfoot Bonkers. Si ce n’est quelques obstacles en plus, le jeu est exactement le même. L’année d’après, Atari propose deux jeux serpent. Le premier du nom de Dominos se joue sur borne d’arcade : le serpent classique est remplacé par des petits « dominos ». Le second se nomme Surround et se joue sur console (Atari 2600). En 1978, la première version PC de jeu du serpent apparaît : elle s’appelle Worm. Il faut attendre pratiquement 20 ans, en 1997 pour que Taneli Armanto, développeur chez Nokia décide de programmer une version de Snake (appelée aujourd’hui “tracteurs”) sur le nouveau Nokia 6110. Cadre minimaliste : aucun obstacle, juste un serpent dans un écran. C’est en fait 3 ans plus tard, en l’an 2000 avec Snake II, que la popularité du jeu du serpent Nokia 3310 explose. 126 millions d’exemplaires, c’est le nombre de ventes de ce téléphone qui en fait un des plus acquis au monde. Tout comme Tetris, le jeu du serpent fait partie des jeux qui auront marquer plusieurs générations de gamers. 3
Nos composants POUR NOTRE SNAKE NOUS AVONS UTILISÉ 4 COMPOSANTS DE LA MALLETTE. Le 7 segments La Led Matrix pour pour l'affichage du score l'affichage de la pomme et du snake Le buzzer pour un signal Les boutons sonore quand la partie pour diriger le snake se finit 4
Initialisation du snake et de la pomme DANS LE CODE C, NOUS AVONS REPRÉSENTÉ LA LED MATRIX PAR UN TABLEAU DE INT DE 8 SUR 8. La pomme, quant à elle, fait la taille d'une LED et elle apparaît toujours de manière aléatoire sur la matrice. Il faut donc vérifier que le snake n'occupe pas déjà la case en question. Au lancement d'une partie, le snake commence toujours au même endroit et à une taille de 3 LEDS : une pour la tête, une pour le corps et une pour sa queue. 5
Diriger le snake avec les boutons LE SNAKE CHANGE DE DIRECTION QUAND LE JOUEUR APPUIE SUR UN DES BOUTONS. LE JOUEUR DOIT ÉVITER LES MURS POUR NE PAS MOURIR. On commence par initialiser les boutons Quand un joueur appuie sur le bouton du avec leur numéro de pin. haut cela revient à dire que le snake doit se diriger vers la ligne -1. Par exemple le snake se dirige sur la ligne 3 et le joueur appuie sur le bouton du haut alors le snake devra se déplacer vers la ligne 2. Une fois la direction du serpent changée, il faut pouvoir l'appliquer, pour cela on appel Il faut ensuite définir ces boutons comme dans la même fonction qui gère les appuies des entrées. boutons une autre fonction qui redéfinit les coordonnées de la tête du serpent en lui ajoutant une nouvelle tête, son ancienne tête, qui est encore sur l'ancienne ligne devient son corps. Et comme on ajoute une tête, il ne faut pas oublier de supprimer son ancienne queue pour que le snake fasse la même taille Ensuite on appel en continu une fonction qu'auparavant, à moins que le snake vient afin de savoir si le joueur a appuyé sur un tout juste de manger une pomme, des boutons. 6
affichage du snake et de la pomme sur le 7 segments IL FAUT POUVOIR AFFICHER LE TABLEAU DE INT SUR LA LED MATRIX. Dans le code nous avons représenté la matrice de LED par des int. Les cases à 0 représentent les LED éteintes. La case à 4 représente la pomme, celle à 8 la tête du snake et pour les cases à 1 c'est son corps. Une fois le tableau transformé on se retrouve avec un tableau appelé disp1 comme celui-ci: Il faut pouvoir afficher ce tableau sur la matrice. Pour cela il faut envoyer à la led matrix pour chaque ligne quel bit est allumé. Nous transformons donc chaque ligne en un chiffre décimal où chaque bit mis à 1, 4 ou 8 doit se comporter comme un 1. 7
Une fois le chiffre ligne à ligne obtenue on peut envoyer les informations à la led matrix. Le i représente le numéro de la ligne, Grâce à la librairie bcm2835 nous pouvons utiliser les fonctions bcm2835_gpio_write() et bcm2835_spi_transfer() et envoyer les chiffres de chaque ligne que nous avons stocké dans disp[]. On obtient sur la matrice de LED : 8
affichage du score du joueur AU DÉPART LE SCORE EST MIS À 0. DÈS QUE LE JOUEUR MANGE UNE POMME SON SCORE EST INCRÉMENTÉ D'UN. On commence par définir le numéro du pin. Donc le score est égal au nombre de pomme mangé -1. Quand le joueur mange une pomme le nombre de pomme mangée par le snake est incrémenté. Il faut décomposer le score afin de l'afficher sur le 7 segments. La fonction de décomposition permet de séparer les unités et les dizaines. La fonction writeDisplay permet l'affichage du score sur le 7 segments. Or à l'initialisation de la partie aMange est mis à 1 afin d'appeler la fonction qui génère une pomme. 9
Le buzzer à la fin de la partie QUAND LA PARTIE SE FINIT, LE BUZZER FAIT UN DOUBLE SON. On commence par définir le numéro du pin. La fonction softTonerWrite de la librairie WiringPI permet d'allumer le buzzer à une fréquence voulut. On commence donc par allumer le buzzer à Une fois que le joueur à perdu, il sort de la 1000hz, puis avec la fonction bcm2835_delay boucle du jeu et on appel le buzzer : on laisse le buzzer sonner un peu. Et ensuite on le remet à une fréquence de 0. On attend un peu et on refait un deuxième bip. 10
LEs librairies DANS NOTRE SNAKE NOUS AVONS UTILISÉ 2 LIBRAIRIES. Nous avons utilisé la librairie bcm2835 afin d'utliser les boutons, la led matrix et la fonction de pause pour le buzzer. Nous avons aussi utilisé la librairie WiringPI pour l'utilisation du 7 segments et du buzzer. Il faut aussi pouvoir adapter le Makefile avec les librairies en indiquant le chemin des Utiliser des libriairies en compilation croisée dossiers, ainsi que le chemin des dossiers signifie devoir les recompiler. include et lib. 11
Vous pouvez aussi lire