/*  Programme noyau pour gérer un afficheur OLED 128 x 64 "bicolore".
     
DIFFERENTS BRANCHEMENTS :
 D0  : Libre pour F.E.                         A0 : Libre pour F.E.
 D1  : Libre pour F.E.                         A1 : Libre pour F.E.
 D2  : Libre pour F.E.                         A2 : Libre pour F.E.
 D3  : Libre pour F.E.                         A3 : Libre pour F.E.    
 D4  : Libre pour F.E.                         A4 : Libre pour F.E.
 D5  : Libre pour F.E.                         A5 : Libre pour F.E.
 D6  : Libre pour F.E. 
 D7  : Libre pour F.E.                         A6 : Libre pour F.E.
 D8  : Libre pour F.E.                         A7 : Libre pour F.E.
 D9  : Libre pour F.E.
 D10 : Libre pour F.E.
 D11 : Broche_SDA Pilotage OLED.
 D12 : Broche_SCL Pilotage OLED.
 D13 : Libre pour F.E.        
 */

#include <Adafruit_ssd1306syp.h> // Déclaration à placer mpérativement avant #include <EEPROM.h>
                                 // si cette dernière est incluse dans le programme.

// Déclarations pour l'afficheur OLED :
#define broche_SDA 11 // D11 utilisée en sortie.
#define broche_SCL 12 // D12 utilisée en sortie.

Adafruit_ssd1306syp display(broche_SDA, broche_SCL);

// Variables du programme.
int Compteur = 0;

void setup() {display.initialize(); delay(300);}
  
void loop() {
  display.clear();
  Affiche_cadre_du_haut(20); display.print("Compteur banal.");
  display.setCursor(30,30); display.setTextSize(2);
  display.print(Compteur); display.update();
  Compteur++; delay(1000);}

//---------------------------- Routines de servitude pour l'afficheur OLED ---------------------------
void Effacer_zone(byte X, byte Y, byte NB_caracteres) {
  byte I = 10; 
  for (byte J=0; J < I; J++)
       display.drawLine(X, Y + J, X + (NB_caracteres * 6), Y + J, BLACK);}
  
void Affiche_cadre_du_haut(byte X) {
  CADRE_UP();  display.setTextSize(1); // Taille la plus petite.
  display.setCursor(X,4);}

void CADRE_UP() {display.drawRect(0, 0, 128, 16, WHITE);}
void CADRE() {display.drawRect(0, 16, 128, 48, WHITE);}

  
