
/* Étude des méthodes de U8glib.
   Voir le commentaire en fin de listage.
   ATTENTION : cette possibilité n'est pas documentée dans le petit livret.

   SDA est branché sur A4. SCL est branché sur A5
     
                                            PGM                 RAM dynamique
Compilateur v1.7.9 :                  9864 Octets (30%)          232 Octets (11%)   */

//--------------------- 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 --------------------------
// Néant.

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

void setup() {u8g.firstPage(); do {Affiche_la_page_ecran();} while( u8g.nextPage() );}

void loop(void) {}

//======================== Procédures de servitude =============================
void Affiche_la_page_ecran() {
  // Le pointeur sur les chaînes de la mémoire flash peut être stocké dans un type spécial :
  const __FlashStringHelper *flash_ptr;
  u8g.setFont(u8g_font_unifont);
  flash_ptr = F("Bonjour les amis!"); // Affecter une valeur en zone pointée.
  // Construire deux textes décalés.
  u8g.drawStr( 0, 20, flash_ptr); // Pointeur utilisé en passage de paramètre.
  u8g.drawStr( 1, 21, flash_ptr); // Pointeur utilisé en passage de paramètre.
  // La macro F() peut être utilisée directement :
  u8g.drawStr( 0, 40, F("Texte Dynamique."));}
  
/* Commentaire :
  Afficher un texte directement ou par "flash_ptr" aboutit à un encombrement des mémoires
  strictement identique.
  En revanche, si un même texte doit être utilisé deux fois, le passer par paramètre diminue
  la taille du programme de sa "longueur+1". */
