<aside> <img src="/icons/arrow-right_lightgray.svg" alt="/icons/arrow-right_lightgray.svg" width="40px" />
<aside> <img src="/icons/arrow-right_lightgray.svg" alt="/icons/arrow-right_lightgray.svg" width="40px" />
La ligne char customKey = customKeypad.getKey()-48;
convertit les caractères numériques en leurs valeurs numériques en soustrayant 48 (le code ASCII de '0'). Par exemple, lorsqu'on appuie sur la touche '1' (code ASCII 49), on obtient la valeur numérique 1.
Voici les correspondances selon le code :
void ascii()
{
char customKey = customKeypad.getKey()-48;
// Ajout de la fonction d'effacement
if(customKey == ('C'-48)) { // Si la touche C est pressée
Tft.fillScreen(); // Efface l'écran
PosX = 0; // Réinitialise la position X
return;
}
// Code existant pour l'affichage des caractères
if((customKey>=0)&&(customKey<10))
{
Tft.drawNumber(customKey,PosX,1,3,CYAN);
PosX=PosX+20;
}
// reste du code
}
La fonction ascii() fait plusieurs choses :
Elle récupère la touche pressée et soustrait 48 pour convertir les caractères numériques en leurs valeurs réelles (car '0' a le code ASCII 48)
Elle gère l'effacement de l'écran :
Pour l'affichage des caractères :
Cette implémentation permet d'avoir un affichage numérique basique avec une fonction d'effacement de l'écran.
</aside>
<aside> <img src="/icons/arrow-right_lightgray.svg" alt="/icons/arrow-right_lightgray.svg" width="40px" />
int PosY = 0; // Variable globale pour la position verticale
Ces variables sont utilisées pour garder trace de la position du curseur sur l'écran. PosX pour la position horizontale et PosY pour la position verticale.
void ascii() {
char customKey = customKeypad.getKey();
if (customKey) {
// Affichage du caractère à la position actuelle
Tft.drawChar(PosX, PosY, customKey, WHITE, BLACK, 2);
PosX += 12; // Espacement horizontal entre les caractères
// Vérification si on atteint le bord droit (240 pixels)
if (PosX >= 240) {
PosX = 0; // Retour à gauche
PosY += 16; // Passage à la ligne suivante
}
// Si on atteint le bas de l'écran (320 pixels)
if (PosY >= 320) {
PosY = 0; // Retour en haut de l'écran
}
}
}
void ascii() {
char customKey = customKeypad.getKey();
if (customKey) {
Tft.drawChar(PosX, PosY, customKey, WHITE, BLACK, 2);
PosX += 12; // Déplacement horizontal
Cette partie :
if (PosX >= 240) {
PosX = 0;
PosY += 16;
}
Cette condition vérifie si on atteint le bord droit de l'écran (240 pixels). Si c'est le cas :
if (PosY >= 320) {
PosY = 0;
}
}
}
Cette dernière condition vérifie si on atteint le bas de l'écran (320 pixels). Si c'est le cas, on retourne en haut de l'écran.
</aside>
<aside> <img src="/icons/arrow-right_lightgray.svg" alt="/icons/arrow-right_lightgray.svg" width="40px" />
Voici l'explication du code nécessaire pour afficher les prénoms de la classe :
Il faut d'abord déclarer un tableau multidimensionnel pour stocker les prénoms. Par exemple :
char prenoms[][20] = {"Jean", "Marie", "Pierre", "Sophie"}; // Ajustez avec les vrais prénoms
int nbPrenoms = 4; // Nombre total de prénoms
int indexPrenom = 0; // Index du prénom actuel
La fonction doit :
void ascii() {
char customKey = customKeypad.getKey();
if (customKey == '+') {
Tft.fillScreen(); // Efface l'écran
Tft.drawString(prenoms[indexPrenom], 0, 0); // Affiche le prénom en haut à gauche
// Passe au prénom suivant
indexPrenom = (indexPrenom + 1) % nbPrenoms;
}
}
Cette implémentation permet de faire défiler les prénoms un par un à chaque appui sur la touche "+", avec un retour au début une fois tous les prénoms affichés.
</aside>
<aside> <img src="/icons/arrow-right_lightgray.svg" alt="/icons/arrow-right_lightgray.svg" width="40px" />
void ascii() {
char customKey = customKeypad.getKey()-48;
if (customKey >= 0 && customKey < 16) { // Vérifie si la touche est valide (0-15)
Tft.fillScreen(); // Efface l'écran
switch(customKey) {
case 0: // Cercle
Tft.drawCircle(120, 160, 50, RED);
break;
case 1: // Carré
Tft.drawRectangle(70, 110, 170, 210, BLUE);
break;
case 2: // Triangle
Tft.drawLine(120, 110, 70, 210, GREEN);
Tft.drawLine(70, 210, 170, 210, GREEN);
Tft.drawLine(170, 210, 120, 110, GREEN);
break;
case 3: // Rectangle
Tft.drawRectangle(60, 130, 180, 190, YELLOW);
break;
case 4: // Cercle plein
Tft.fillCircle(120, 160, 40, CYAN);
break;
case 5: // Carré plein
Tft.fillRectangle(80, 120, 160, 200, MAGENTA);
break;
case 6: // Ligne horizontale
Tft.drawLine(40, 160, 200, 160, WHITE);
break;
case 7: // Ligne verticale
Tft.drawLine(120, 80, 120, 240, RED);
break;
case 8: // Croix
Tft.drawLine(70, 110, 170, 210, BLUE);
Tft.drawLine(170, 110, 70, 210, BLUE);
break;
case 9: // Étoile
for(int i = 0; i < 8; i++) {
float angle = i * PI / 4;
Tft.drawLine(120, 160,
120 + cos(angle) * 50,
160 + sin(angle) * 50,
GREEN);
}
break;
// Ajoutez d'autres cas pour les touches A-F...
}
}
}
1. Structure de base
2. Effacement et dessin
3. Principales fonctions de dessin utilisées
4. Coordonnées
5. Couleurs disponibles
Cette implémentation permet d'avoir une interface interactive où chaque touche déclenche l'affichage d'une nouvelle figure géométrique unique sur l'écran.
</aside>
<aside> <img src="/icons/arrow-right_lightgray.svg" alt="/icons/arrow-right_lightgray.svg" width="40px" />
</aside>