Messages : 125
Sujets : 2
Inscription : Jun 2024
Réputation :
6
@ChrisChris, juste par curiosité, quel est le problème ou la raison qui te force à vouloir utiliser une V11 plutôt que la 13.02 et y appliquer les modifs de Raphaël de la première page de ce fil ?
Messages : 8
Sujets : 0
Inscription : Aug 2024
Réputation :
0
(Hier, 12:35 PM)Mike a écrit : @ChrisChris, juste par curiosité, quel est le problème ou la raison qui te force à vouloir utiliser une V11 plutôt que la 13.02 et y appliquer les modifs de Raphaël de la première page de ce fil
la v11.20 => +1500h sans problème, très stable, pas besoin des conditions température sonde, etc...
la v12 => pas testée
la v13 et 13.01=> la curiosité. Résultats : plantage au bout de quelques minutes, grosse lenteur accès interface, retour à la v11.20 tout est OK.
RobotDyn 40A + NF-A4x10. CE 3000w th méca. UxIx2 . Kit PV pnp 2 kW + OpenDtu. Maisonette + affichage routeur v11.20 (Merci André, Raphael591, Lolo69)
Messages : 496
Sujets : 6
Inscription : Sep 2024
Réputation :
9
@Chris
ci-dessous le fichier OLED avec les fonctions de la V13 mais qui se se compile avec une V11_20
Pour compiler n'oublie pas de passer le partition Scheme à NO FS
mais avant penses mettre les numeros de GPIO de tes boutons en ligne 45-46.
Code : /***********************************
Version Modifiée par Lolo69 en prenant la version OLED originelle de Raphael pour les nouvelles fonctions qui tournent avec le routeur Version>12
et réadaptée pour la version routeur V11
AFFICHAGE SUR SSD1306/SH110X
*************************************/
//Choisir son écran ICI ************************
#define USE_SSD1306 1 //Pour les écrans SSD1306
//#define USE_SH110X 1 //Pour les écrans SH1106
//Le reste du code ne devrait s'adapter à la compilation
//Voir pour modifier les pin (gpio) écran et bouton
//Choix ecran *************************************
#include <Adafruit_GFX.h>
#define OLED_BLACK 0
#define OLED_WHITE 1
#define OLED_INVERSE 2
//Pour SSD1306
#if(USE_SSD1306)
#include <Adafruit_SSD1306.h>
#endif
//Pour écran SH110X
#if(USE_SH110X)
#include <Adafruit_SH110X.h>
#endif
#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 pour écran
#define SDA_PIN 26 //26
#define SCL_PIN 25 //25
bool OLED_on = false; //Si problème avec l'écran, les procédures sont ignorées
//*******BOUTON OLED***********/
//Changement état gérer dans boucle affichage, déconseillé dans l'interruption.
//gestion de la latence du bouton
volatile unsigned long button_time = 0;
int btn_latence = 250; // Latence en ms
volatile bool OledState=true; //Statut oled On/Off (Mettre à la valeur désiré au démarrage)
volatile bool OledChange=true; //Changement sur bouton, true = applique le statut OledState (affichage oui/non)
int pinBtnOled = 0; //Indiquer ici le pin du bouton pour gérer l'écran/capteur de présence
int ModeBtnOled = 0; // 0 = bouton poussoir (on/off sur écran), 1 = capteur présence ou bouton poussoir pour allumage on (off automatique)
unsigned long DureeAffichage = 40000; //Durée affichage 40 secondes
//******BOUTON OLED ***********/
int MATERIEL_ROUTAGE=-1; //Pour la recherche TRIAC OU RELAIS
#if USE_SSD1306
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
#endif
//Pour écran SH110X
#if USE_SH110X
Adafruit_SH1106G display = Adafruit_SH1106G(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
#endif
const unsigned char bitmap_Sun[] PROGMEM = {
0x10,0x84, // ...#....#....#..
0x08,0x08, // ....#.......#...
0x01,0xC0, // .......###......
0x07,0xF0, // .....#######....
0x0F,0xF8, // ....#########...
0x6F,0xFB, // .##.#########.##
0x0F,0xF8, // ....#########...
0x07,0xF0, // .....#######....
0x11,0xC4, // ...#...###...#..
0x20,0x02, // ..#...........#.
};
const unsigned char bitmap_Off[] PROGMEM = {
0x00,0x00, // ................
0x00,0x00, // ................
0x00,0x00, // ................
0x00,0x00, // ................
0x1F,0xF8, // ...##########...
0x1F,0xF8, // ...##########...
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, // .#..............
0xDD,0xDC // ##.###.###.###..
};
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, // .#.###..........
0xDD,0xDC // ##.###.###.###..
};
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,0xDC // ##.###.###.###..
};
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 // ##.###.###.###..
};
const unsigned char bitmap_Signal0[] PROGMEM = {
0x03,0xE0, // ......#####.....
0x1F,0xFC, // ...###########..
0x3E,0x3E, // ..#####...#####.
0x38,0x7E, // ..###....######.
0x71,0xF7, // .###...#####.###
0x73,0xC7, // .###..####...###
0x77,0x87, // .###.####....###
0x3F,0x0E, // ..######....###.
0x3E,0x1E, // ..#####....####.
0x1F,0xFC, // ...###########..
0x03,0xE0, // ......#####.....
};
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;
//Initialisation
void InitSSD(){
//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);
}
#if USE_SSD1306
delay(250);
if (!display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS)) {
Serial.println("OLED SSD1306 init failed");
}
else {
//Allumer l'écran.
display.ssd1306_command(SSD1306_DISPLAYON);
//oled_command(SH110X_DISPLAYON); //SH110X
OledLogo();
display.setCursor(70,50);
display.print(F("Init..."));
display.display();
OLED_on=true;
}
#endif
#if USE_SH110X
delay(250); // wait for the OLED to power up
if (!display.begin(SCREEN_ADDRESS, true)) { //Pour SH110X
Serial.println("OLED SH110X init failed");
}
else {
//Allumer l'écran.
// ?
OledLogo();
display.setCursor(70,50);
display.print(F("Init..."));
display.display();
OLED_on=true;
}
#endif
//Partie gestion bouton
if(pinBtnOled > 0) {
pinMode(pinBtnOled, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(pinBtnOled), OledBouton, RISING) ;
}
}
//Procédure boucle des écrans
void OledAffiche(){
if(OLED_on==false) {
return;
}
if(ModeBtnOled==1 && OledState==true) {
//Contrôle durée d'affichage
if(button_time-btn_latence+DureeAffichage < millis()) {
//Durée affichage dépassé, on éteint
OledState=false;
OledChange=true;
}
}
if (OledChange) {
OledChange=false; //Changement traité
if(OledState) {
//Allumer écran
#if USE_SSD1306
display.ssd1306_command(SSD1306_DISPLAYON);
#endif
#if USE_SH110X
// ?
#endif
BoucleOled=0; //reprise début boucle écran
}
else {
//Eteindre écran
#if USE_SSD1306
display.ssd1306_command(SSD1306_DISPLAYOFF);
#endif
#if USE_SH110X
// ?, pas trouvé la commande pour off
display.clearDisplay();
display.display();
#endif
return;
}
}
if(MATERIEL_ROUTAGE == -1) {
//Recherche matériel
for (int i = 0; i < NbActions; i++) {
if(LesActions[i].Actif != 0 && MATERIEL_ROUTAGE == -1 ) MATERIEL_ROUTAGE=i;
}
}
if (BoucleOled <= 10 ) {
//Ecran 1
display.clearDisplay();
BarreEtatDroite();
Ecran1();
display.display();
BoucleOled++;
}
else if (BoucleOled <= 14 ) {
//Ecran 2
display.clearDisplay();
Ecran2();
display.display();
BoucleOled++;
}
else if (BoucleOled <= 18 ) {
//Ecran 3
display.clearDisplay();
Ecran3();
display.display();
BoucleOled++;
}
else if (BoucleOled <= 20 ) {
OledLogo();
BoucleOled++;
}
else {
BoucleOled=0;
}
}
//contenue écran 1
void Ecran1(){
if(OLED_on==false || !OledState) {
return;
}
display.setTextSize(1);
display.setTextColor(OLED_WHITE);
//WIFI
display.setCursor(0,1);
if (WiFi.status() == WL_CONNECTED) {
display.print(WiFi.localIP().toString());
}
else {
(WiFi.getMode() == WIFI_STA)==false ? display.print(WiFi.softAPIP().toString()) : display.print(F("Pas de wifi !"));
}
//Ligne de séparation
display.drawLine(0,13,128,13,OLED_WHITE);
//Puissance sonde maison
display.setCursor(0,16);
display.println(F("Puissance"));
display.setCursor(0,29);
display.setTextSize(2);
display.print(int(PuissanceS_M - PuissanceI_M));
display.setTextSize(1);
//Ouverture du triac/ssr
int Ouv = -1;
if(MATERIEL_ROUTAGE != -1) {
Ouv = 100 - Retard[MATERIEL_ROUTAGE];
}
if(Ouv>0) {
//Icone clignote, signale le routage
if(cligSun==0) {
display.drawBitmap(92, 0, bitmap_Sun , 16, 10, OLED_WHITE);
cligSun=1;
}
else {
cligSun=0;
display.drawBitmap(92, 0, bitmap_Off , 16, 10, OLED_WHITE);
}
}
else {
//Pas de triac/relais...
}
display.setCursor(0,38);
if(Ouv == -1) {
display.setCursor(72,16);
display.print(F("Ouv")); //Triac erreur
display.drawRect(60, 16, 10, 33, OLED_WHITE);
display.setCursor(82,30);
display.print(F(" !"));
}
else {
//Affiche jauge Triac/Relais
display.setCursor(72,16);
display.print(F("Ouv"));
display.drawRect(60, 16, 10, 33, OLED_WHITE);
float t = (float(33)/100)*Ouv;
display.fillRect(60+2, 16+(33-int(t)), 10-4 , int(t), OLED_WHITE);
display.setTextSize(2);
display.setCursor(73,29);
display.print(Ouv);
display.setTextSize(1);
}
// Affichage de la température canal 0
if (TemperatureValide > 0){
display.setCursor(0, 57);
display.print(F("T "));
display.print(int(temperature));
}
else
{
display.setCursor(0, 57);
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(108-(durOn.length()*6),57);
display.print(durOn);
}
//barre d'action affiché en ecran 1
void BarreEtatDroite() { /*Affiche une barre d'état WIFI et mode action*/
if(OLED_on==false || !OledState) {
return;
}
display.setTextSize(1);
display.setTextColor(OLED_WHITE);
display.drawLine(110,13,110,64,OLED_WHITE); //Ligne séparatrice à droite
//Niveau Wifi
if (WiFi.status() == WL_CONNECTED) {
//Icone niveau connection
int NivSignal = int(WiFi.RSSI()) ;
if (NivSignal<-80) {display.drawBitmap(112, 0, bitmap_Signal1 , 16, 12, OLED_WHITE); }
else if(NivSignal<-60) {display.drawBitmap(112, 0, bitmap_Signal2 , 16, 12, OLED_WHITE); }
else if(NivSignal<-45) {display.drawBitmap(112, 0, bitmap_Signal3 , 16, 12, OLED_WHITE); }
else if(NivSignal<-30) {display.drawBitmap(112, 0, bitmap_Signal4 , 16, 12, OLED_WHITE); }
}
else {
(WiFi.getMode() == WIFI_STA)==false ? display.drawBitmap(112, 0, bitmap_Signal0 , 16, 11, OLED_WHITE) : display.drawBitmap(112, 0, bitmap_Signal0 , 16, 11, OLED_WHITE);
}
//Mode en cours du Triac/ssr...
int Mode = 0;
float laTemperature = -120;
if (TemperatureValide > 0) { //La température de ce canal est valide
laTemperature = temperature;
}
if (MATERIEL_ROUTAGE != -1) Mode = LesActions[MATERIEL_ROUTAGE].TypeEnCours(HeureCouranteDeci, laTemperature, LTARFbin);
display.setCursor(115,17);
display.setTextColor(OLED_WHITE);
if(Mode!=1){
display.print(F("OF"));
}
else {
display.fillRect(114,16,13,10,OLED_WHITE);
display.setTextColor(OLED_BLACK);
display.print(F("OF"));
}
display.setCursor(115,29);
display.setTextColor(OLED_WHITE);
if(Mode!=2){
display.print(F("ON"));
}
else {
display.fillRect(114,28,13,10,OLED_WHITE);
display.setTextColor(OLED_BLACK);
display.print(F("ON"));
}
display.setCursor(115,41);
display.setTextColor(OLED_WHITE);
if(Mode!=3){
display.print(F("PW"));
}
else {
display.fillRect(114,40,13,10,OLED_WHITE);
display.setTextColor(OLED_BLACK);
display.print(F("PW"));
}
display.setCursor(115,53);
display.setTextColor(OLED_WHITE);
if(Mode!=4){
display.print(F("TR"));
}
else {
display.fillRect(114,52,13,10,OLED_WHITE);
display.setTextColor(OLED_BLACK);
display.print(F("TR"));
}
display.setTextColor(OLED_WHITE);
}
//Ecran 2
void Ecran2() {
if(OLED_on==false || !OledState){
return;
}
display.setCursor(0,0);
display.setTextSize(2);
display.setTextColor(OLED_WHITE);
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);
}
//Ecran 3
void Ecran3() {
if(OLED_on==false || !OledState){
return;
}
display.setCursor(0,0);
display.setTextSize(2);
display.setTextColor(OLED_WHITE);
float H = 0;
//if(MATERIEL_ROUTAGE != -1 ) H = LesActions[MATERIEL_ROUTAGE].H_Ouvre;
display.println(F("Heure"));
display.println(F("router"));
display.print(H);
display.println(F("h"));
display.setTextSize(1);
//Affichage de la version installée
display.setCursor(0,57);
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),57);
display.print(durOn);
}
//Affichage du logo
void OledLogo() {
display.clearDisplay();
display.setCursor(0,0);
display.drawBitmap(0, 0, bitmap_Logo , 128, 68, OLED_WHITE);
display.setCursor(70,50);
display.print(F("V "));
display.print(Version);
display.display();
}
//Gestion du bouton
void OledBouton() {
switch (ModeBtnOled)
{
case 0 :
//Gestion bouton poussoir (allume/éteint)
if (button_time > millis()) break;
OledState = !OledState; // inverse l’état de la variable
button_time = millis() + btn_latence;
OledChange=true;
break;
case 1 :
//Capteur ou bouton avec extinction auto (allume)
if (button_time > millis()) break; //on garde la notion de latence
if (OledState == false) {
OledState = true; // inverse l’état de la variable
button_time = millis() + btn_latence;
OledChange=true;
}
break;
default:
break;
}
}
Voilà tu me diras si ca passe
Messages : 8
Sujets : 0
Inscription : Aug 2024
Réputation :
0
(Hier, 03:26 PM)Lolo69 a écrit : @Chris
ci-dessous le fichier OLED avec les fonctions de la V13 mais qui se se compile avec une V11_20
Pour compiler n'oublie pas de passer le partition Scheme à NO FS
mais avant penses mettre les numeros de GPIO de tes boutons en ligne 45-46.
Voilà tu me diras si ca passe
Un grand MERCI Lolo69,
ça fonctionne, l'écran se met bien en veille et se réveille bien avec le bouton poussoir. L'affichage est Ok sur les 3 écrans d'informations et le logo.
L'accés à linterface de ce routeur (de test) fonctionne parfaitement, pas de lenteur. Je vais ajouter un ssr et créer des actions.
Une fois les tests validés, je l'installe sur le routeur ECS.
PS : le week-end ne commence pas le mercredi
RobotDyn 40A + NF-A4x10. CE 3000w th méca. UxIx2 . Kit PV pnp 2 kW + OpenDtu. Maisonette + affichage routeur v11.20 (Merci André, Raphael591, Lolo69)
Messages : 496
Sujets : 6
Inscription : Sep 2024
Réputation :
9
Lol pendant la pause on fait plein de trucs
Messages : 8
Sujets : 0
Inscription : Aug 2024
Réputation :
0
(Hier, 10:56 PM)Lolo69 a écrit : Lol pendant la pause on fait plein de trucs
@Lolo69
Bonjour, j'ai testé avec un ssr, tout fonctionne au niveau de l'affichage, mode auto (via action), forçage, ouverture, puissances, etc... les infos à l'écran suivent et s'affichent correctement => Parfait Lolo69
Par contre en veille, l'affichage s'allume pendant 5 secondes, toutes les 45 secondes sur le logo F1ATB. Je n'ai pas souvenir de cette enjolivure. Est-ce normal (dans le code d'origine de Raphael591) ou bug?
J'abuse encore un peu de tes compétences et de ton week-end . Merci d'avance
RobotDyn 40A + NF-A4x10. CE 3000w th méca. UxIx2 . Kit PV pnp 2 kW + OpenDtu. Maisonette + affichage routeur v11.20 (Merci André, Raphael591, Lolo69)
Messages : 496
Sujets : 6
Inscription : Sep 2024
Réputation :
9
(Il y a 6 heures)ChrisChris a écrit : (Hier, 10:56 PM)Lolo69 a écrit : Lol pendant la pause on fait plein de trucs
@Lolo69
Bonjour, j'ai testé avec un ssr, tout fonctionne au niveau de l'affichage, mode auto (via action), forçage, ouverture, puissances, etc... les infos à l'écran suivent et s'affichent correctement => Parfait Lolo69
Par contre en veille, l'affichage s'allume pendant 5 secondes, toutes les 45 secondes sur le logo F1ATB. Je n'ai pas souvenir de cette enjolivure. Est-ce normal (dans le code d'origine de Raphael591) ou bug?
J'abuse encore un peu de tes compétences et de ton week-end . Merci d'avance
Je n ai pas décortiqué tout le code , Raphael qui l’a réalisé sera largement plus performant que moi pour y répondre et ca permet de rendre à Cesar ce qui lui appartient.
|