Problème Veille Ecran SSD 1306

Bonsoir,

Je planche sur un problème de veille d'un Écran OLED SSD1306 l'idée c'est de pouvoir mettre en veille cet écran mais après 1 seconde, j'ai utilisé ce code : delay(1000); u8g2.setPowerSave(1); L'instruction delay(1000); me fait réinitialisé le bus I2C je voudrais pouvoir faire cette mise en veille sans que le bus I2C soit impacter! J'utilise u8g2 comme librairie.

Merci de votre aide.

Je me répond à moi mème et j'ai vu que aucune autre lecture de valeur sur un capteur, opération mathématique ou manipulation de bits ne peut avoir lieu durant une instruction delay() cela fait stopper toute autre activité le temps de l'exécution de la pause!

Ce qui me ramène à l'instruction Millis() et l'utilisé comme délais pour l'arrêt de mon 'écran.

Toute proposition est la bienvenue.

Bonne journée

Merci de ne pas m’envoyer de MP comme dit dans ma signature, je n’y répondrai pas.

Je ne suis pas un consultant à votre service particulier, je suis un bénévole qui alloue de mon temps pour le bénéfice d’une communauté, pas une personne en particulier

Sinon Je facture 50000 euros HT de l’heure pour un conseil perso, par tranches de 10 heures payable d’avance non remboursable et sans garanties.


pour votre souci, c’est un simple usage de millis().

Pour bien débuter avec l’arduino, un bon point de départ c’est de lire les tutos d’eskimon et pour votre problème particulier il y a une section qui s’intitule Introduire le temps.

il faut aussi comprendre “blink without delay” dans les exemples de base.

Essayez cela, postez un code avec millis() et on vous aidera si vous n’y arrivez pas.

voilà j’attends la première tranche de 500,000 euros - merci. :smiling_imp: :grin:

Bonjour,

Je n'ai jamais prétendu cela!! j'avais pas vu pour les message perso, je pense que vous avez un très bon niveau de programmation et meme au niveau algorithmiques par contre pour la communication...

Vous me connaissez pas et vous dénigré, vous croyez que j'ai pas lu ? j'ai pas attendu à 53 ans et plus de 25 à passer à aider les gens dans ma spécialité pour aller cherché des infos.

Mais pas de souci je vous laisse dans vos enumeration moi je retourne à mon souci.

Mais comme je dit souvent "le tout est supérieur à la somme des parties".

Bonne journée et courage surtout en ce moment.

J-M-L:
Merci de ne pas m’envoyer de MP comme dit dans ma signature, je n’y répondrai pas.

Je ne suis pas un consultant à votre service particulier, je suis un bénévole qui alloue de mon temps pour le bénéfice d’une communauté, pas une personne en particulier

Sinon Je facture 50000 euros HT de l’heure pour un conseil perso, par tranches de 10 heures payable d’avance non remboursable et sans garanties.


pour votre souci, c’est un simple usage de millis().

Pour bien débuter avec l’arduino, un bon point de départ c’est de lire les tutos d’eskimon et pour votre problème particulier il y a une section qui s’intitule Introduire le temps.

Tu pourrais en faire don pour les équipes médicales des hôpitaux… avec tout ça on pourrait remettre les hôpitaux en état…

il faut aussi comprendre “blink without delay” dans les exemples de base.

Essayez cela, postez un code avec millis() et on vous aidera si vous n’y arrivez pas.

voilà j’attends la première tranche de 500,000 euros - merci. :smiling_imp: :grin:

Je ne dénigre personne et votre age ne change rien à l'affaire (je suis bien plus vieux que vous).

Je vous dit que je ne veux pas de MP.

Vous me dites

Je vous écris en perso car sur le forum personne à répondu et je comprend très bien mon soucis n'est pas simple...Et quand j'ai vu votre article sur la Programmation Automatehttps://forum.arduino.cc/index.php?topic=470879.msg3222727#msg3222727 je me suis dit que c'est exactement le but de ma recherche. bla bla bla

donc vous avez vu mes messages. En dessous de chacun de mes messages dans ma signature il y a écrit

Hello - Please do not PM me for help, others will benefit as well if you post your question publicly on the forums. Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous

Voilà. si vous ne comprenez pas cela je ne peux rien pour vous.

Sur le fond:

C'est fréquent de ne pas avoir de réponse sur le forum quand la question a peu d'info (quelle carte ?) ou est mal posée, avec un titre trop spécifique ou ne correspondant pas au vrai besoin. Attendre au mimimim deux jours pour avoir une réponse avant de faire un UP est la moindre des choses (comme documenté dans les règles du forum) et arroser en MP encore moins dans la netiquette.

Personnellement je ne l'ai même pas lu car avec comme titre "Problème Veille Ecran SSD 1306" je ne me suis pas penché dessus car je ne connais rien au mode veille de ces écrans.

Maintenant si j'ai bien compris votre question:

quand je veux faire une action s'il n'y a pas eu d'affichage pendant x secondes je crée deux variables globales

uint32_t chrono;
bool affichageActif = false;

Après chaque affichage je fais

chrono = millis(); // pour se souvenir du dernier moment d'affichage
affichageActif = true; // pour se souvenir que l'écran est actif

et en début de boucle j'ai simplement la bonne vielle technique millis()

if (affichageActif && (millis() - chrono >= 3000) { // on éteint 3 secondes après le dernier affichage
 // éteindre l'écran
 affichageActif = false; // pour se souvenir que l'écran est inactif
}