home castoo
chapitre programmation
programmation proc�durale

Librairie "lib_1306_rot"
Arduino , esp8266 et esp32
saisies et menus sur écran oled ssd1306

Février 2021
-
Nov. 2023

Documentation "lib_1306_rot"
  1. Description / Dowload librairie "lib_1306_rot.h"
  2. Utilisation avec un câblage 2 fils
  3. Utilisation avec un câblage 5 fils
  4. Déclaration de la librairie
  5. Sources(.h et .cpp) de la librairie
  6. Exemples de la librairie

Déclaration de la librairie "lib_1306_rot.h" dans votre code.

Comment déclarer et initialiser la librairie

Trois librairies sont à déclarer "lib_1306_rot.h", "SSD1306Wire.h" et "Wire.h"
Sont présentés ici l'initialisation de l'objet util_1306 contenu dans la librairie "lib_1306_rot.h"
Pour la librairie "SSD1306Wire.h" il est important de lire les remarques plus bas dans cette page.
La librairie "wire.h" elle est utilisée dans certains cas (voir exemples), elle est directement disponible dans l'IDE Arduino la déclaration ne présente donc aucune difficulté.

Donc pour initialiser l'objet 5 paramètres sont demandés :

Cas ou l'on utilise un PCF85741 (on est donc dans le cas d'un câblage 2 fils)


#include "lib_1306_rot.h" // Déclaration de la librairie
// Adresse du PCF85741 peut être différente en fonction de la position des commut. du circuit, en principe c'est 0x20
#define adr_i2c_io 0x21 // Attention ici j'utilise 0x21 et non pas l'adresse classique qui est 0x20
uint8_t encod_sw  = 0; // signal SW  de l'encodeur rotatif sur P0 du PCF85741
uint8_t encod_dt  = 1; // signal DT  de l'encodeur rotatif sur P1 du PCF85741
uint8_t encod_clk = 2; // signal CLK de l'encodeur rotatif sur P2 du PCF85741
// init Uoled (adresse du PCF85741, clk, dt, sw et nom de l'objet LCD)
util_1306 Uoled(adr_i2c_io, encod_clk, encod_dt, encod_sw, display); // Création d'une instance de l'objet util_1306
	

Cas ou l'on utilise une connexion direct de l'encodeur sur le processeur (câblage 5 fils)


#include "lib_1306_rot.h" // Déclaration de la librairie
// Adresse = 0
#define adr_i2c_io 0 // l'adresse à 0 permet à la librairie d'identifier les signaux de l'encodeur comme des gpios
uint8_t encod_sw  = 14; // signal SW connecté en D5 sur un ESP8266
uint8_t encod_dt  = 12; // signal DT connecté en D6 sur un ESP8266
uint8_t encod_clk = 13; // signal CLK connecté en D7 sur un ESP8266
util_1306 Uoled(adr_i2c_io, encod_clk, encod_dt, encod_sw, display); // Création d'une instance de l'objet util_1306
	

Quelques détails sur l'utilisation

Inclure la librairie de l'écran "SSD1306Wire.h"

recuperer lib ecran oled
Attention c'est celle-ci qu'il faut télécharger sur le site "github", elle est différente de celle qui est disponible dans l'environnement "Arduino".
On la reconnait au "w" de Wire qui doit dans notre cas être une majuscule. (Merci à Guy, pour cette précision qui peut éviter pas mal de galère !).
Merci également à tous les contributeurs(46) de ce petit package qui contient plusieurs librairies. Vous devez charger le zip complet comme montré sur l'image ci-contre.


Voir ici la doc pour integrer une librairie zip dans l'IDE Arduino.

On va donc avoir en debut de programme :

Inclure la librairie de l'écran OLED 1306
#include "SSD1306Wire.h"
Inclure notre librairie
#include "lib_1306_rot.h"
Initialiser l'objet écran
SSD1306Wire display(0x3c, D2, D1); // I2C sur un Wemos D1 mini (esp8266 donc gpio 4 (ou D2) > SDA & gpio 5 (ou D1) > SCL)
Identifier l'adresse du circuit i2c et les broches qui vont être utilisées
Exemple ici avec l'utilistation d'un PCF85741 il n'y a que cette partie qui change d'un cas à l'autre.
#define adr_pcf85741 0x21 // Adresse du circuit I2C 8 I/O (attention c'est souvent 0x20)
#define encod_sw 0 // P0
#define encod_dt 1 // P1
#define encod_clk 2 // P2
Initialiser notre objet (creer une instance de la class)
util_1306 Uoled(adr_i2c_io, encod_clk, encod_dt, encod_sw, display);
Dans le setup()
Initialisation de l'écran OLED
display.init();
En option : Autoriser la sortie des menus par le début de liste
Uoled.sortie_deb(false); // Invalide sortie balayage aprés chaque saisie (+ rapide mais perso, j'aime pas !) à tester à true...
Dans le code, exemple d'une saisie alphanumérique
nom = Uoled.aff_menu_Alpha(); // On lance la saisie

Haut de page
Retour accueil lib_1306_rot