![]() |
Librairie "lib_1306_rot" |
Février 2021 |
Documentation "lib_1306_rot" |
|
Exemple d'utilisation de la librairie "lib_1306_rot.h"
Cette librairie est conçue pour fonctionner avec un écran Oled ssd1306 et un encodeur rotatif.
Souvent lors de projet avec des ESP8266 par exemple on manque rapidement de gpio de disponible, ici avec un câblage sur deux fils vous n'utilisez plus que 2 gpios
ce qui va vous permettre de libérer trois gpio pour votre projet.
Il est possible d'utiliser cette librairie avec deux types de câblage :
- soit en raccordant les trois fils de l'encodeur directement sur des gpios du processeur, 5 fils seront donc nécessaire (2 pour i2c et 3 pour l'encodeur).
- soit en raccordant les trois fils de l'encodeur derrière une interface I/O PCF85741 sur I2C, dans ce cas seulement deux gpios (2 pour i2c) seront utilisés.
Dans ce 2eme cas, il reste des positions disponibles sur l'interface I/O i2c pour d'autres utilisations sans surcharger les gpios du processeur.
Si vous avez utilisé une version plus ancienne de cette librairie, il faut savoir que la version présentée ici est plus puissante et plus simple à utiliser.
Les anciennes versions (menu_oled, sai_oled, menu_oled_i2c et sai_oled_i2c) sont disponibles sur le site seulement pour les personnes qui ont commencés à les utiliser.
Plusieurs versions de cette librairie sont en cours de préparation, version directe sans i2c ainsi qu'une version pour les écran ILI9341
(Déjà utilisée sur mon projet de plateforme de développement).
Quelques fonctions ont également été testées sur Raspberry (en python) à suivre....
Télécharger (upload) le zip : | lib_1306_rot.zip |
Voir ici la doc pour integrer une librairie zip dans l'IDE Arduino. | |
Voir ici la doc pour integrer une librairie zip dans Visual Vision Code. |
Les exemples sont mémorisés et disponibles dans l'IDE Arduino sous "Fichier" "Exemples" "lib_1306_rot"
Les noms de librairie ont été actualisés pour accompagner ce changement de version, toutes les fonctions restent identiques
mais il est maintenant possible d'utiliser cette version sans interface I/O PCF85741 I2c.
"util_1306_i2c" devient "lib_1306_rot"
Le nom de l'objet "util_1306" a été conservé par souci de compatibilité.
Je vous livre ici le code complet en "Open Source".
Quand on développe sur Arduino où ESP on a souvent besoin d'adapter son montage à un environnement spécifique, réseau wifi,
vitesse de l'interface série, nom d'une action... cette librairie va permettre par exemple de saisir, un SSID Wifi et le mot de passe du réseau, ceci évite de
connaitre au moment de la création du code ces informations et donc le mot de passe n'apparaitra plus codé en dur dans le code.
Cette librairie est utilisée à plusieurs reprises dans ce site voir les exemples dans le chapitre électronique.
// Déclaration des variables du menu
int A_menu; // Choix selectionné dans menu
const int nb_ch_menuA = 3; // choix du menu Principal
const String ch_menuA[] = {"Saisir votre nom", "Saisir votre prénom", "Afficher Nom Prénom"};
String _ch_menuA = * ch_menuA;
// Lancement du menu
A_menu = Uoled.init_menu(nb_ch_menuA, _ch_menuA);
String s_nom = Uoled.sai_Alpha("Saisir Nom ?");
L'objet permettant la saisie propose 4 types d'écrans :
Chaque écran est divisé en trois parties :
A droite : Un premier menu qui permet de choisir le type de saisie (Majuscule, minuscule, spéciaux ou validation). Si l'on va en bout d'un menu on passe à l'autre menu.
A gauche : Une liste des caractères sélectionnés par le choix du menu de droite. Par exemple la liste des majuscules. A chaque appui sur le bouton le caractère est sélectionné
et affiché en partie 3, mais en cas d'erreur, il est possible de corriger avec le menu "val".
En bas (en haut sur cette version) : Le texte issue des sélections effectuées. Il est possible de valider ou d'annuler cette saisie avec le menu "val".
Une option modifiable dans le code permet de passer à l'autre menu par le haut et par le bas : sortie_deb(true) Quand cette option est à true, on gagne du temps dans la saisie
car il est possible de passer d'un menu à l'autre beaucoup plus rapidement mais le bouton devient plus difficile à maitriser. Perso je laisse cette option à false, à vous de tester...
Comme on peut le voir sur les photos de l'ancienne version de cette librairie, l'utilisation d'un écran bicolor massacre un peu les affichages, sur la version présentée ici
le texte est affiché en haut, cela permet de profiter de la particularité de ce type d'écran bicolor !
int res_rup = Uoled.sai_Num(3, true, "Fréquence Hz ?");
char sai_dep = Uoled.sai_mov();
const String m_s[] = {"Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Aout", "Septembre", "Octobre", "Novembre", "Décembre"};
while(sai_dep != 'B'){
sai_dep = Uoled.sai_mov();
if(sai_dep == 'G') cpt = (cpt-1<0)?11:(cpt-1);
else if(sai_dep == 'D') cpt = (cpt+1) %12;
display.setColor(BLACK);
display.fillRect(0, 20, 128, 20);
display.setColor(WHITE);
display.drawString(64, 22, String(m_s[cpt]));
display.display();
delay(30);
}
Voir l'exemple complet livré avec la librairie !
while(Uoled.li_rot_sw()){delay(10);}
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)
La librairie contient cinq fichiers regroupés dans le zip disponible en haut de cette page que vous allez pouvoir intégrer dans votre IDE arduino :
(Les exemples seront disponibles dans l'IDE Arduino (Fichier/Exemples/lib_1306_rot) quand vous aurez integr� la librairie.)