Définition | Utilisation | Exemple | Côté technique |
Taille et dépassementsQuand un caractère doit être écrit, on regarde si il tient. Si il est trop large pour tenir dans la largeur compte tenu
de l'abscisse du curseur texte, un retour chariot est effectué avant. Si il ne tient pas verticalement en tenant compte
de l'ordonnée du curseur texte, le curseur texte est remis en haut de l'écran, soit en appelant
clrscr() si on est en mode normal, soit sans effacer l'écran si on a appelé
setTextKeep(KEEP); . Ceci a plusieurs conséquences: Codes ascii ou pas...Les codes des lettres, des chiffres et des symboles !"#$%&'()*+,-./:;<=>?@[\]_{|}~ correspondent au code ascii. Ainsi si chaine="ABC", chaine[1] contient 0x41 ou 65. C'est normal. La chaîne "ABC" contient 3 caractères. Les symboles àáâçèéêëîï°±òóôµö÷ùúûü€ sont codés suivant la norme UTF8. Si on écrit chaine="L'été", chaine ne contient pas 5 caractères, mais 7 car le "é" se code avec les 2 valeurs 195 et 169. Le code 169 correspond en principe au code ascii du 'é'. Tous les symboles ci-dessus sont codés avec 2 octets, le premier étant 194 ou 195, le deuxième étant en principe le code ascii étendu du caractère. Exception: le '€' qui est codé sur 3 octets 226 130 et 172. Dans la plupart des cas le système Arduino et PC sont compatibles. Fonte de caractèresLa fonte est vectorielle, et les caractères sont constitués de segments de droites et d'arcs de cercle. Cette fonte est définie afin de minimaliser la taille, et c'est pour cela que certains caractères sont "mal dessinés". Par contre elle supporte bien les agrandissements. La largeur des caractères est variable. Voir comment est définie la fonte vectorielle PecheuxGraph.zip\PecheuxGraph\examples\Documentation\Exemple-301-text.ino (dans votre fichier téléchargé): // Ce programme ecrit SUR LA CONSOLE la phrase composé des caractères codés sur deux char ou plus. Puis il affiche SUR // LA CONSOLE pour chaque caractètre les codes qui le définit. #include <PecheuxGraph.h> int c; String s="àáâçèéêëîï°±òóôµö÷ùúûü€"; void setup() { Serial.begin(115200); Serial.println(); Serial.println(s); for (byte i=0; i<44; i+=2) Serial.println(String(s[i])+String(s[i+1])+" "+String(byte(s[i]))+" "+String(byte(s[i+1]))); for (byte i=44; i<45; i+=3) Serial.println(String(s[i])+String(s[i+1])+String(s[i+2])+" "+String(byte(s[i]))+" "+String(byte(s[i+1]))+" "+String(byte(s[i+2]))); } void loop() { } Résultat sur la console série: àáâçèéêëîï°±òóôµö÷ùúûü€ à 195 160 á 195 161 â 195 162 ç 195 167 è 195 168 é 195 169 ê 195 170 ë 195 171 î 195 174 ï 195 175 ° 194 176 ± 194 177 ò 195 178 ó 195 179 ô 195 180 µ 194 181 ö 195 182 ÷ 195 183 ù 195 185 ú 195 186 û 195 187 ü 195 188 € 226 130 172 |