writeRegister()

Permet d'écrire dans un registre du driver

 

Exemples d'utilisation

writeRegister(0x21); // Inversion des couleurs sur un ILI9341
writeRegister(0x26); writeData8(0x01); // Correstion "gama curve 1" pour un ili9341
writeRegister(0x37); writeData16(x); // Décalage vertical de X lignes pour un ili9341
writeRegister(0xD3); readData8Bits(); readData8Bits(); num=(readData8Bits()<<8)+readData8Bits(); // Lecture du l'Id du driver ILI9341

 

Référence

void writeRegister(byte registre);

Paramètre passé

registre: numéro du registre

Valeur retournée

Aucune

 

Voir aussi

- writeData8() Écrit un octet de donnée dans l'afficheur
- writeData16() Écrit un word 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.

 

Exemples

PecheuxGraph_ILI9341_8bits.zip\PecheuxGraph_ILI9341_8bits\examples\Documentation\Exemple-600-readData8\Exemple-600-readData8.ino (dans votre fichier téléchargé), version ILI9341:

// Ce programme montre qu'avec les fonctions de bas niveau, on arrive à toutes les possibilités du driver

#include <PecheuxGraph_ILI9341_8bits.h>

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);
}

 

PecheuxGraph_ST7781_8bits.zip\PecheuxGraph_ST7781_8bits\examples\Documentation\Exemple-600-readData8\Exemple-600-readData8.ino (dans votre fichier téléchargé), version ST7781:

// Ce programme montre qu'avec les fonctions de bas niveau, on arrive à toutes les possibilités du driver

#include <PecheuxGraph_ST7781_8bits.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 readData8Bits(). Bien entendu, il est indispensable d'avoir la documentation du driver.

Ces fonctions sont les fonctions de base de la bibliothèque.

 

getRadioPointeur()   <<     >>   writeData8()