
/* Étude des méthodes de U8glib.
   Dans ce démonstrateur, on teste un écran positionné en mode portrait avec inversion du sens
   à chaque seconde. Par exemple cette fonctionnalité serait utilisée lors de la détection du
   bas par capteur gravitationnel.
   SDA est branché sur A4.
   SCL est branché sur A5
     
                                            PGM                 RAM dynamique
Compilateur v1.7.9 :                 8674 Octets (26%)         339 Octets (16%)   */

//--------------------- Définition des broches d'E/S ------------------------
// Pas d'E/S à initialiser, c'est U8glib qui s'en charge.

//------------------------ Constantes du programme --------------------------
#define Version "22/08/2024" // @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

#include "U8glib.h"

U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE); // Usage de la ligne I2C (Two Wire Interface)

//------------------------- Variables du programme --------------------------
byte I = 0;

//-------------------------------------------------------------------------------------

void setup() {}

void loop() {u8g.setRot90(); PAGE1(); delay(1000); u8g.setRot270(); PAGE1(); delay(1000); I++;}

//======================== Procédures de servitude =============================
void Aff_TEXTE(byte X, byte Y, char TEXTE[]) {// Choisir Y=9 pour tous les titres.
  char Caractere; byte I = 0;
  while (Caractere !=0) {Caractere = TEXTE[I]; u8g.setPrintPos((I*6)+X, Y); I++; u8g.print(Caractere);}}
 
void CADRES() {u8g.drawFrame(0,0,64,11); u8g.drawFrame(0,12,64,113);} // Cadre TITRE et cadre données.

void PAGE1() {
  u8g.setFont(u8g_font_6x10); // Pocice de matrices de 6x10 pixels lettres MJA/min comprises.
  u8g.firstPage(); do {// Début de la boucle d'affichage de la page écran.
  //================ Définition des éléments à afficher ================
  CADRES(); u8g.drawPixel(20,11); u8g.drawPixel(44,11);
  Aff_TEXTE(5, 9 ,"TITRE XX.");
  //------------- Affiche un compteur en format double. -------------
  u8g.setScale2x2(); u8g.setPrintPos(9, 15); u8g.print(I); // Affiche le compteur en format double.
  // ATTENTION : Ci-dessus les coordonnées sont doublées par le logiciel de la bibliothèque.
  u8g.undoScale(); // Revient à la taille normale. 
  Aff_TEXTE(5,39,"Pos= 5,39");
  Aff_TEXTE(5,49,"Pos= 5,49");
  Aff_TEXTE(5,59,"Pos= 5,59");
  Aff_TEXTE(5,69,"Largr=");
  u8g.setPrintPos(41, 69); u8g.print(u8g.getWidth()); 
  Aff_TEXTE(5,79,"Hautr= ");
  u8g.setPrintPos(41, 79); u8g.print(u8g.getHeight());
  Aff_TEXTE(5,89,"Pos= 5,89");
  Aff_TEXTE(5,99,"Pos=5,99");
  Aff_TEXTE(5,109,"Pos=5,109");
  Aff_TEXTE(5,119,"Pos=5,119");}
  //====================================================================
  while(u8g.nextPage());}
