Avant de parler de mon souci, je tiens à remercier ce forum est tous les acteurs cela ma bien aider à la compréhension de certaine chose sur Arduino.
En cette période de confinement je souhaite également beaucoup de courage à vous tous.
Voila ceci étant dit je vous pose mon souci.
J'utilise le bus I2C pour piloter un écran Oled SSD1306, je désire que c'est écran ce mette en veille après une période d'inactivité, j'ai vu que il fallait gérer cette veille par la gestion des esclaves avec Wire. J'ai lu pas mal de documentation mais je voudrais choisir la meilleure option. Voici une idée de code permis surement tant d'autre.
Je précise que le système possède un capteur de mouvement qui déclenche des informations sur l'écran et que quand il y à plus de mouvement l'afficheur s'éteint (c'est le but recherché) et dés que le capteur de mouvement perçois un mouvement il se rallume ( encore le but à atteindre).
#include <U8g2lib.h>
#ifdef U8X8_HAVE_HW_SPI
#include <SPI.h>
#endif
#ifdef U8X8_HAVE_HW_I2C
#include <Wire.h>
#endif
U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE);
void setup(void) {
u8g2.begin();
u8g2.clearBuffer(); // clear the internal memory
u8g2.setFont(u8g2_font_ncenB08_tr); // choose a suitable font
u8g2.drawStr(0,10,"Hello World!"); // write something to the internal memory
u8g2.sendBuffer(); // transfer internal memory to the display
// affiche message
}
void loop(void) {
delay(1000); // ecran reste allumé 1 seconde
u8g2.setPowerSave(1); // éteint écran
delay(500); //durant 500 millisecondes
u8g2.setPowerSave(0); // allume écran
}
exemple hello world de la biblio
testé avec oled ssd1306 : constructeur
U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE);
à adapter suivant votre croquis, en fonction de quelle "inactivité" l'écran doit s'éteindre
ce qui me fascine avec cette biblio c'est qu'elle convient à des dizaines d'écrans monochrome différents, tous les écrans ont un registre "display on/off" ? réponse : NON
fonction qui est sleep on off dans u8glib, IF POSSIBLE : Supported for ST7565 and SSD13xx controller.
j'ai testé avec succes 3 modeles glcd de recup(depuis 15 ans au fond d'un tiroir) avec u8glib : t6963c toshiba varitronix 128x64, powertip 240x128,
ks108 JE-AN1286404, pas testé la fonction sleep
J'utilise la lib U8g2, je vais essayer de faire avec cette lib pour répondre à Elektrax j'utilise un capteur de mouvement apds9960 l'extinction du ssd1306 va ce faire après un Delay et quand le capteur capte un geste il le rallume, voila pour la fonctionnalité.
Effectivement 72% cela fait beaucoup pour une gestion de veille. Je vais regarder la démo Greiman.
La librairie GreiMan ne possède pas de méthodes graphiques.
Mais j'arrive à fabriquer par exemple un indicateur de niveau batterie avec une police de 6 caractères (voir le code dans l'article).
Très intéressant ce comparatif je viens de finir une prévision qui fonctionne et voila ma consommation de ressource.
Le croquis utilise 285644 octets (29%) de l'espace de stockage de programmes. Le maximum est de 958448 octets. Les variables globales utilisent 29316 octets (35%) de mémoire dynamique, ce qui laisse 52604 octets pour les variables locales. Le maximum est de 81920 octets.
C'est sur je suis d'accord avec sa, je vais me concentrer sur un autre sujet à savoir, adapter une batterie sur mon PCB, je n'ai pas de carte adaptatrice je conçoit les PCB sous kicad.
J'ai commencer travailler sur la compréhension de la consommation de mon circuit et à propos de cela, je conseille ces deux liens de hbachetti qui sont vraiment une base de travail importante sur le sujet.