writeData16()
Bibliothèque graphique pour shield Uno/Mega
Permet d'écrire deux octets de donnée dans le driver
Exemples d'utilisation
writeRegister(0x37); writeData16(0x01); // Décale l'écran d'une ligne pour un ili9341
Référence
void Data16(word donnee);
Paramètre passé
donnee: donnée à écrire
Valeur retournée
Aucune
Voir aussi
- writeRegister() Écrit un octet dans un des registres de l'afficheur
- writeData8() Écrit un octet de donnée dans l'afficheur
- readData8Bits() Lit un octet de donnée de l'afficheur
Notes
Ces fonctions permettent de tout faire concernant l'afficheur, quel que soit le driver présent. En programmant directement les registres des drivers, tout est disponible.
Exemple
Version ILI9341, le ST7781 n'a pas cette fonction de décalage.
// Ce programme montre qu'avec les fonctions de bas niveau, on arrive à d'autres les possibilités du driver
#include <PxGraph_ILI9341_Shield.h> // Voir http://arduino.dansetrad.fr/PxGraph
const long attente = 6; // Attente entre deux décalages
word decalage=1; // Décalage de l'écran
void setup()
{
setGraphMode(PAYSAGE); // Obligatoire pour utiliser l'afficheur
// Dessin de l'avion
if (bmpDraw("DEMOS/avion.bmp") > 0) // Photo d'un avion
{ // Photo non trouvée, on fait un dessin
clrscr(STEEL_BLUE); // Ciel
// Définition des lignes de l'avion
arc(121, 83, 7, DEPART_SUD + ARRIVEE_NORD, BLACK); // Cokpit
line(118, 81, 121, 78);
lineTo(121, 81);
lineTo(118, 81);
hLine(121, 198, 76); // Fuselage
arc(198, 80, 4, DEPART_NORD + ARRIVEE_SUD);
line(195, 84, 162, 89);
line(121, 90, 150, 89);
line(134, 76, 118, 53); // Aile droite
lineTo(147, 76);
line(140, 84, 184, 110); // Aile gauche
lineTo(156, 83);
line(188, 76, 211, 64); // Empennage
lineTo(198, 76);
line(192, 80, 200, 88);
lineTo(196, 79);
// Peinture de l'avion
fill(127, 81, WHITE); // Fuselage
fill(137, 72, WHITE); // Aile
fill(196, 74, WHITE); // Empenage
}
}
void loop()
{
// Décalage de l'écran
if (graphMode == PAYSAGE)
{
writeRegister(0x37); writeData16(decalage++); // Décalage vertical pour un ili9341
if (decalage == LARGEUR) decalage = 0; // Décalage complet d'un écran, on repart à 0
}
else if (graphMode == PAYSAGE_INVERSE)
{
writeRegister(0x37); writeData16(--decalage); // Décalage vertical pour un ili9341
if (decalage == 0) decalage = LARGEUR; // Décalage complet d'un écran, on repart à 0
Serial.println(decalage); delay(10);
}
// Vitesse de l'avion
delay(attente);
}
Résultat
Côté technique
L'accès aux registres permet d'utiliser des fonctionnalités qui ne sont pas prévues dans la bibliothèque. On peut par exemple accéder au couleurs 18 bits, au mode 8 bits, enregistrer et lire des valeur en EEPROM du driver (3 octets max sur un ST7781), voir les codes du constructeur...
Pour programmer le driver de l'afficheur, il faut envoyer la valeur d'un registre par writeRegister(), envoyer éventuellement des paramètres par writeData8() ou writeData16(), ou lire une ou plusieurs valeurs par readData8Bits(). Bien entendu, il est indispensable d'avoir la documentation du driver.
Ces fonctions sont les fonctions de base de la bibliothèque.