MARS 2022 - Apprendre à utiliser de nombreux modules

La page est créée Benjamin Duhamel
 
CONTINUER À LIRE
MARS 2022 - Apprendre à utiliser de nombreux modules
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
MARS 2022 - Apprendre à utiliser de nombreux modules
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
MARS 2022 - Apprendre à utiliser de nombreux modules
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
MARS 2022 - Apprendre à utiliser de nombreux modules
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
MARS 2022 - Apprendre à utiliser de nombreux modules
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
MARS 2022 - Apprendre à utiliser de nombreux modules
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
MARS 2022 - Apprendre à utiliser de nombreux modules
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
MARS 2022 - Apprendre à utiliser de nombreux modules
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
MARS 2022 - Apprendre à utiliser de nombreux modules
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
MARS 2022 - Apprendre à utiliser de nombreux modules
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