readData8()
Bibliothèque graphique pour shield Uno/Mega
Permet de lire un octet de donnée du driver
Exemples d'utilisation
writeRegister(0xD3); readData8(); readData8(); num=(readData8()<<8)+readData8(); // Lecture du l'Id du driver ILI9341
Référence
byte readData8(void);
Paramètre passé
aucun
Valeur retournée
l'octet lu
Voir aussi
- writeRegister() Écrit un octet dans un des registres de l'afficheur
- writeData8() Écrit un octet de donnée dans l'afficheur
- writeData16() Écrit un word de donnée dans 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.
Exemples
Avec un ILI9341:
// Ce programme montre qu'avec les fonctions de bas niveau, on arrive à toutes les possibilités du driver
#include <PxGraph_ILI9341_Shield.h> // Voir http://arduino.dansetrad.fr/PxGraph
void setup()
{
setGraphMode(PAYSAGE); // Obligatoire pour utiliser l'afficheur
// Affichage d'un fond d'écran. En BPX parce que cela va plus vite.
bpxDraw("320x240/1.bpx",0,0)* // Affiché seulement en mode paysage
bpxDraw("240x320/20.bpx",0,0) // Affiché seulement en mode portrait}
!=0) // On n'a pas pu dessiner une image, on dessin n'importe quoi
for (int y=0; y<HAUTEUR; y+=10) for (int x=0; x<LARGEUR; x+=10) fillRect(x, y, x+10, y+10, random(WHITE));
// Un premier exemple d'accès aux registres de l'afficheur: lecture du code du pilote
setTextSize(9); setTextBold(4); // Ecrire en gros
setTextCursor(DEMI_LARGEUR-180/2, // 4 caractères font en moyenne 4*5*setTextSize=180 de large, on les met au centre
DEMI_HAUTEUR-63/2); // Les caractères font 7*setTextSize=63 de haut, mis au centre
writeRegister(0xD3); // Envoi de la commande D3 (ID code?)
readData8(); // Première valeur non valide
readData8(); // Valeur nulle
text(String(readData8(), HEX)); // Poids forts à lire à lire (en hexadécimal!)
text(String(readData8(), HEX)); // Poids faibles à lire à lire (en hexadécimal!)
}
void loop()
{
// Un deuxième exemple d'accès aux registres de l'afficheur
writeRegister(0x21); // Display Inversion ON (21h), inversion des couleurs
delay(2000);
writeRegister(0x20); // Display Inversion OFF (20h), couleurs normales
delay(2000);
}
Résultat:
Avec un ST7781:
// Ce programme montre qu'avec les fonctions de bas niveau, on arrive à toutes les possibilités du driver
#include <PxGraph_ST7781_Shield.h>
void setup()
{
setGraphMode(PAYSAGE); // Obligatoire pour utiliser l'afficheur
// Affichage d'un fond d'écran. En BPX parce que cela va plus vite.
if (
bpxDraw("320x240/1.bpx",0,0)* // Affiché seulement en mode paysage
bpxDraw("240x320/20.bpx",0,0) // Affiché seulement en mode portrait}
!=0) // On n'a pas pu dessiner une image, on dessin n'importe quoi
for (int y=0; y<HAUTEUR; y+=10) for (int x=0; x<LARGEUR; x+=10) fillRect(x, y, x+10, y+10, random(WHITE));
// Un premier exemple d'accès aux registres de l'afficheur: lecture du code du pilote
byte pilote1, pilote2; // ID du pilote
setTextSize(9); setTextBold(4); // Ecrire en gros
setTextCursor(DEMI_LARGEUR-180/2, // 4 caractères font en moyenne 4*5*setTextSize=180 de large, on les met au centre
DEMI_HAUTEUR-63/2); // Les caractères font 7*setTextSize=63 de haut, mis au centre
writeRegister(0x00); // Envoi de la commande 00 (ID code?)
// Lecture préalable des codes, text() faisant appels aux registres
readData8(); // Première valeur non valide
pilote1=readData8(); // Poids faibles à lire à lire
pilote2=readData8(); // Poids forts à lire à lire
text(String(pilote2, HEX)); // Poids forts en hexadécimal!
text(String(pilote1, HEX)); // Poids faibles en hexadécimal!
}
void loop()
{
// Un deuxième exemple d'accès aux registres de l'afficheur
writeRegister(0x07); // Idle Mode OFF = Mode 8 couleurs OFF
writeData16(0x0133);
delay(2000);
writeRegister(0x07); // Idle Mode ON = Mode 8 couleurs ON
writeData16(0x013B);
delay(2000);
}
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 mémoire du driver (3 octets max), 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 readData8(). Bien entendu, il est indispensable d'avoir la documentation du driver.
Ces fonctions sont les fonctions de base de la bibliothèque.