Mémoriser le code tapé par l'utilsateur
| Objectifs |
|
| Application utilisée |
Tinkercad |
Copier et éditer
le programme digicode présent dans la classe Tinkercad. Le squellette de programme suivant apparaît :
Commentaires :
Les lignes placées avant le setup() permettent de déclarer deux objets "logiciels" lcd et keypad. On parle de programmation orientée objet (ou encore de POO). L'intérêt est de pouvoir ensuite utiliser des méthodes (fonctions) rattachées à chaque objet.
Exemple : lcd.begin(16, 2); // initialise l'écran lcd en indiquant le nombre de ligne (2) et de colonne(16) en argument
Le tableau suivant donne les méthodes utiles pour écrire le programme digicode :
| Méthode | Rôle | Exemple | Commentaires |
| lcd.print() | Écrire du texte sur l'écran lcd. | lcd.print("CIEL1"); |
Écrit CIEL1 sur l'écran lcd. Attention les caractères accentués ne sont pas pris en charge. |
| lcd.setCursor() |
Positionne le curseur (non visible) à une position donnée. |
lcd.setCursor(0, 1); | Positionne le curseur sur la première colonne et sur la deuxième ligne (en partant du haut). |
| lcd.clear() |
Efface tous les caractères affichés sur l'écran lcd. |
lcd.clear(); | Les caractères sont effacés et le curseur revient en première colonne et première ligne. |
| keypad.getKey() | Permet de lire la valeur de la touche enfoncée du clavier. | key = keypad.getKey(); | La touche tapée est mémorisée dans la variable key. Si aucune touche n'est tapée alors key contient la valeur 0. |
Les variables du loop() permettent de mémoriser le code tapé par l'utilisateur ainsi que le code secret :
| Nom |
Type |
Rôle |
Commentaires |
| input | chaîne de caractères (char*) | Mémoriser le code à quatre caractères tapé par l'utilisateur | input est composé de quatre caractères |
| code | chaîne de caractères (char*) | Mémoriser le code d'accès secret |
code est composé de quatre caractères |
| key | caractère (char) |
Mémoriser la touche tapé par l'utilisateur | caractère ASCII |
Remarque : pour accéder à chaque caractère de code ou de input il suffit d'indiquer le rang du caractère entre crochet :
| Nom | code[0] | code[1] | code[2] | code[3] | input[0] | input[1] | input[2] | input[3] |
| Valeur | 'A' | 'C' | 'D' | 'C' | '0' | '0' | '0' | '0' |
Écrire un programme qui permet d'afficher ce que l'utilisateur tape. On utilisera l'algorithme suivant dans le loop() :
Équivalent en pseudo-code :
| 1 | FAIRE |
| 2 | lire le clavier et stocker le résultat dans la variable key |
| 3 | TANT QUE (key est égal à 0) |
| 4 | afficher la valeur de key sur l'écran lcd // key est donc différent de 0, cela veut dire que l'utilisateur a appuyé sur une touche |
Valider par simulation avec Tinkercad et vérifier que toute les touches du clavier s'affichent sur l'écran lcd.
Écrire un programme (en complétant le programme précédent) qui permet :
- d'afficher les quatre premiers appuis de l'utilisateur ;
- d'effacer l'écran au bout de 4 s.
On utilisera l'algorithme suivant :
| 1 | POUR i allant de 0 à 3 |
| 2 | FAIRE |
| 3 | lire le clavier et stocker le résultat dans la variable key |
| 4 | TANT QUE (key est égal à 0) |
| 5 | afficher la valeur de key sur l'écran lcd |
| 6 | stocker la valeur de key dans input[i] |
| 7 | FIN POUR |
| 8 | attendre 4 s // si la simulation est trop lente modifier en conséquence |
| 9 | effacer écran |
Valider par simulation avec Tinkercad.
Modifier le programme précédent pour afficher des étoiles plutôt que le code tapé par l'utilisateur.
Valider par simulation avec Tinkercad.
Appeler le professeur pour présenter vos résultats.