Note de ce sujet :
  • Moyenne : 3.67 (3 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
Code OLED 128*64
Rebonjour,

J'ai retravaillé sur ce code. En effet, j'ai constaté qu'il y avait des effets de scintillements et de clignotements de l'affichage qui sont assez pénibles à la longue.
J'ai donc modifié le code source pour éviter ce désagrément (j'ai créé un buffer secondaire), et le résultat est désormais bien meilleur en termes de qualité et de confort d'affichage (il n'y a plus aucun flicker), avec une mise à jour à la seconde.
Vous trouverez dans le fichier zip joint le fichier OLED.ino modifié en conséquence, avec la même procédure pour l'intégrer aux sources du routeur solaire.


Pièces jointes
.zip   OLED.zip (Taille : 4.35 Ko / Téléchargements : 16)
_________________________________________________
Routeur Solaire en v14.22
Pilotage d'un cumulus de 3kW + Jeedom v4.4.19 + Station solaire 3,5kW
Répondre
Merci Daniel, super travail !

Petite question : que dois-je changer dans le code pour que l'écran reste toujours allumé ?
Répondre
(12-04-2025, 08:39 AM)kymcoman a écrit : Merci Daniel, super travail !

Petite question : que dois-je changer dans le code pour que l'écran reste toujours allumé ?

Bonjour,

Merci ! Wink 

Pour rendre l'affichage permanent, il suffit de commenter ou supprimer ces lignes dans le code :

[...]
unsigned long now = millis();
//if (millis()-millis_start < TIMER_PAGE) {
  if (now - millis_start >= 1000) {
    sprite.fillScreen(0x0000); // Efface le buffer (l'écran)
    Ecran_permanent();
    if (Selecteur_page == 1) {
      Ecran1();
      }
      else {
      Ecran2();
      }
    }
//  }
//  else {
//    Selecteur_page = 0; // On repart sur la page principale si appui sur le BP après l'extinction de l'écran
//    sprite.fillScreen(0x0000); // Efface le buffer (l'écran)
//    }
sprite.pushSprite(0, 0);  // Publie le buffer sur l'écran sans aucun scintillement
[...]

Mais avec un écran OLED, je ne conseille toutefois pas de laisser un affichage permanent en raison du fait qu'il risque d'y avoir à long terme un effet de marquage indélébile.
Aussi il y a deux solutions pour l'éviter :
- soit augmenter le temps d'affichage :  il suffit de jouer avec la constante TIMER_PAGE défini dans le code à 20000ms (20 secondes) et qu'on peut très bien augmenter (ou diminuer).
- soit définir le paramètre oled.setBrightness à la valeur 0 : oled.setBrightness(0); ce qui aura pour effet de diminuer la luminosité de l'écran quasiment de moitié, et donc plus adapté à un affichage permanent.
_________________________________________________
Routeur Solaire en v14.22
Pilotage d'un cumulus de 3kW + Jeedom v4.4.19 + Station solaire 3,5kW
Répondre
Je me suis mal exprimé :
Avec les nouvelles modifications, l’écran reste bien allumé, mais les pages ne défilent plus automatiquement.
Que dois-je corriger pour réactiver le défilement automatique tout en gardant l’écran allumé en permanence ?

Merci !
Répondre
(12-04-2025, 11:09 AM)kymcoman a écrit : Je me suis mal exprimé :
Avec les nouvelles modifications, l’écran reste bien allumé, mais les pages ne défilent plus automatiquement.
Que dois-je corriger pour réactiver le défilement automatique tout en gardant l’écran allumé en permanence ?

Merci !

D'accord... 
Raphaël a en effet prévu un switch automatique dans la gestion de ses écrans, ce que de mon côté je n'ai pas intégré faute d'en avoir besoin (toutes les infos importantes sont sur la page 1).
Il suffit dans ce cas d'effectuer cette modification (ne pas tenir compte de ce que j'ai dit plus haut pour rendre l'affichage permanent) :

Remplacer :

  else {

    Selecteur_page = 0; // On repart sur la page principale si appui sur le BP après l'extinction de l'écran
    sprite.fillScreen(0x0000); // Efface le buffer (l'écran)
    }

Par :

  else {

    Selecteur_page = !Selecteur_page;
    millis_start = millis();
    }

Bien entendu, dans ce cas le GPIO15 n'est plus utile et on peut effacer/commenter ces lignes :

[...]

#define PAGE_OLED 15//-- Patch01 -- : PIN - IN : changement page d'écran d'informations

[...]


//Initialisation du bouton poussoir (affectation GPIO, mode de fonctionnement)
pinMode (PAGE_OLED, INPUT_PULLUP);

//Initialisation de l'interruption (GPIO affecté au BP, pgm à éxecuter, activé sur front descendant)
attachInterrupt(PAGE_OLED, page_change_ISR, FALLING);


