Dimensions de l'écran
extern int LARGEUR; // Largeur de l'écran en pixels (p.ex 320) extern int HAUTEUR; // Hauteur de l'écran en pixels (p.ex 240) #define MAX_X (LARGEUR-1) // Valeur maximale des abscisses (p.ex 319) #define DEMI_LARGEUR (LARGEUR>>1) // Abscisse du centre de l'écran (p.ex 160) #define MAX_Y (HAUTEUR-1) // Valeur maximale des ordonnées (p.ex 239) #define DEMI_HAUTEUR (HAUTEUR>>1) // Ordonnée du centre de l'écran (p.ex 120) #define PETIT_COTE 240 // Petit côté de l'écran #define GRAND_COTE 320 // Grand côté de l'écran extern int MIN_X_DRAW; // Abscisse minimale pouvant être dessiné extern int MAX_X_DRAW; // Abscisse maximale pouvant être dessiné extern int MIN_Y_DRAW; // Ordonnée minimale pouvant être dessiné extern int MAX_Y_DRAW; // Ordonnée maximale pouvant être dessiné extern int MIN_X_TEXT; // Abscisse minimale pouvant être écrit extern int MAX_X_TEXT; // Abscisse maximale pouvant être écrit extern int MIN_Y_TEXT; // Ordonnée minimale pouvant être écrit extern int MAX_Y_TEXT; // Ordonnée maximale pouvant être écrit
Exemples d'utilisation
for (x=0; x<LARGEUR; x++) ... // Balaie toutes les abscisses for (x=0; x<=MAX_X; x++) ... // Balaie toutes les abscisses, c'est équivalent for (x=0; x<=LARGEUR-1; x++) ... // C'est encore équivalent line(0, 0, MAX_X, MAX_Y, WHITE); // Diagonale de l'écran circle(DEMI_LARGEUR, DEMI_HAUTEUR, PETIT_COTE/2-1, WHITE); // Plus grand cercle.
Voir aussi
- setLimites(); Limite la zone de dessin
- setGraphMode(); Initialisation de l'écran
- setTextOrient(); Direction d'écriture des textes
- clrscr(); Efface l'écran
Notes

En réalité ce sont presque toutes des variables. Ce ne peut pas être des constantes étant donné qu'elles peuvent changer au cours du programme. Mais pour des raisons pratiques elles sont définies comme telles. On ne doit pas les modifier. Seules PETIT_COTE et GRAND_COTE sont de vraies constantes.
Ces "constantes" permettent d'éviter d'utiliser les nombres comme 320 ou 319. D'autre part le passage des modes paysages à portraits change la définition de ces mots. En les utilisant, on peut écrire des programmes qui fonctionnent sans changements dans les 4 modes.
Notez que MAX_X=LARGEUR-1 et DEMI_LARGEUR=LARGEUR/2, mais cela ne consomme pas plus de ressources d'utiliser dans un programme DEMI_LARGEUR ou LARGEUR/2.
Les mots LARGEUR, HAUTEUR, MAX_X, MAX_Y, DEMI_LARGEUR, DEMI_HAUTEUR concernent l'écran en entier. On peut changer la zone dans laquelle s'effectue les dessins par la fonction setLimites(); La zone dans laquelle on peut dessiner est alors définie par MIN_X_DRAW, MAX_X_DRAW, MIN_Y_DRAW et MAX_Y_DRAW. Comme on peut changer l'orientation des écritures, et que les coordonnées suivent l'orientation, les textes peuvent être écrits dans la zone définie par MIN_X_TEXT, MAX_X_TEXT, MIN_Y_TEXT et MAX_Y_TEXT. Si on écrit vers l'est les deux zones sont les mêmes.
Exemple
PecheuxGraph_ILI9341_8bits.zip\PecheuxGraph_ILI9341_8bits\examples\Documentation\Exemple-101-MAX_X\Exemple-101-MAX_X.ino (dans votre fichier téléchargé):
// Ce programme fonctionne dans les 4 orientations, et c'est pour cela qu'est // utilisé LARGEUR, MAX_X.... // Il dessine la Joconde, avec son cadre. # $menu = ":PG"; include <PecheuxGraph_ILI9341_8bits.h> void setup() { } char mode; void loop() { setGraphMode(PAYSAGE); // Initialisation de l'écran // Dessine un cadre bariolé : // On remplit d'abord tout l'écran avec des lignes bariolées passant par le centre pour // faire les bordures en haut et en bas for (int x=0; x<LARGEUR; x // Car les abscisses vont de 0 à LARGEUR-1 ou de 0 à MAX_X line(x, 0, MAX_X-x, MAX_Y, RANDOM_COLOR); // Cette ligne passe par le centre // Puis avec des lignes bariolées passant par le centre pour faire les bordures latérales for (int y=HAUTEUR-2; y>=0 ; --y) // Car les ordonnées vont de 0 à HAUTEUR-1 ou de 0 à // MAX_Y mais on a déjà tracé la diagonale line(0, y, MAX_X, MAX_Y-y, RANDOM_COLOR); // Et on efface le centre pour laisser le cadre fillRect(10, 10, MAX_X-10, MAX_Y-10, BLACK); // Et on dessine toto dans le cadre circle(DEMI_LARGEUR, DEMI_HAUTEUR, 80, WHITE); // la tête. // Ici DEMI_LARGEUR ou MAX_X/2 est à peu près pareil, l'écran ayant un nombre // de pixels pair, il n'y a pas de centre exact arc(DEMI_LARGEUR, DEMI_HAUTEUR+20, 40, DEPART_SUD_EST+ARRIVEE_SUD_OUEST, WHITE); // La bouche circle(DEMI_LARGEUR-20, DEMI_HAUTEUR-30, 5, WHITE); // Les yeux circle(DEMI_LARGEUR+20, DEMI_HAUTEUR-30, 5, WHITE); line(DEMI_LARGEUR, DEMI_HAUTEUR-10, DEMI_LARGEUR-10, DEMI_HAUTEUR+20, WHITE); // Le nez lineTo(DEMI_LARGEUR+10, DEMI_HAUTEUR+20); // Affichage du mode setTextCursor(11,11); switch (getGraphMode()) { case PAYSAGE: text(F("Paysage")); break; case PORTRAIT: text(F("Portrait")); break; case PAYSAGE_INVERSE: text(F("egasyaP")); break; case PORTRAIT_INVERSE: text(F("tiartroP")); } delay(3000); // Pour voir le produit fini }
Résultat:
