summaryrefslogtreecommitdiff
path: root/rapport/Rapport.ms
blob: 06d0b819bea2d9f18c0ed9eba413786123571953 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
.so /home/mas/.config/groff/macros.ms
.TL
Projet Simon sur STM32

.AU
Aimeric ADJUTOR et Anthony BOULANT
.AI
.BX ESIEA
.PP


.PSPIC -C "img/simon.ps" 6

.PP
.bp

.SH
Introduction

.PP
Ce projet a pour but de maitriser les bases de la programmation et de câblage sur carte STM32 tout en ayant un but sympathique à atteindre.

.PP
Pour information, tout les fichiers, dont le rapport, sont présent sur mon git personnel à
.UL "git.adjutor.xyz" .
.PP
Pour pouvez donc tout récupérer facilement via, par exemple, la commande suivante :
.PP
.CD
git clone https://git.adjutor.xyz/simon-STM32.git
.DE

.PP
Ce rapport est divisé en 6 parties:
.BL
1. Simon fait maison
.BL
2. Matériel
.BL
3. Outils logiciels
.BL
4. Câblage
.BL
5. Programme
.BL
6. Difficultés

.NH
Simon fait maison

.PP
Nous souhaitons recréé un jeu électronique mythique, de la firme Hasbro, qui s'appelle Simon avec une carte microcontrolleur STM32.

.PP
Le but du jeu est le suivant: refaire les couleurs (leds) dans l'ordre en appuyant sur le bouton poussoir correspondant.
.PP
A cause d'une contrainte de matérielle, nous utilisons, ici, uniquement 3 leds avec 3 boutons poussoir qui leurs sont liés.
.PP
La quatrième led qui est incorporée sur la carte signalera si on est en mode deux joueurs.

.PP
Lcran LCD nous permettra d'afficher du texte (comme Game Over) et le score.

.PP
Un quatrième bouton poussoir sera utilisé comme bouton d'activation du mode deux joueurs.
.PP
Et celui de la carte (bleu) servira de bouton start.

.NH
Outils logiciel

.PP
Utilisation de STM32CubeMX pour générer le code de base et de System Workbench for STM32 comme IDE pour le reste.
.PP
Nous avons aussi utilisé la librairie HAL.

.NH
Matériel

.PP
Afin d'effectuer ce projet nous avons é doté des éléments suivant :
.BL
1 Microcontrolleur NUCLEO-L053R8
.BL
3 Leds : vert, jaune, rouge
.BL
4 boutons poussoir
.BL
1 écran LCD

.bp
.NH
Câblage

.PSPIC -C "img/dummy.ps"

.PP
.bp
.NH
Programme

.PP
L'entiereté du programme (jeu) est présent dans le fichier main.c.
.PP
Il s'agit d'une adaptation du programme prototype_simon.c, qui est aussi present dans ce dossier, avec l'utilisation du materiel (LCD, Leds et boutons).

.NH 2
Fonctions

.PP
Nous avons créé 3 fonctions en plus de main :
.BL
.UL "fonction_led" ": pour le contrôle de nos leds en fonction de la couleur donné et de la posiition voulu."
.PP
On utilise les fonctions de led vu en TP pour faire cela : Led_turnOff pour éteindre et Led_turnOn pour allumer.

.BL
.UL "affiche_lcd" ": pour le contrôle de notre lcd en spécifiant la position en y, le contenu et si oui doit effacer son ancien contenu avant d'écrire dessus."
.PP
On utilise les fonction de lcd_1602 : lcd_clr pour l'effacement, lcd_gotoxy pour la position et lcd_puts pour afficher.

.BL
.UL "choix_aleatoire" ": pour choisir une couleur de led au hasard à ajouter à chaque niveau."

.NH 2
Main

.PP
Le main contient le coeur du jeu simon avec un systeme un joueur ou deux joueurs en plus du score. De nombreux commentaires ont é produit afin de rendre la relecture et de possible futurs changements plus simple.
.PP
Le fichier prototype_simon.c à é produit dans un premier temps afin de visualiser le jeu sans materiel STM32.

.NH
Difficultés

.PP
Tres peu de documentation clair sont à porté de main sur internet et les cours + TP ntaient pas suffisant pour avancer rapidement dans ce projet.
.PP
Malgré tout, nous avons trouvé un code faisant fonctionner notre écran LCD.
.PP
Au final, nous n'avons pas pu testé notre code car notre carte à un soucis, elle n'arrive plus à charger notre code malgré plusieurs tests avec d'anciens codes du TP.