[...]

void page_change_ISR() {

// Code éxecuté à chaque appui sur le bouton poussoir de changement de page via une IRQ.
Selecteur_page = !Selecteur_page;
millis_start = millis();
}

[...]
_________________________________________________
Routeur Solaire en v14.22
Pilotage d'un cumulus de 3kW + Jeedom v4.4.19 + Station solaire 3,5kW
Répondre
Super génial, mille mercis !
Voilà, il me reste une dernière requête :
Sur la photo, on voit que la surbrillance TR est décalée de 2 pixels vers le bas. Comment puis-je corriger cela ? Ou bien remodèle cette surbrillance pour qu'elle épouse correctement le TR, sans déborder sur la ligne située en dessous.


Pièces jointes Miniature(s)
   
Répondre
(12-04-2025, 02:41 PM)kymcoman a écrit : Super génial, mille mercis !
Voilà, il me reste une dernière requête :
Sur la photo, on voit que la surbrillance TR est décalée de 2 pixels vers le bas. Comment puis-je corriger cela ? Ou bien remodèle cette surbrillance pour qu'elle épouse correctement le TR, sans déborder sur la ligne située en dessous.

Ah oui tient, c'est vrai !
Je ne l'avais jamais remarqué vu que je ne suis jamais dans ce mode.
C'est un petit bug dans le code, il faut le rectifier comme suit :

  if(Mode!=4){

    sprite.drawString("TR",115,44);   
  }
  else {
    sprite.fillRect(114, 44, 13, 9, TFT_WHITE);
    sprite.setTextColor(TFT_BLACK, TFT_WHITE);
    sprite.drawString("TR",115,45);
_________________________________________________
Routeur Solaire en v14.22
Pilotage d'un cumulus de 3kW + Jeedom v4.4.19 + Station solaire 3,5kW
Répondre
Merci Daniel, tu gères ! Je suis au top. Wink
Répondre
(26-06-2024, 06:33 PM)DanielJ a écrit :
(26-06-2024, 05:37 PM)Raphael591 a écrit : Merci André !
Content que t'es pu adapter.
C'est du 0.96 '' l'écran comme le mien, c'est quand même un peu petit.
Je remplacerai probablement par un peu plus grand 2.5 pouce !

Oui, il fait 128x64 px mais cela suffit je pense pour afficher l'essentiel.
Sinon j'ai repris un peu ton code pour l'adapter à ce que je souhaitais, à savoir :
1.- Un écran affichant le logo (que je n'ai pas touché car je le trouve vraiment bien !) au démarrage, ou après un reset, puis un seul écran fixe (pas de turn-over) qui affiche en permanence les données sélectionnées.
Vu que c'est un écran OLED, ce n'est pas terrible de le laisser allumé en permanence (effet de marquage à plus ou moins long terme). Je verrai pour ajouter un économiseur d'écran (décalage périodique de quelques pixels par exemple, ou extinction de l'écran de temps à autre ou sur une plage horaire). 
2.- L'affichage de la puissance injectée (-) / consommée (+) vers/du réseau, en double taille et justifié à droite.
Je préfère voir cette donnée qui reflète mieux le comportement actuel de mon chauffe-eau pour vérifier s'il consomme ou pas, plutôt que la puissance injectée/jour qui me semble secondaire.
3.- L'ouverture en pourcentage + bargraph du taux d'ouverture du relais SSR utilisé.
4.- L'icône du soleil ne clignote (soleil/rien) que s'il y a injection de puissance, mais pas sur une ouverture de triac/relais.
En effet, l'ouverture d'un triac/relais ne préjuge pas de la consommation du chauffe-eau, car si l'eau est assez chaude, le thermostat interne au cumulus va couper le cumulus, et la consommation sera nulle même avec un triac/relais à 100%.
Et si quelqu'un est intéressé par ces petites modifs, je peux bien sûr fournir le code...


Bonjour,
Je voudrais, dans la partie Écran 2, afficher la puissance qui se cumule routée vers le chauffe-eau (remis à zéro chaque jour) plutôt que celle injectée dans le réseau, en adaptant ce code :

 sprite.drawString("Puissance",0,23);  
 int Pw = int(PuissanceS_M - PuissanceI_M);
 String Pwaff=String(Pw)+" Watt";
 sprite.setTextSize(1);
 sprite.drawString(Pwaff,128-(Pwaff.length()*6),23);

 sprite.setTextSize(1);

Merci
Répondre
Bonjour,
apres avoir branché et parametré l'écran voici mon affichage, j'ai un triac et une mesure UxIx2, je suis en version 14.22
j'arrive pas a avoir d'autre affichage.
faut il modifier autre chose?
Maël


Pièces jointes Miniature(s)
   
Répondre


Atteindre :


Utilisateur(s) parcourant ce sujet : 4 visiteur(s)