
/* Étude des méthodes de U8glib.
   Démonstrateur pour tester le mode Sommeil/Réveil.
   L'affichage du texte clignote rapidement.
   
   SDA est branché sur A4. SCL est branché sur A5
     
                                            PGM                 RAM dynamique
Compilateur v1.7.9 :                  7868 Octets (23%)          300 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 = 95;

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

void setup() {PAGE1();}

void loop() {
 u8g.sleepOn(); delay(20); I++; u8g.sleepOff(); delay(30);}

//======================== Procédures de servitude =============================
void CADRES() {u8g.drawFrame(0,0,128,13); u8g.drawFrame(0,12,128,52);} // Cadre TITRE et cadre données.
  
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 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 ================
  //------------- Affiche un compteur en format double : -------------
  u8g.setScale2x2(); u8g.setPrintPos(44, 20); u8g.print(I); u8g.undoScale();
  // ATTENTION : Ci-dessus les coordonnées sont doublées par le logiciel de la bibliothèque.
  //------------------------------------------------------------------
  CADRES();
  Aff_TEXTE(5, 9 ,"Maximum 20 positions");
  Aff_TEXTE(5,21,"Texte en 5,21");
  Aff_TEXTE(5,31,"Texte en 5,31");
  Aff_TEXTE(5,41,"Texte en 5,41");
  Aff_TEXTE(5,51,"Texte en 5,51");
  Aff_TEXTE(5,61,"Texte en 5,61");}
  //====================================================================
  while(u8g.nextPage());} // Fin de la boucle d'affichage de la page écran.
