
/* Étude des méthodes de U8glib.
   Démonstrateur pour Tester les rotations graphiques et textuelles.
   
   SDA est branché sur A4. SCL est branché sur A5
     
                                            PGM                 RAM dynamique
Compilateur v1.7.9 :                  11514 Octets (35%)          248 Octets (12%)   */

//--------------------- 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)
uint8_t offset = 0;

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

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

void setup() {u8g.setFont(u8g_font_unifont);} // Choix de la police de caractères.

void loop() {u8g.firstPage(); do {Affiche_Ecran();} while(u8g.nextPage()); Faire_tourner(); delay(500);}

//======================== Procédures de servitude =============================
void Faire_tourner(void) {
  switch(Direction) {
      case 0 : {u8g.undoRotation(); break;}
      case 1 : {u8g.setRot90(); break;}
      case 2 : {u8g.setRot180(); break;}
      case 3 : {u8g.setRot270(); offset = ( offset + 1 ) & 0x0f;}}
  Direction++; if(Direction > 3) Direction = 0;}

void Affiche_Ecran() {
  u8g.drawStr(0, 18, "Bonjour");  
  u8g.drawBox(0, 0, 3, 3);
  u8g.drawBox(u8g.getWidth()-6, 0, 6, 6);
  u8g.drawBox(u8g.getWidth()-9, u8g.getHeight()-9, 9, 9);
  u8g.drawBox(0, u8g.getHeight()-12, 12, 12);}
