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

Utilisation de la librairie "lib_1306_rot.h" avec un câblage sur 2 gpios.

Ici la librairie est utilisée avec un montage (câblage) un peu plus complexe, puisqu'une interface I/O sur I2C (PCF85741) est ajoutée au montage. Son but est de libérer des gpios du processeur (ici un 8266-12). Dans ce cas on voit que seulement 2 fils partent de l'ESP (mis à part ceux de l'alim) L'ESP dialogue avec l'afficheur OLED et l'encodeur rotatif avec son interface I2C, les signaux de l'encodeur sont raccordés sur le PCF85741. Ceci est totalement transparent pour le programmeur grâce à la librairie et cela permet d'avoir une IHM (Interface Homme Machine) sur 2 fils. Cela présente également deux avantages, on a libéré des gpios sur l'ESP pour d'autres tâches mais on a également à disposition 5 ports supplémentaires à disposition sur le PCF85741 qui sont gérable depuis des fonctions de la librairie.

Le schéma dont l'interface se résume ainsi le + (3v3 ou 5v) la masse, scl et sda.

Librairie lib_1306_rot Arduino schema pcf85741 oled ssd1306

Encodeur rotatif sur I2C
L'encodeur rotatif est ici connecté sur un PCF85741 celui-ci ainsi que l'écran OLED ssd1306 sont ensuite raccordés sur le bus I2C.

Le câblage est vraiment rapide et si il est souvent utilisé peut être câblé sur un petit PCB.
(erreur sur image c'est bien PCF85741)

Librairie Arduino menu et saisie sur oled i2c ssd1306

Ici sur le schéma ci-dessus on utilise un PCF85741, sur le processeur (arduino ou ESP8266-1 ou ESP8266-12 ou ESP32) seulement 2 gpios seront necessaires.
La syntaxe de déclaration de l'objet va donc être :
util_1306 Uoled(adr_i2c_io, encod_clk, encod_dt, encod_sw, display);
adr_i2c_io => Adresse du circuit PCF85741
encod_clk, encod_dt, encod_sw => Chaque signal de l'encodeur est associé à un numéro de sortie du PCF85741
display => correspont à l'objet qui a été créé pour l'écran OLED.


L'encodeur rotatif.

Encodeur rotatif en plaquette L'encodeur rotatif est disponible en brut ou sur plaquette qui doit inclure 3 résistances de rappel au + (positif).
Différents Encodeurs rotatifs sont supportés mais l'objet a été créée avec un KY-040 30 pas.
Cette librairie a été développée avec un encodeur qui comporte bien une résistance de rappel au positif sur les trois signaux. Il existe cependant sur le marché des encodeurs sur plaquette ou la résistance sur le signal "SW" n'a pas été installée. Cette librairie prend donc en charge ce cas et les trois entrées de l'encodeur sont déclarée en PULLUP dans le cas ou vous n'utilisez pas de PCF85741 (param adresse à 0). L'utilisation de résistances n'est donc plus nécessaire. Quelques explications supplémentaires sur l'encodeur et le PULLUP sont disponibles ici en bas de page.

Comment utiliser les sorties optionnelles du circuit PCF85741

Evidement cette possibilité n'est accessible que dans le cas
où vous utilisez un PCF85741 !

Des fonctions supplèmentaires ont été ajoutées à la librairie pour la gestion en entrée ou en sortie des broches restées disponibles sur le PCF85741 (comme l'encodeur rotatif n'en utilise que 3 il en reste 5 !).
Attention : Une remise dans un état stable de l'encodeur rotatif (nécessaire pour rattraper le timing)

uint8_t bouton = 3; // permet de tester la lecture d'un bouton sur P3 du PCF85741
uint8_t led_1 = 4; // test avec une led de l'écriture sur P4 du PCF85741
if(Uoled.li_eb_rot(bouton)){ // Lecture d'un eb sur une entrée du circuit i2c I/O
	display.drawString(64, 30, "Bouton ok !");
	delay(20);
	Uoled.ecri_eb_rot(led_1, false); // Ecriture d'un eb sur une sortie du circuit i2c I/O
}
Uoled.init_eb_rot(); // Remise dans un état stable de l'encodeur rotatif (nécessaire pour rattraper le timing)
	

Exemple de câblage suivant préconisations du datasheet PC8574 de led ou de bouton
(risque de problème de fonctionnement en cas de non respect).

exemple cablage e/s sur pcf85741
Haut de page

Annexe

Ecran OLED SD1306 et Encodeur rotatif sur I2C
Une alternative au PCF85741 (fond de tirroir) les circuits I2C qui sont conçus pour le raccordement des anciens LCD 2 lignes genre "1602".


On peut donc utiliser la petite carte code 4585 équipée du PCF8574...


Attention brochage particulier des sorties P0 à P..
P0 P1 P2 P3 P4 P5 P6 P7
4 5 6 NC 11 12 13 14

Haut de page
Retour accueil lib_1306_rot