Étape 8: Écrire à l’écran du logiciel hôte
Par écrit à l’écran est très facile et expliquée ici.Toutes les communications avec l’appareil se fait avec la function SendData (demande d’int, int data). Cette fonction est en fait une version court-circuit d’une fonction nommée usb_control_msg. Nous utilisons la version court-circuit car l’usb_control_msg est vraiment longue et salissante. (SendData la fonction est définie dans le fichier USBFunctions.cpp.)
J’ai défini tous les codes de demande, que j’ai fait avec des noms, mais vous pouvez utiliser les numéros si vous le souhaitez.
Si vous voulez écrire des pixels à l’écran, utilisez la fonction SendData ( SEND_DATA, données) et remplacer les "données" avec un int de 1 octet. Ceci écrira 8 pixels sur l’emplacement actuel de XY. Gardez à l’esprit qu’il taks longtemps à écrire beaucoup de pixels à l’écran à l’aide de cette méthode. Si vous souhaitez dessiner le nombre de pixels très vite, vous devriez intégrer ce code sur la puce elle-même.
Pour envoyer une commande, utilisez la fonction SendData ( SEND_COMMAND, données) et remplacer les "données" avec une commande
(Voir le dataseet LCD pour les commandes, page 14)
Pour effacer l’écran, utilisez la fonction SendData ( SEND_CLEAR, 0) . Cela fera le tirage au sort AVR 0 à tous les pixels sur l’écran. Il est beaucoup plus rapide pour laisser l’AVR cela, que de le faire manuellement via le logiciel hôte. Il ne faut évidemment aucune donnée supplémentaire puis la requête proprement dite.
Si vous souhaitez spécifier un emplacement de XY pour écrire, utiliser SendData ( SEND_XY, (y << 8) + x). Remplacez le Y avec un nombre compris entre 0 et 5 et le X par un nombre compris entre 0 et 83. Cela envoie 2 octets à l’AVR, et c’est la raison pour laquelle que nous changer le Y en 8 (donc la valeur de Y est à la 2ème octet).
Pour envoyer un caractère ASCII à l’écran, utilisez SendData ( SEND_CHAR, données). Notez que les caractères doivent être entre guillemets simples, par exemple: SendData (SEND_CHAR, « A »).
Si vous souhaitez écrire un grand nombre de caractères, vous pouvez stocker la chaîne dans un tableau et utiliser une boucle, comme ceci :
unsigned char buffer [] = {"ma STRING12341!! \n"};
pour (int j = 0; j < sizeof (tampon) -1; ++ j) {}
SendData (SEND_CHAR, buffer[j]) ;
}
Notez que vous pouvez utiliser le saut de ligne ( \n ) pour sauter à la ligne suivante sur l’axe Y. Il vous permettra d’économiser beaucoup d’ennuis.