Messages : 671
Sujets : 22
Inscription : May 2024
Réputation :
70
retard[0], c'est pour le triac
retard[1] , c'est pour le premier relais
retard[2] , c'est pour le deuxiemer relais
Messages : 32
Sujets : 2
Inscription : Jun 2024
Réputation :
4
26-06-2024, 04:53 PM
(Modification du message : 26-06-2024, 05:00 PM par DanielJ.)
Zut grillé ! Je viens de trouver cette correspondance en effet...
J'ai testé, ca fonctionne en remplaçant :
Code : //Ouverture du triac
int Ouv = -1;
for (int i = 0; i < NbActions; i++) {
if (i == 0) {
Ouv = 100 - Retard[i];
}
}
par
Code : //Ouverture du relais SSR
int Ouv = -1;
for (int i = 0; i < NbActions; i++) {
if (i == 1) {
Ouv = 100 - Retard[i];
}
}
modif sur la ligne if (i== 1) {
(ou 2)
Merci André !
_________________________________________________
Routeur Solaire en v11.11
Pilotage d'un cumulus de 3kW + Jeedom v4.4.8.1 + Station solaire 3,5kW
Messages : 51
Sujets : 2
Inscription : Jun 2024
Réputation :
7
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 !
Messages : 32
Sujets : 2
Inscription : Jun 2024
Réputation :
4
(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...
_________________________________________________
Routeur Solaire en v11.11
Pilotage d'un cumulus de 3kW + Jeedom v4.4.8.1 + Station solaire 3,5kW
Messages : 10
Sujets : 0
Inscription : Jun 2024
Réputation :
1
27-06-2024, 08:29 PM
(Modification du message : 27-06-2024, 08:43 PM par m_fasilleau@yahoo.fr.)
Bonjour a tous
j'aurais besoin et je pense que cela pourrai intéressé d'autre personne.
Sur l'affichage ou on a l'ip, la puissance, le triac avec barre de proogression
version...
Codi ino oLFED.INO
display.setCursor(0,30);
if(Ouv == -1) {
display.print(F("Triac -")); //Triac erreur
}
else {
display.setCursor(0,30);
display.print(F("Triac "ICI AFFICHER ù OUVERTURE triac"));
je pense qu'il serai intéressant d'avoir le % douverture du trianc puis le "graph"
Le petit truc en plus "lol j'adore" avec cela je serais proches de l' a pour trouvé la solution
affichage qui me convient
Si vous avez mieux je suis preneur, je persévère de mon coté.
Bien à vous
(26-06-2024, 04:53 PM)DanielJ a écrit : Zut grillé ! Je viens de trouver cette correspondance en effet...
J'ai testé, ca fonctionne en remplaçant :
Code : //Ouverture du triac
int Ouv = -1;
for (int i = 0; i < NbActions; i++) {
if (i == 0) {
Ouv = 100 - Retard[i];
}
}
par
Code : //Ouverture du relais SSR
int Ouv = -1;
for (int i = 0; i < NbActions; i++) {
if (i == 1) {
Ouv = 100 - Retard[i];
}
}
modif sur la ligne if (i==1) {
(ou 2)
Merci André !
Bonjour
Le % d'ouverture sur le relais ssr est super, comment peut on l'adapter sur un robodym 40A.
Dans le code ouverture du triac correspond a mes attente, cependant je suis perdu, j'arriva pas à comprendre le code pour afficher le %
Merci d'éclairé ma lanterne
Force à tous, pour les aides et à André le GOAT, Le routeur original fonctione a merveille et Vous, Nous, Tous améliorons la performance de ce routeur
Cdt
Messages : 32
Sujets : 2
Inscription : Jun 2024
Réputation :
4
27-06-2024, 09:05 PM
(Modification du message : 28-06-2024, 10:02 AM par DanielJ.)
(27-06-2024, 08:29 PM)m_fasilleau@yahoo.fr a écrit : Bonjour
Le % d'ouverture sur le relais ssr est super, comment peut on l'adapter sur un robodym 40A.
Dans le code ouverture du triac correspond a mes attente, cependant je suis perdu, j'arriva pas à comprendre le code pour afficher le %
Merci d'éclairé ma lanterne
Force à tous, pour les aides et à André le GOAT, Le routeur original fonctione a merveille et Vous, Nous, Tous améliorons la performance de ce routeur
Cdt
Bonjour,
Pour afficher les pourcentages, c'est assez simple. Il suffit d'insérer dans ce code les lignes :
Code : else {
display.setCursor(0,39);
display.print(F("TRIAC "));
display.print(int(Ouv));
display.print(F("%"));
display.drawRect(60, 38, 60, 10, SH110X_WHITE);
float t = (float(60)/100)*Ouv;
display.fillRect(61, 38, int(t), 10, SH110X_WHITE);
}
Voici les lignes de code insérées :
display.print(int(Ouv));
display.print(F("%"));
_________________________________________________
Routeur Solaire en v11.11
Pilotage d'un cumulus de 3kW + Jeedom v4.4.8.1 + Station solaire 3,5kW
Messages : 6
Sujets : 2
Inscription : Jun 2024
Réputation :
0
(23-06-2024, 04:19 PM)Raphael591 a écrit : Pour ceux que ça intéresse, voici le code de mon affichage sur OLED
Nécessite de l'espace programme.
Dans l'IDE, configuration carte, partition : Minimal SPIFFS 1,9MB with OTA
Fichier à ajouter au sketch un fichier OLED.ino
Récupérer les bibliothèques Adafruit depuis l'IDE .
Modifier les PINs utilisés si nécessaire (Ici 26 et 25)
Contenu du fichier :
Code : #include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
#define OLED_RESET 4 // Reset pin # (or -1 if sharing Arduino reset pin)
#define SCREEN_ADDRESS 0x3C ///< See datasheet for Address; 0x3D for 128x64, 0x3C for 128x32
// Définir les broches SDA et SCL personalisées
#define SDA_PIN 26
#define SCL_PIN 25
bool OLED_on = false;
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
// #define SSD1306_RESET 0xE4
const unsigned char bitmap_Sun[] PROGMEM = {
0x00,0x00, // ................
0x20,0x82, // ..#.....#.....#.
0x10,0x84, // ...#....#....#..
0x08,0x08, // ....#.......#...
0x01,0xC0, // .......###......
0x07,0xF0, // .....#######....
0x07,0xF0, // .....#######....
0x0F,0xF8, // ....#########...
0x6F,0xFB, // .##.#########.##
0x0F,0xF8, // ....#########...
0x07,0xF0, // .....#######....
0x07,0xF0, // .....#######....
0x11,0xC4, // ...#...###...#..
0x20,0x02, // ..#...........#.
0x40,0x81, // .#......#......#
0x00,0x80 // ........#.......
};
const unsigned char bitmap_Off[] PROGMEM = {
0x00,0x00, // ................
0x00,0x00, // ................
0x00,0x00, // ................
0x00,0x00, // ................
0x00,0x00, // ................
0x00,0x00, // ................
0x00,0x00, // ................
0x1F,0xF8, // ...##########...
0x1F,0xF8, // ...##########...
0x00,0x00, // ................
0x00,0x00, // ................
0x00,0x00, // ................
0x00,0x00, // ................
0x00,0x00, // ................
0x00,0x00, // ................
0x00,0x00 // ................
};
const unsigned char bitmap_Signal1[] PROGMEM = {
0x00,0x00, // ................
0x00,0x00, // ................
0x00,0x00, // ................
0x00,0x00, // ................
0x00,0x00, // ................
0x00,0x00, // ................
0x00,0x00, // ................
0x00,0x00, // ................
0x00,0x00, // ................
0x00,0x00, // ................
0x00,0x00, // ................
0x00,0x00, // ................
0x00,0x00, // ................
0x40,0x00, // .#..............
0xC0,0x00, // ##..............
0xC0,0x00 // ##..............
};
const unsigned char bitmap_Signal2[] PROGMEM = {
0x00,0x00, // ................
0x00,0x00, // ................
0x00,0x00, // ................
0x00,0x00, // ................
0x00,0x00, // ................
0x00,0x00, // ................
0x00,0x00, // ................
0x00,0x00, // ................
0x00,0x00, // ................
0x04,0x00, // .....#..........
0x0C,0x00, // ....##..........
0x1C,0x00, // ...###..........
0x1C,0x00, // ...###..........
0x5C,0x00, // .#.###..........
0xDC,0x00, // ##.###..........
0xDC,0x00 // ##.###..........
};
const unsigned char bitmap_Signal3[] PROGMEM = {
0x00,0x00, // ................
0x00,0x00, // ................
0x00,0x00, // ................
0x00,0x00, // ................
0x00,0x00, // ................
0x00,0x40, // .........#......
0x00,0xC0, // ........##......
0x01,0xC0, // .......###......
0x01,0xC0, // .......###......
0x05,0xC0, // .....#.###......
0x0D,0xC0, // ....##.###......
0x1D,0xC0, // ...###.###......
0x1D,0xC0, // ...###.###......
0x5D,0xC0, // .#.###.###......
0xDD,0xC0, // ##.###.###......
0xDD,0xC0 // ##.###.###......
};
const unsigned char bitmap_Signal4[] PROGMEM = {
0x00,0x00, // ................
0x00,0x04, // .............#..
0x00,0x0C, // ............##..
0x00,0x1C, // ...........###..
0x00,0x1C, // ...........###..
0x00,0x5C, // .........#.###..
0x00,0xDC, // ........##.###..
0x01,0xDC, // .......###.###..
0x01,0xDC, // .......###.###..
0x05,0xDC, // .....#.###.###..
0x0D,0xDC, // ....##.###.###..
0x1D,0xDC, // ...###.###.###..
0x1D,0xDC, // ...###.###.###..
0x5D,0xDC, // .#.###.###.###..
0xDD,0xDC, // ##.###.###.###..
0xDD,0xDC // ##.###.###.###..
};
const unsigned char bitmap_Signal0[] PROGMEM = {
0x00,0x00, // ................
0x03,0xE0, // ......#####.....
0x0F,0xF8, // ....#########...
0x1F,0xFC, // ...###########..
0x3E,0x3E, // ..#####...#####.
0x38,0x7E, // ..###....######.
0x70,0xFF, // .###....########
0x71,0xF7, // .###...#####.###
0x73,0xC7, // .###..####...###
0x77,0x87, // .###.####....###
0x3F,0x0E, // ..######....###.
0x3E,0x1E, // ..#####....####.
0x1F,0xFC, // ...###########..
0x0F,0xF8, // ....#########...
0x03,0xE0, // ......#####.....
0x00,0x00 // ................
};
const unsigned char bitmap_Logo[] PROGMEM = {
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ................................................................................................................................
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ................................................................................................................................
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ................................................................................................................................
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ................................................................................................................................
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ................................................................................................................................
0x00,0x00,0x00,0x3F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ..........................########..............................................................................................
0x00,0x00,0x00,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ........................############............................................................................................
0x00,0x00,0x01,0xFF,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // .......................##############...........................................................................................
0x00,0x00,0x00,0x1F,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ...........................############.........................................................................................
0x00,0x00,0x00,0x07,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // .............................###########........................................................................................
0x00,0x00,0x03,0xC1,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ......................####.....###########......................................................................................
0x00,0x00,0x3F,0xC0,0x7F,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ..................########.......##########.....................................................................................
0x00,0x00,0xFF,0x00,0x3F,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ................########..........###########...................................................................................
0x00,0x01,0xFE,0x00,0x0F,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ...............########.............##########..................................................................................
0x00,0x07,0xF8,0x00,0x03,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // .............########.................##########................................................................................
0x00,0x0F,0xF0,0x60,0x61,0xFF,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ............########.....##......##....##########...............................................................................
0x00,0x3F,0xC0,0xE0,0x60,0x7F,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ..........########......###......##......##########.............................................................................
0x00,0x7F,0x80,0xE0,0x60,0x3F,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // .........########.......###......##.......##########............................................................................
0x00,0xFE,0x00,0xE0,0x60,0x0F,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ........#######.........###......##.........########............................................................................
0x01,0xFC,0x00,0xE0,0x60,0x07,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // .......#######..........###......##..........########...........................................................................
0x01,0xF8,0x00,0xE0,0x60,0x03,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // .......######...........###......##...........#######...........................................................................
0x01,0xF0,0x00,0xE0,0x60,0x01,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // .......#####............###......##............#######..........................................................................
0x01,0xE0,0x00,0xE0,0x60,0x00,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // .......####.............###......##.............######..........................................................................
0x01,0xE0,0x00,0xE0,0x60,0x00,0x7C,0x03,0xFE,0x0E,0x07,0xF1,0xFF,0x8F,0xF0,0x00, // .......####.............###......##..............#####........#########.....###......#######...##########...########............
0x01,0xE0,0x00,0x60,0x60,0x00,0x7C,0x03,0xFF,0x1E,0x0F,0xF9,0xFF,0x8F,0xF8,0x00, // .......####..............##......##..............#####........##########...####.....#########..##########...#########...........
0x01,0xE0,0x00,0x00,0x00,0x00,0x7C,0x03,0xFE,0x3E,0x0F,0xFC,0xFF,0x8F,0xF8,0x00, // .......####......................................#####........#########...#####.....##########..#########...#########...........
0x01,0xE0,0x01,0xFF,0xF8,0x00,0x7C,0x03,0x00,0x3E,0x0C,0x1C,0x18,0x0C,0x18,0x00, // .......####............##############............#####........##..........#####.....##.....###.....##.......##.....##...........
0x01,0xE0,0x03,0xFF,0xFC,0x00,0x7C,0x03,0x00,0x06,0x0C,0x1C,0x18,0x0C,0x18,0x00, // .......####...........################...........#####........##.............##.....##.....###.....##.......##.....##...........
0x01,0xE0,0x01,0xFF,0xF8,0x00,0x7C,0x03,0x00,0x06,0x0C,0x1C,0x18,0x0C,0x18,0x00, // .......####............##############............#####........##.............##.....##.....###.....##.......##.....##...........
0x01,0xE0,0x01,0xFF,0xF8,0x00,0x7C,0x03,0x00,0x06,0x0C,0x1C,0x18,0x0C,0x18,0x00, // .......####............##############............#####........##.............##.....##.....###.....##.......##.....##...........
0x01,0xE0,0x01,0xFF,0xF8,0x00,0x7C,0x03,0x00,0x06,0x0C,0x1C,0x18,0x0C,0x18,0x00, // .......####............##############............#####........##.............##.....##.....###.....##.......##.....##...........
0x01,0xE0,0x01,0xFF,0xF8,0x00,0x7C,0x03,0xF8,0x06,0x0F,0xFC,0x18,0x0F,0xF8,0x00, // .......####............##############............#####........#######........##.....##########.....##.......#########...........
0x01,0xE0,0x01,0xFF,0xF8,0x00,0x7C,0x03,0xF8,0x06,0x0F,0xFC,0x18,0x0F,0xF8,0x00, // .......####............##############............#####........#######........##.....##########.....##.......#########...........
0x01,0xE0,0x01,0xFF,0xF8,0x00,0x7C,0x03,0x00,0x06,0x0E,0x1C,0x18,0x0C,0x18,0x00, // .......####............##############............#####........##.............##.....###....###.....##.......##.....##...........
0x01,0xE0,0x01,0xFF,0xF8,0x00,0x7C,0x03,0x00,0x06,0x0C,0x1C,0x18,0x0C,0x18,0x00, // .......####............##############............#####........##.............##.....##.....###.....##.......##.....##...........
0x01,0xE0,0x01,0xFF,0xF8,0x00,0x7C,0x03,0x00,0x06,0x0C,0x1C,0x18,0x0C,0x18,0x00, // .......####............##############............#####........##.............##.....##.....###.....##.......##.....##...........
0x01,0xE0,0x00,0xFF,0xF0,0x00,0x7C,0x03,0x00,0x06,0x0C,0x1C,0x18,0x0C,0x18,0x00, // .......####.............############.............#####........##.............##.....##.....###.....##.......##.....##...........
0x01,0xE0,0x00,0xFF,0xF0,0x00,0x7C,0x03,0x00,0x06,0x0C,0x1C,0x18,0x0C,0x18,0x00, // .......####.............############.............#####........##.............##.....##.....###.....##.......##.....##...........
0x01,0xE0,0x00,0x7F,0xE0,0x00,0x7C,0x03,0x00,0x0F,0x0C,0x1C,0x18,0x0E,0x38,0x00, // .......####..............##########..............#####........##............####....##.....###.....##.......###...###...........
0x01,0xE0,0x00,0x3F,0xC0,0x00,0x7C,0x03,0x00,0x3F,0x8C,0x1C,0x18,0x0F,0xF8,0x00, // .......####...............########...............#####........##..........#######...##.....###.....##.......#########...........
0x01,0xE0,0x00,0x0F,0x00,0x00,0x7C,0x03,0x00,0x3F,0x8C,0x0C,0x18,0x0F,0xF0,0x00, // .......####.................####.................#####........##..........#######...##......##.....##.......########............
0x01,0xE0,0x00,0x0F,0x00,0x00,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // .......####.................####.................#####..........................................................................
0x01,0xE0,0x00,0x06,0x00,0x00,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // .......####..................##..................#####..........................................................................
0x01,0xE0,0x00,0x06,0x00,0x00,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // .......####..................##..................#####..........................................................................
0x01,0xE0,0x00,0x06,0x00,0x00,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // .......####..................##..................#####..........................................................................
0x01,0xE0,0x00,0x1F,0x00,0x00,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // .......####................#####.................#####..........................................................................
0x01,0xE0,0x00,0x7F,0xC0,0x00,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // .......####..............#########...............#####..........................................................................
0x01,0xE0,0x00,0xFF,0xF0,0x00,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // .......####.............############.............#####..........................................................................
0x01,0xE0,0x01,0xFF,0xFC,0x00,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // .......####............###############...........#####..........................................................................
0x01,0xE0,0x00,0x0F,0xFE,0x00,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // .......####.................###########..........#####..........................................................................
0x01,0xE0,0x00,0x03,0xFF,0x80,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // .......####...................###########.......######..........................................................................
0x01,0xE0,0x0F,0xE0,0xFF,0xC0,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // .......####.........#######.....##########......######..........................................................................
0x01,0xF0,0x7F,0x80,0x3F,0xF1,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // .......#####.....########.........##########...######...........................................................................
0x01,0xF9,0xFF,0x00,0x1F,0xFF,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // .......######..#########...........##################...........................................................................
0x00,0xFF,0xFC,0x00,0x07,0xFF,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ........##############...............################...........................................................................
0x00,0xFF,0xF8,0x00,0x03,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ........#############.................##############............................................................................
0x00,0x7F,0xE0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // .........##########.....................###########.............................................................................
0x00,0x1F,0xC0,0x00,0x00,0x7F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ...........#######.......................#########..............................................................................
0x00,0x00,0x00,0x00,0x00,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ............................................###.................................................................................
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ................................................................................................................................
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ................................................................................................................................
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ................................................................................................................................
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ................................................................................................................................
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 // ................................................................................................................................
};
int cligSun = 0;
int BoucleOled = 0;
void InitSSD(){
//OLED init
Wire.begin(SDA_PIN, SCL_PIN);
pinMode (OLED_RESET, OUTPUT);
//FORCE RESET DE L'ECRAN SI PIN PARTICULIER POUR RESET
if(OLED_RESET != -1) {
digitalWrite(OLED_RESET, HIGH);
digitalWrite(OLED_RESET, LOW);
delay(100);
}
if (!display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS)) {
Serial.println("SSD1306 failed");
for (;;); // Don't proceed, loop forever
}
else {
//Allumer l'écran.
display.ssd1306_command(SSD1306_DISPLAYON);
OledLogo();
OLED_on=true;
}
//
}
void OledAffiche(){
if (BoucleOled <= 10 ) {
//Ecran 1
Ecran1();
BoucleOled++;
}
else if (BoucleOled <= 15 ) {
//Ecran 2
Ecran2();
BoucleOled++;
}
else if (BoucleOled <= 16 ) {
OledLogo();
BoucleOled++;
}
else {
BoucleOled=0;
}
}
void Ecran1(){
if(OLED_on==false) {
return;
}
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
//WIFI
display.setCursor(0,5);
display.drawLine(91,1,91,15,WHITE);
if (WiFi.status() == WL_CONNECTED) {
display.print(WiFi.localIP().toString());
//Niveau connection
int NivSignal = int(WiFi.RSSI()) ;
if (NivSignal<-80) {display.drawBitmap(92, 1, bitmap_Signal1 , 16, 16, WHITE); }
else if(NivSignal<-60) {display.drawBitmap(92, 1, bitmap_Signal2 , 16, 16, WHITE); }
else if(NivSignal<-45) {display.drawBitmap(92, 1, bitmap_Signal3 , 16, 16, WHITE); }
else if(NivSignal<-30) {display.drawBitmap(92, 1, bitmap_Signal4 , 16, 16, WHITE); }
}
else {
(WiFi.getMode() == WIFI_STA)==false ? display.print(WiFi.softAPIP().toString()) : display.print(F("Pas de wifi !")); display.drawBitmap(92, 0, bitmap_Signal0 , 16, 16, WHITE);
}
//Ligne de séparation
display.drawLine(0,18,128,18,WHITE);
//Puissance
display.setCursor(0,24);
display.print(F("Puissance "));
display.print(int(PuissanceS_M - PuissanceI_M));
display.print(F(" Watt"));
//Ouverture du triac
int Ouv = -1;
for (int i = 0; i < NbActions; i++) {
if (i == 0) {
Ouv = 100 - Retard[i];
}
}
display.drawLine(109,1,109,15,WHITE);
if(Ouv>0) {
//Icone clignote, signale l'injection
if(cligSun==0) {
display.drawBitmap(110, 1, bitmap_Sun , 16, 16, WHITE);
cligSun=1;
}
else {
cligSun=0;
display.drawBitmap(110, 1, bitmap_Off , 16, 16, WHITE);
}
}
else {
display.drawBitmap(110, 1, bitmap_Off , 16, 16, WHITE);
}
display.setCursor(0,36);
if(Ouv == -1) {
display.print(F("Triac -")); //Triac erreur
}
else {
//Affiche jauge Triac
display.setCursor(0,38);
display.print(F("Triac "));
display.drawRect(60, 38, 60, 10, WHITE);
float t = (float(60)/100)*Ouv;
display.fillRect(62, 40, int(t), 4, WHITE);
}
//Affichage de la version installée
display.setCursor(0,55);
display.print(F("V "));
display.print(Version);
//Affichage durée de fonctionnement ESP32
int T = int(millis() / 1000);
float DureeOn = float(T) / 3600;
String durOn=String(DureeOn)+" h";
display.setCursor(128-(durOn.length()*6),55);
display.print(durOn);
display.display();
}
void Ecran2() {
if(OLED_on==false){
return;
}
display.clearDisplay();
display.setCursor(0,0);
display.setTextSize(2);
display.println(F("Injectee"));
display.println(F("jour"));
display.print(EnergieJour_M_Injectee);
display.print(F(" Wh"));
display.setTextSize(1);
//Affichage de la version installée
display.setCursor(0,55);
display.print(F("V "));
display.print(Version);
//Affichage durée de fonctionnement ESP32
int T = int(millis() / 1000);
float DureeOn = float(T) / 3600;
String durOn=String(DureeOn)+" h";
display.setCursor(128-(durOn.length()*6),55);
display.print(durOn);
display.display();
}
void OledLogo() {
display.clearDisplay();
display.setCursor(0,0);
display.drawBitmap(0, 0, bitmap_Logo , 128, 68, WHITE);
display.setCursor(70,50);
display.print(F("V "));
display.print(Version);
display.display();
}
Dans le fichier principal Solar_Router...ino
Dans la boucle setup() {}
Ajouter l'appel InitSSD(); après Serial.println(F("Booting"));
Dans la boule loop() {}
Ajouter l'appel OledAffiche(); après l'appel à la fonction EnergieQuotidienne();
Voila amusez-vous bien !
Bonjour,
J'utilise ce routeur depuis la version 2 et avais au début intégré un écran OLED mais avec les mises a jours, j'ai renoncé à l'utiliser aussi je suis satisfait d'avoir trouvé votre sujet sur le forum.
Je pense l'installer mais je ne trouve pas la ligne de commande " Serial.println(F("Booting")); " dans l'onglet solar routeur V10.00.ino . Je ne trouve que " Serial.println("Booting");" . Je ne trouve pas la fonction du F.
Vous êtes sur quelle version? Avez vous un numéro de ligne pour m'aider a trouver l'emplacement de la commande?
Autre question. Dans ma version, j'utilise un poussoir sur le GPIO 25 pour allumer l'écran. Il s’éteint ensuite après une tempo. vous pensez que je peux reprendre cette option dans vos lignes de commandes?
D'avance merci.
Cordialement.
Serge 11.
Messages : 32
Sujets : 2
Inscription : Jun 2024
Réputation :
4
Citation :Bonjour,
J'utilise ce routeur depuis la version 2 et avais au début intégré un écran OLED mais avec les mises a jours, j'ai renoncé à l'utiliser aussi je suis satisfait d'avoir trouvé votre sujet sur le forum.
Je pense l'installer mais je ne trouve pas la ligne de commande " Serial.println(F("Booting")); " dans l'onglet solar routeur V10.00.ino . Je ne trouve que " Serial.println("Booting");" . Je ne trouve pas la fonction du F.
Vous êtes sur quelle version? Avez vous un numéro de ligne pour m'aider a trouver l'emplacement de la commande?
Autre question. Dans ma version, j'utilise un poussoir sur le GPIO 25 pour allumer l'écran. Il s’éteint ensuite après une tempo. vous pensez que je peux reprendre cette option dans vos lignes de commandes?
D'avance merci.
Cordialement.
Serge 11.
Bonjour,
Je vais répondre pour Raphaël : c'est une coquille...
C'est bien après " Serial.println("Booting");" en effet qu'il faut insérer l'instruction "InitSSD();", vers les lignes 450 de l'onglet du pgm principal.
D'ailleurs, l'instruction correcte serait "display.print(F("texte"));", car celle-ci fait appel à la librairie AdaFruitGFX.h, alors que "Serial.println(F("Booting"));" renverrait une erreur de compilation.
Bien vu pour le bouton poussoir qui commande un affichage momentané, je vais voir pour proposer une modif en ce sens car cela m’intéresse aussi. Je suis justement en train de voir pour afficher une page avec des infos secondaires après l'appui sur un BP qui pourrait avoir également cette fonction, et j'en profite pour ajouter aussi un autre BP RESET physique de l'ESP32 en cas de plantage non récupérable (plus d'accès au serveur par ex.).
_________________________________________________
Routeur Solaire en v11.11
Pilotage d'un cumulus de 3kW + Jeedom v4.4.8.1 + Station solaire 3,5kW
Messages : 32
Sujets : 2
Inscription : Jun 2024
Réputation :
4
28-06-2024, 07:41 PM
(Modification du message : 29-06-2024, 09:29 AM par DanielJ.)
Rebonjour,
J'ai retravaillé le code de Raphaël pour intégrer :
- un bouton poussoir qui active l'affichage principal pendant 10 secondes si celui-ci est éteint, au démarrage, ou après un RESET,
- un appui pendant ces 10 secondes sur le même bouton poussoir provoque un changement de page pour afficher jusqu'à un total de 4 autres informations secondaires (comme le N° de version par exemple).
- Hors activation, l'affichage reste éteint en permanence (cela permet d'éviter un risque de marquage de l'écran OLED...)
- Commun aux pages principales et secondaires, on retrouve un bandeau supérieur avec l'@IP, une icône représentant le force du signal Wifi, et une icône clignotante si on est en injection de puissance vers le réseau. Un bandeau inférieur, avec la date (JJ/MM) et l'heure courante (HH:MM), ainsi que la durée de fonctionnement de l'ESP depuis son démarrage (ou sa RAZ) en heures et 1/10 d'heures.
- Sur la page principale s'affiche la puissance injectée (-) ou consommée (+), ainsi que le % d'ouverture du relais ou du triac utilisé (numérique + bargraphe)
- Sur la page secondaire, 4 lignes d'informations complémentaires peuvent s'afficher; Pour l'instant, je n'y ai mis que le N° de la version logicielle du routeur Solaire, mais on peut facilement en ajouter d'autres.
Pour la prise en compte de l'appui sur le bouton poussoir, j'utilise le système de gestion des interruptions intégrées à l'ESP32.
Ce principe permet de prendre en compte tout appui sans aucune latence, ni rebond, contrairement à un codage classique qui testerai l'état du bouton à chaque itération, mais qui est moins agréable à utiliser et beaucoup moins efficace (on doit laisser le bouton appuyé plus ou moins longtemps...).
Mais je sais que dans le code d'André, cette interruption est aussi utilisée pour le passage à 0 (zero-crossing) pour la commande du triac toutes les 10ms, et toutes les 100µs pour le timer interne.
N'ayant pas de triac (uniquement un relais SSR), est-ce qu'André ou quelqu'un d'autre pourrait me confirmer qu'il n'y a pas d'interférence possible entre ces différentes interruptions de nature différente ? A priori je ne le pense pas, mais je n'en suis pas sûr... Merci d'avance.
Voilà, je vous livre ce code modifié si cela vous intéresse pour être repris tel quel, ou pour le modifier/vous en inspirer suivant vos propres besoins.
Pour la compilation, pensez bien à sélectionner "Minimal SPIFFS (1.9MB APP with OTA/190KB SPIFFS)" dans le menu "outils" de l'IDE Arduino (on conserve la possibilité de mettre à jour le code par OTA en Wifi).
Côté onglet principal (Solar_Router_Vxxx), j'intègre les numéros de pins GPIO utilisés à la suite de ceux déjà définis. Libre à vous de choisir celles qui vous intéresse parmi les pins disponibles.
Exemple :
Code : #define pulseTriac_2 25
#define zeroCross_2 23
#define pinTemp 13 //Capteur température
#define SDA_PIN 21 //pilotage écran OLED
#define SCL_PIN 22 //pilotage écran OLED
#define PAGE_OLED 15//PIN - IN : changement page d'écran d'informations
Outre les trois dernières lignes, attention à la modification de la ligne PulseTriac qui est affecté à la broche 25 au lieu de 22 (repris par le signal SCL pour l'écran OLED) dans le fichier initial.
Et toujours l'insertion de la commande d'initialisation ici :
Code : //Ports Série ESP
Serial.begin(115200);
Serial.println("Booting");
InitSSD(); //Intégration d'un écran OLED
Et ici pour appeler la routine OledAffiche() :
Code : if (tps - previousTimer2sMillis >= 2000) {
previousTimer2sMillis = tps;
tabPw_Maison_2s[IdxStock2s] = PuissanceS_M - PuissanceI_M;
tabPw_Triac_2s[IdxStock2s] = PuissanceS_T - PuissanceI_T;
tabPva_Maison_2s[IdxStock2s] = PVAS_M - PVAI_M;
tabPva_Triac_2s[IdxStock2s] = PVAS_T - PVAI_T;
IdxStock2s = (IdxStock2s + 1) % 300;
JourHeureChange();
EnergieQuotidienne();
OledAffiche(); // Appel de la routine d'affichage sur l'écran OLED
}
Côté onglet OLED.ino, je préfère vous redonner l'ensemble du code que j'ai modifié plutôt que de le refaire ligne par ligne (trop compliqué).
Attention, ce code est prévu pour :
- un écran OLED SH1106
- un relais SSR (voir le commentaire "//Taux d'ouverture du triac/relais" pour la prise en compte d'un triac ou d'un relais)
Code : // ****************************************************
// Intégration d'un écran OLED SH1106
// ****************************************************
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SH110X.h>
// Les caractères sont dans une matrice de 6x8 pixels.
// Un paramètre optionnel (size pour taille) peut être passé à la fonction pour changer l'échelle d'affichage du caractère.
// La taille du caractère est multiplié par le facteur utilisé (ex: size=2 fera un rendu en 12x16 pixels par caractère).
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
#define OLED_RESET -1 // Reset pin # (or -1 if sharing Arduino reset pin)
#define SCREEN_ADDRESS 0x3c ///< See datasheet for Address; 0x3D for 128x64, 0x3C for 128x32
#define TIMER_PAGE 10000 //Défini le nombre de secondes (en ms) pendant lequel l'écran restera affiché
// GPIO pour SDA, SCL et bouton poussoir d'activation de l'affichage et de changement de page : voir le programme principal dans la partie définition des GPIO
bool OLED_on = false;
Adafruit_SH1106G display = Adafruit_SH1106G(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
// #define SSD1306_RESET 0xE4
const unsigned char bitmap_Sun[] PROGMEM = {
0x20,0x82, // ..#.....#.....#.
0x10,0x84, // ...#....#....#..
0x08,0x08, // ....#.......#...
0x01,0xC0, // .......###......
0x07,0xF0, // .....#######....
0x0F,0xF8, // ....#########...
0x6F,0xFB, // .##.#########.##
0x0F,0xF8, // ....#########...
0x07,0xF0, // .....#######....
0x11,0xC4, // ...#...###...#..
0x20,0x02, // ..#...........#.
0x40,0x81, // .#......#......#
0x00,0x80 // ........#.......
};
const unsigned char bitmap_Off[] PROGMEM = {
0x00,0x00, // ................
0x00,0x00, // ................
0x00,0x00, // ................
0x00,0x00, // ................
0x00,0x00, // ................
0x00,0x00, // ................
0x00,0x00, // ................
0x00,0x00, // ................
0x00,0x00, // ................
0x00,0x00, // ................
0x00,0x00, // ................
0x00,0x00, // ................
0x00,0x00, // ................
};
const unsigned char bitmap_Signal1[] PROGMEM = {
0x00,0x00, // ................
0x00,0x00, // ................
0x00,0x00, // ................
0x00,0x00, // ................
0x00,0x00, // ................
0x00,0x00, // ................
0x00,0x00, // ................
0x00,0x00, // ................
0x00,0x00, // ................
0x00,0x00, // ................
0x40,0x00, // .#..............
0xC0,0x00, // ##..............
0xC0,0x00 // ##..............
};
const unsigned char bitmap_Signal2[] PROGMEM = {
0x00,0x00, // ................
0x00,0x00, // ................
0x00,0x00, // ................
0x00,0x00, // ................
0x00,0x00, // ................
0x00,0x00, // ................
0x00,0x00, // ................
0x04,0x00, // .....#..........
0x0C,0x00, // ....##..........
0x1C,0x00, // ...###..........
0x5C,0x00, // .#.###..........
0xDC,0x00, // ##.###..........
0xDC,0x00 // ##.###..........
};
const unsigned char bitmap_Signal3[] PROGMEM = {
0x00,0x00, // ................
0x00,0x00, // ................
0x00,0x00, // ................
0x00,0x00, // ................
0x00,0x40, // .........#......
0x00,0xC0, // ........##......
0x01,0xC0, // .......###......
0x05,0xC0, // .....#.###......
0x0D,0xC0, // ....##.###......
0x1D,0xC0, // ...###.###......
0x5D,0xC0, // .#.###.###......
0xDD,0xC0, // ##.###.###......
0xDD,0xC0 // ##.###.###......
};
const unsigned char bitmap_Signal4[] PROGMEM = {
0x00,0x04, // .............#..
0x00,0x0C, // ............##..
0x00,0x1C, // ...........###..
0x00,0x1C, // ...........###..
0x00,0x5C, // .........#.###..
0x00,0xDC, // ........##.###..
0x01,0xDC, // .......###.###..
0x05,0xDC, // .....#.###.###..
0x0D,0xDC, // ....##.###.###..
0x1D,0xDC, // ...###.###.###..
0x5D,0xDC, // .#.###.###.###..
0xDD,0xDC, // ##.###.###.###..
0xDD,0xDC // ##.###.###.###..
};
const unsigned char bitmap_Logo[] PROGMEM = {
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ................................................................................................................................
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ................................................................................................................................
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ................................................................................................................................
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ................................................................................................................................
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ................................................................................................................................
0x00,0x00,0x00,0x3F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ..........................########..............................................................................................
0x00,0x00,0x00,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ........................############............................................................................................
0x00,0x00,0x01,0xFF,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // .......................##############...........................................................................................
0x00,0x00,0x00,0x1F,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ...........................############.........................................................................................
0x00,0x00,0x00,0x07,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // .............................###########........................................................................................
0x00,0x00,0x03,0xC1,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ......................####.....###########......................................................................................
0x00,0x00,0x3F,0xC0,0x7F,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ..................########.......##########.....................................................................................
0x00,0x00,0xFF,0x00,0x3F,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ................########..........###########...................................................................................
0x00,0x01,0xFE,0x00,0x0F,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ...............########.............##########..................................................................................
0x00,0x07,0xF8,0x00,0x03,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // .............########.................##########................................................................................
0x00,0x0F,0xF0,0x60,0x61,0xFF,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ............########.....##......##....##########...............................................................................
0x00,0x3F,0xC0,0xE0,0x60,0x7F,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ..........########......###......##......##########.............................................................................
0x00,0x7F,0x80,0xE0,0x60,0x3F,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // .........########.......###......##.......##########............................................................................
0x00,0xFE,0x00,0xE0,0x60,0x0F,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ........#######.........###......##.........########............................................................................
0x01,0xFC,0x00,0xE0,0x60,0x07,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // .......#######..........###......##..........########...........................................................................
0x01,0xF8,0x00,0xE0,0x60,0x03,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // .......######...........###......##...........#######...........................................................................
0x01,0xF0,0x00,0xE0,0x60,0x01,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // .......#####............###......##............#######..........................................................................
0x01,0xE0,0x00,0xE0,0x60,0x00,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // .......####.............###......##.............######..........................................................................
0x01,0xE0,0x00,0xE0,0x60,0x00,0x7C,0x03,0xFE,0x0E,0x07,0xF1,0xFF,0x8F,0xF0,0x00, // .......####.............###......##..............#####........#########.....###......#######...##########...########............
0x01,0xE0,0x00,0x60,0x60,0x00,0x7C,0x03,0xFF,0x1E,0x0F,0xF9,0xFF,0x8F,0xF8,0x00, // .......####..............##......##..............#####........##########...####.....#########..##########...#########...........
0x01,0xE0,0x00,0x00,0x00,0x00,0x7C,0x03,0xFE,0x3E,0x0F,0xFC,0xFF,0x8F,0xF8,0x00, // .......####......................................#####........#########...#####.....##########..#########...#########...........
0x01,0xE0,0x01,0xFF,0xF8,0x00,0x7C,0x03,0x00,0x3E,0x0C,0x1C,0x18,0x0C,0x18,0x00, // .......####............##############............#####........##..........#####.....##.....###.....##.......##.....##...........
0x01,0xE0,0x03,0xFF,0xFC,0x00,0x7C,0x03,0x00,0x06,0x0C,0x1C,0x18,0x0C,0x18,0x00, // .......####...........################...........#####........##.............##.....##.....###.....##.......##.....##...........
0x01,0xE0,0x01,0xFF,0xF8,0x00,0x7C,0x03,0x00,0x06,0x0C,0x1C,0x18,0x0C,0x18,0x00, // .......####............##############............#####........##.............##.....##.....###.....##.......##.....##...........
0x01,0xE0,0x01,0xFF,0xF8,0x00,0x7C,0x03,0x00,0x06,0x0C,0x1C,0x18,0x0C,0x18,0x00, // .......####............##############............#####........##.............##.....##.....###.....##.......##.....##...........
0x01,0xE0,0x01,0xFF,0xF8,0x00,0x7C,0x03,0x00,0x06,0x0C,0x1C,0x18,0x0C,0x18,0x00, // .......####............##############............#####........##.............##.....##.....###.....##.......##.....##...........
0x01,0xE0,0x01,0xFF,0xF8,0x00,0x7C,0x03,0xF8,0x06,0x0F,0xFC,0x18,0x0F,0xF8,0x00, // .......####............##############............#####........#######........##.....##########.....##.......#########...........
0x01,0xE0,0x01,0xFF,0xF8,0x00,0x7C,0x03,0xF8,0x06,0x0F,0xFC,0x18,0x0F,0xF8,0x00, // .......####............##############............#####........#######........##.....##########.....##.......#########...........
0x01,0xE0,0x01,0xFF,0xF8,0x00,0x7C,0x03,0x00,0x06,0x0E,0x1C,0x18,0x0C,0x18,0x00, // .......####............##############............#####........##.............##.....###....###.....##.......##.....##...........
0x01,0xE0,0x01,0xFF,0xF8,0x00,0x7C,0x03,0x00,0x06,0x0C,0x1C,0x18,0x0C,0x18,0x00, // .......####............##############............#####........##.............##.....##.....###.....##.......##.....##...........
0x01,0xE0,0x01,0xFF,0xF8,0x00,0x7C,0x03,0x00,0x06,0x0C,0x1C,0x18,0x0C,0x18,0x00, // .......####............##############............#####........##.............##.....##.....###.....##.......##.....##...........
0x01,0xE0,0x00,0xFF,0xF0,0x00,0x7C,0x03,0x00,0x06,0x0C,0x1C,0x18,0x0C,0x18,0x00, // .......####.............############.............#####........##.............##.....##.....###.....##.......##.....##...........
0x01,0xE0,0x00,0xFF,0xF0,0x00,0x7C,0x03,0x00,0x06,0x0C,0x1C,0x18,0x0C,0x18,0x00, // .......####.............############.............#####........##.............##.....##.....###.....##.......##.....##...........
0x01,0xE0,0x00,0x7F,0xE0,0x00,0x7C,0x03,0x00,0x0F,0x0C,0x1C,0x18,0x0E,0x38,0x00, // .......####..............##########..............#####........##............####....##.....###.....##.......###...###...........
0x01,0xE0,0x00,0x3F,0xC0,0x00,0x7C,0x03,0x00,0x3F,0x8C,0x1C,0x18,0x0F,0xF8,0x00, // .......####...............########...............#####........##..........#######...##.....###.....##.......#########...........
0x01,0xE0,0x00,0x0F,0x00,0x00,0x7C,0x03,0x00,0x3F,0x8C,0x0C,0x18,0x0F,0xF0,0x00, // .......####.................####.................#####........##..........#######...##......##.....##.......########............
0x01,0xE0,0x00,0x0F,0x00,0x00,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // .......####.................####.................#####..........................................................................
0x01,0xE0,0x00,0x06,0x00,0x00,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // .......####..................##..................#####..........................................................................
0x01,0xE0,0x00,0x06,0x00,0x00,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // .......####..................##..................#####..........................................................................
0x01,0xE0,0x00,0x06,0x00,0x00,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // .......####..................##..................#####..........................................................................
0x01,0xE0,0x00,0x1F,0x00,0x00,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // .......####................#####.................#####..........................................................................
0x01,0xE0,0x00,0x7F,0xC0,0x00,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // .......####..............#########...............#####..........................................................................
0x01,0xE0,0x00,0xFF,0xF0,0x00,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // .......####.............############.............#####..........................................................................
0x01,0xE0,0x01,0xFF,0xFC,0x00,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // .......####............###############...........#####..........................................................................
0x01,0xE0,0x00,0x0F,0xFE,0x00,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // .......####.................###########..........#####..........................................................................
0x01,0xE0,0x00,0x03,0xFF,0x80,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // .......####...................###########.......######..........................................................................
0x01,0xE0,0x0F,0xE0,0xFF,0xC0,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // .......####.........#######.....##########......######..........................................................................
0x01,0xF0,0x7F,0x80,0x3F,0xF1,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // .......#####.....########.........##########...######...........................................................................
0x01,0xF9,0xFF,0x00,0x1F,0xFF,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // .......######..#########...........##################...........................................................................
0x00,0xFF,0xFC,0x00,0x07,0xFF,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ........##############...............################...........................................................................
0x00,0xFF,0xF8,0x00,0x03,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ........#############.................##############............................................................................
0x00,0x7F,0xE0,0x00,0x00,0xFF,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // .........##########.....................###########.............................................................................
0x00,0x1F,0xC0,0x00,0x00,0x7F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ...........#######.......................#########..............................................................................
0x00,0x00,0x00,0x00,0x00,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ............................................###.................................................................................
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ................................................................................................................................
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ................................................................................................................................
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ................................................................................................................................
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ................................................................................................................................
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 // ................................................................................................................................
};
int cligSun = 0;
int BoucleOled = 0;
bool EtatBP;
bool Selecteur_page = 1; //indicateur de sélection de la page courante
unsigned long millis_start; //horodatage du début d'affichage de la page
void InitSSD(){
//Initialisation du bouton poussoir (affectation GPIO, mode de fonctionnement)
pinMode (PAGE_OLED, INPUT_PULLUP);
//Initialisation de l'interruption (GPIO affecté au BP, pgm à exécuter, activé sur front descendant)
attachInterrupt(PAGE_OLED, page_change_ISR, FALLING);
//OLED init
Wire.begin(SDA_PIN, SCL_PIN);
//FORCE RESET DE L'ECRAN SI PIN PARTICULIER POUR RESET
if(OLED_RESET != -1) {
pinMode (OLED_RESET, OUTPUT);
digitalWrite(OLED_RESET, HIGH);
digitalWrite(OLED_RESET, LOW);
delay(100);
}
delay(250); // wait for the OLED to power up
if (!display.begin(SCREEN_ADDRESS, true)) {
Serial.println("SH1106 init failed");
}
else {
display.display();
delay(250);
// Clear the buffer.
display.clearDisplay();
delay(250);
OledLogo();
OLED_on=true;
}
//Permet d'afficher la première page après un démarrage ou un RESET.
millis_start = millis();
//
}
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();
}
void OledAffiche(){
if (millis()-millis_start < TIMER_PAGE) {
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
display.clearDisplay();
display.display();
}
}
void OledLogo() {
Serial.println(F("Logo"));
display.clearDisplay();
display.setCursor(0,0);
display.drawBitmap(0, 0, bitmap_Logo , 128, 68, SH110X_WHITE);
display.display();
}
void Ecran_permanent(){
// Défini l'affichage des lignes du haut et du bas, affichés en permanence quelle que soit la page affichée en cours.
if(OLED_on==false) {
return;
}
Serial.println(F("Ecran permanent"));
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(SH110X_WHITE);
//Lignes de séparation
display.drawLine(0,15,128,15,SH110X_WHITE);
display.drawLine(0,52,128,52,SH110X_WHITE);
//Wifi - Affichage de l'@IP
display.setCursor(0,2);
if (WiFi.status() == WL_CONNECTED) {
display.print(WiFi.localIP().toString());
//Wifi - Niveau de connection
int NivSignal = int(WiFi.RSSI()) ;
if(NivSignal<-80) {display.drawBitmap(92, 0, bitmap_Signal1 , 16, 13, SH110X_WHITE); }
else if(NivSignal<-60) {display.drawBitmap(92, 0, bitmap_Signal2 , 16, 13, SH110X_WHITE); }
else if(NivSignal<-45) {display.drawBitmap(92, 0, bitmap_Signal3 , 16, 13, SH110X_WHITE); }
else if(NivSignal<-30) {display.drawBitmap(92, 0, bitmap_Signal4 , 16, 13, SH110X_WHITE); }
}
else {
(WiFi.getMode() == WIFI_STA)==false ? display.print(WiFi.softAPIP().toString()) : display.print(F("Pas de wifi !")); display.drawBitmap(92, 0, bitmap_Off, 16, 13, SH110X_WHITE);
}
//Affichage de la date DD/MM et heure HH:MM courant
String time = DATE.substring(0, 5); // "27/06"
display.setCursor(0,55);
display.print(time);
time = DATE.substring(10, 16); // " 14:30"
display.setCursor(30,55);
display.print(time);
//Affichage de la durée de fonctionnement de l'ESP32
int T = int(millis() / 1000);
float DureeOn = float(T) / 3600;
String durOn=String(DureeOn)+" h";
display.setCursor(128-(durOn.length()*6),55);
display.print(durOn);
//Affichage de l'icône signalant l'injection de puissance
int Pw = int(PuissanceS_M - PuissanceI_M);
if(Pw<0) {
//Icone clignote, signale l'injection
if(cligSun==0) {
display.drawBitmap(112, 0, bitmap_Sun , 16, 13, SH110X_WHITE);
cligSun=1;
}
else {
cligSun=0;
display.drawBitmap(112, 0, bitmap_Off , 16, 13, SH110X_WHITE);
}
}
else {
display.drawBitmap(112, 0, bitmap_Off , 16, 13, SH110X_WHITE);
}
}
void Ecran1(){
if(OLED_on==false) {
return;
}
//Affichage des informations principales sur la page 1
Serial.println(F("Ecran1"));
//Puissance
display.setCursor(0,23);
display.print(F("Pw"));
int Pw = int(PuissanceS_M - PuissanceI_M);
String Pwaff=String(Pw)+" W";
display.setCursor(128-(Pwaff.length()*12),19);
display.setTextSize(2);
display.print(Pwaff);
display.setTextSize(1);
//Taux d'ouverture du triac/relais. Valeurs : i==0 >Triac, i==1 >Relais1, i==2 >Relais2
int Ouv = -1;
for (int i = 0; i < NbActions; i++) {
if (i == 1) {
Ouv = 100 - Retard[i];
}
}
display.setCursor(0,39);
if(Ouv == -1) {
display.print(F("Erreur SSR")); //Relais SSR en erreur
}
else {
display.setCursor(0,39);
display.print(F("SSR "));
display.print(int(Ouv));
display.print(F("%"));
display.drawRect(60, 38, 60, 10, SH110X_WHITE);
float t = (float(60)/100)*Ouv;
display.fillRect(61, 38, int(t), 10, SH110X_WHITE);
}
display.display();
}
void Ecran2(){
if(OLED_on==false) {
return;
}
//Affichage des informations secondaires sur la page 2
Serial.println(F("Ecran2"));
display.setCursor(0,17);
display.print(F("Version"));
String Version_routeur = Version;
display.setCursor(128-(Version_routeur.length()*6),17);
display.print(Version_routeur);
// Insérer ici en lignes 25, 33, et 41 les informations secondaires à afficher
//display.setCursor(0,25);
//display.print(F("Info 2"));
//display.setCursor(0,33);
//display.print(F("Info 3"));
//display.setCursor(0,41);
//display.print(F("Info 4"));
display.display();
}
Quelques photos d'écrans pour montrer le résultat :
Encore une fois, je n'ai fait que modifier le code de Raphaël qui, j'insiste, a fait le plus gros du travail (merci encore à lui !), pour proposer une version alternative qui me convient principalement, et qui conviendra peut-être à certains d'entre vous.
Enjoy !
_________________________________________________
Routeur Solaire en v11.11
Pilotage d'un cumulus de 3kW + Jeedom v4.4.8.1 + Station solaire 3,5kW
Messages : 10
Sujets : 0
Inscription : Jun 2024
Réputation :
1
(27-06-2024, 09:05 PM)DanielJ a écrit : (27-06-2024, 08:29 PM)m_fasilleau@yahoo.fr a écrit : Bonjour
Le % d'ouverture sur le relais ssr est super, comment peut on l'adapter sur un robodym 40A.
Dans le code ouverture du triac correspond a mes attente, cependant je suis perdu, j'arriva pas à comprendre le code pour afficher le %
Merci d'éclairé ma lanterne
Force à tous, pour les aides et à André le GOAT, Le routeur original fonctione a merveille et Vous, Nous, Tous améliorons la performance de ce routeur
Cdt
Bonjour,
Pour afficher les pourcentages, c'est assez simple. Il suffit d'insérer dans ce code les lignes :
Code : else {
display.setCursor(0,39);
display.print(F("TRIAC "));
display.print(int(Ouv));
display.print(F("%"));
display.drawRect(60, 38, 60, 10, SH110X_WHITE);
float t = (float(60)/100)*Ouv;
display.fillRect(61, 38, int(t), 10, SH110X_WHITE);
}
Voici les lignes de code insérées :
display.print(int(Ouv));
display.print(F("%"));
Bonsoir
Merci je vais faire le test
cordialement
|