3 Oleds sur une Arduino UNO : latence

Bonjour à tous,
Je suis sur un projet de 3 afficheurs sur une seule Arduino (Uno pour le prototypage puis Nano pour la version finale).
Chaque écran Oled affiche la lecture d'un capteur (pression / température sonde K / Air Fuel Ratio 0-5v)

Les écrans Oled passent via un multiplexer TCA9548A.
Sur un précédent post où je demandais de l'aide pour le multiplexage, on m'avait alerté sur un possible manque de mémoire à cause de la bibliothèque Adafruit SSD1306.

Voici une vidéo des 3 écrans multiplexés. Dans cette vidéo je ne fait que faire varier l'écran de droite via un potentiomètre. C'est assez lent.
https://youtube.com/shorts/ka0UOoTuLDA?feature=share

Voici une 2 éme vidéo avec 1 seul écran pour comparer. Ici on voit que c'est bien plus fluide.
https://youtube.com/shorts/YpWUEMGz654?feature=share

Ma question est : dois-je passer sur un autre microcontrôleur pour régler ce problème de latence ? Arduino Méga ? ESP32 ?
Je débute dans ce domaine, ayez ça en mémoire si vous trouvez mes questions stupides :slight_smile:

Salut.
As-tu essayé d'utiliser la fréquence I2C 400KHz ?

Wire.setClock(400000);

EDIT :
Tu ne montres pas ton code, mais si tu utilises la librairie Adafruit_SSD1306 cela t'oblige à rafraîchir l'écran complet, vu que tu ne peux déclarer qu'une seule instance d'écran, la UNO n'ayant pas assez de mémoire pour 2 instances. Forcément c'est très lent.

est-ce que la seconde vidéo passe aussi par le multiplexer TCA9548A ?

quel est le code gérant le multiplexage (choix une fois de la cible ou vous rafraîchissez à chaque fois les 3 écrans même si les données sont inchangées (hint: faut pas))?

Citation

Non, je n'ai pas essayé "Wire.setClock(400000);"
Je vais essayer.

Je peux montrer le code mais il est très long.

#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include "max6675.h"
#include <Adafruit_Sensor.h>
#include <Fonts/FreeSansBold9pt7b.h>
#include <Fonts/FreeSansBold12pt7b.h>
#include <Fonts/FreeSansBold18pt7b.h>

#define SCREEN_WIDTH 128    // Largeur en pixels de l'écran OLED
#define SCREEN_HEIGHT 64    // Hauteur en pixels de l'écran OLED

// Declaration de l'écran SSD1306 connecté au I2C (SDA, SCL pins)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);

// EGT -----------------------------------------------------------------------------------
int convert = 0;
  // Capteur température
int thermo1D0 = 4;   // so
int thermo1CS = 5;
int thermo1CLK = 6;  // sck
float temp1 = 0;
MAX6675 thermocouple1(thermo1CLK, thermo1CS, thermo1D0);

  // Valeur max (peak)
int tempPeakReset = 50000;    // Temps en millisecondes entre 2 valeurs max
float tempPeak = 0;
float tempMax = 0;
unsigned long tempPeakTimer = 0;

// BOOST ----------------------------------------------------------------------------------
#define sensorPin A0
  // Capteur
const int pressureInput = A0;             // sélectionne la broche d'entrée analogique pour le capteur de pression
const int pressureZero = 102.4;           // lecture analogique du capteur de pression à 0 psi
const int pressureMax = 921.6;            // lecture analogique du capteur de pression à 100 psi
const int pressuretransducermaxPSI = 100; // Valeur max du capteur de pression (100 psi)
const int sensorDelay = 5;                //constant integer to set the sensor read delay in milliseconds
float pressureBrut = 0;                   // variable pour stocker la valeur provenant du capteur de pression (plage 0-1023)
float pressureBar = 0;                    // variable pour stocker la valeur provenant du capteur de pression (en PSI puis convertit en BAR)
float pressureBar1 = 0;                   // variable pour stocker la valeur provenant du capteur de pression (en PSI puis convertit en BAR)

  // Progress bar
float barBoostAtmo = 0;                   // variable pour stocker la valeur dans la Progress bar en phase ATMO
float barBoostTurbo = 0;                  // variable pour stocker la valeur dans la Progress bar en phase TURBO

  // Valeur MAX (Peak)
int boostPeakReset = 5000;                // Temps en millisecondes pour réinitialiser la valeur MAX
float boostPeak = 0;                      // variable pour stocker la valeur PEAK
float boostMax = 0;                       // variable pour stocker la valeur MAX
unsigned long boostPeakTimer = 0;         //

// AFR ----------------------------------------------------------------------------------
int needle = 0;
float lambda ;

// Sélectionne le BUS de communication I2C -------------------------------------------------
void TCA9548A(uint8_t bus)
{
  Wire.beginTransmission(0x70);  // Adresse du TCA9548A
  Wire.write(1 << bus);          // Envoie un byte au BUS sélectionné
  Wire.endTransmission();
}

// 'sp_prod', 128x60px
const unsigned char epd_bitmap_sp_prod [] 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xfc, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xf9, 0xe7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xf3, 0xcf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xe7, 0x9f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x03, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xe0, 
	0x00, 0x00, 0x07, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xe0, 
	0x00, 0x00, 0x07, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xc0, 
	0x00, 0x00, 0x0f, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xc0, 
	0x00, 0x00, 0x0f, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x80, 
	0x00, 0x00, 0x1f, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x80, 
	0x00, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 
	0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 
	0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 
	0x00, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 
	0x00, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 
	0x00, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 
	0x00, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 
	0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xe7, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xe7, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xcf, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xcf, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x9f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x9f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x7f, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf9, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf1, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe3, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x81, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 
	0x03, 0xfe, 0x7f, 0xe3, 0xfe, 0x1f, 0xf1, 0xe1, 0xcf, 0xfc, 0xff, 0xf8, 0xff, 0x87, 0x87, 0x00, 
	0x07, 0x8e, 0xf0, 0xff, 0x0f, 0x38, 0x39, 0xc3, 0xdc, 0x1c, 0x3c, 0x3b, 0xc1, 0xcf, 0xce, 0x00, 
	0x07, 0x9e, 0xff, 0xfc, 0x07, 0x78, 0x3b, 0x87, 0xb8, 0x00, 0x38, 0x77, 0x81, 0xcf, 0xde, 0x00, 
	0x0f, 0xf9, 0xff, 0x9c, 0x0e, 0x70, 0x7f, 0x87, 0x38, 0x00, 0x70, 0xf7, 0x03, 0xdc, 0xfc, 0x00, 
	0x1e, 0x01, 0xc3, 0x9e, 0x3c, 0xf1, 0xe7, 0x8f, 0x3c, 0x78, 0x70, 0xe7, 0x87, 0x9c, 0x7c, 0x00, 
	0x1c, 0x03, 0x83, 0x8f, 0xf0, 0xff, 0xc3, 0xfc, 0x1f, 0xe0, 0xe1, 0xc3, 0xfe, 0x38, 0x78, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};

// '205', 128x60px
const unsigned char epd_bitmap_205 [] 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0xff, 0xff, 0xff, 0xc0, 0x1f, 0xff, 0xff, 0xff, 0xf8, 0x07, 0xff, 0xff, 0xff, 0xc0, 
	0x00, 0x01, 0xff, 0xff, 0xff, 0xe0, 0x3f, 0xff, 0xff, 0xff, 0xfc, 0x07, 0xff, 0xff, 0xff, 0xc0, 
	0x00, 0x03, 0xff, 0xff, 0xff, 0xe0, 0x7f, 0xff, 0xff, 0xff, 0xfc, 0x0f, 0xff, 0xff, 0xff, 0xc0, 
	0x00, 0x07, 0xff, 0x00, 0xff, 0xe0, 0x7f, 0xff, 0xff, 0xff, 0xfc, 0x0f, 0xff, 0xff, 0xff, 0x80, 
	0x00, 0x07, 0xfc, 0x00, 0x7f, 0xe0, 0xff, 0x00, 0x00, 0x03, 0xfc, 0x0f, 0xe0, 0x00, 0x00, 0x00, 
	0x00, 0x07, 0xfc, 0x00, 0x7f, 0xe0, 0xfe, 0x00, 0x00, 0x03, 0xfc, 0x1f, 0xe0, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x7f, 0xc0, 0xfe, 0x00, 0x00, 0x03, 0xfc, 0x1f, 0xc0, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0xff, 0xc1, 0xfc, 0x00, 0x00, 0x07, 0xf8, 0x1f, 0xc0, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x1f, 0xff, 0xff, 0xc1, 0xfc, 0x00, 0x00, 0x07, 0xf8, 0x3f, 0xff, 0xff, 0xff, 0x00, 
	0x00, 0x03, 0xff, 0xff, 0xff, 0x83, 0xfc, 0x00, 0x00, 0x07, 0xf8, 0x3f, 0xff, 0xff, 0xff, 0x00, 
	0x00, 0x0f, 0xff, 0xff, 0xfe, 0x03, 0xf8, 0x00, 0x00, 0x0f, 0xf8, 0x7f, 0xe0, 0x01, 0xff, 0x00, 
	0x00, 0x3f, 0xff, 0x00, 0x00, 0x03, 0xf8, 0x00, 0x00, 0x0f, 0xf0, 0x7f, 0xc0, 0x00, 0xff, 0x00, 
	0x00, 0x3f, 0xe0, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00, 0x0f, 0xf0, 0x00, 0x00, 0x00, 0xff, 0x00, 
	0x00, 0x7f, 0xc0, 0x00, 0x00, 0x07, 0xf0, 0x00, 0x00, 0x1f, 0xf0, 0x00, 0x00, 0x01, 0xfe, 0x00, 
	0x00, 0x7f, 0xc0, 0x00, 0x00, 0x0f, 0xf0, 0x00, 0x00, 0x1f, 0xf0, 0xff, 0x80, 0x01, 0xfe, 0x00, 
	0x00, 0xff, 0xc0, 0x00, 0x00, 0x0f, 0xf0, 0x00, 0x00, 0x1f, 0xe0, 0xff, 0x80, 0x01, 0xfe, 0x00, 
	0x00, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xe1, 0xff, 0xff, 0xff, 0xfe, 0x00, 
	0x00, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xc1, 0xff, 0xff, 0xff, 0xfc, 0x00, 
	0x00, 0xff, 0xff, 0xff, 0xfe, 0x0f, 0xff, 0xff, 0xff, 0xff, 0x80, 0xff, 0xff, 0xff, 0xfc, 0x00, 
	0x00, 0xff, 0xff, 0xff, 0xfc, 0x07, 0xff, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0xf8, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};

// 'tct', 128x60px
const unsigned char epd_bitmap_tct [] 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x07, 0xff, 0xff, 0xff, 0xfe, 0x07, 0xff, 0xff, 0xff, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x80, 
	0x00, 0x0f, 0xff, 0xff, 0xff, 0xfc, 0x1f, 0xff, 0xff, 0xff, 0xf1, 0xff, 0xff, 0xff, 0xff, 0x00, 
	0x00, 0x0f, 0xff, 0xff, 0xff, 0xfc, 0x1f, 0xff, 0xff, 0xff, 0xe1, 0xff, 0xff, 0xff, 0xff, 0x00, 
	0x00, 0x1f, 0xff, 0xff, 0xff, 0xf8, 0x3f, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xff, 0xff, 0xff, 0x00, 
	0x00, 0x1f, 0xff, 0xff, 0xff, 0xf8, 0x3f, 0xff, 0xff, 0xff, 0xc3, 0xff, 0xff, 0xff, 0xfe, 0x00, 
	0x00, 0x00, 0x01, 0xff, 0x80, 0x00, 0x7f, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xf0, 0x00, 0x00, 
	0x00, 0x00, 0x01, 0xff, 0x00, 0x00, 0x7f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc0, 0x00, 0x00, 
	0x00, 0x00, 0x03, 0xff, 0x00, 0x00, 0x7f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xc0, 0x00, 0x00, 
	0x00, 0x00, 0x03, 0xfe, 0x00, 0x00, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xc0, 0x00, 0x00, 
	0x00, 0x00, 0x03, 0xfe, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x80, 0x00, 0x00, 
	0x00, 0x00, 0x07, 0xfe, 0x00, 0x01, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x80, 0x00, 0x00, 
	0x00, 0x00, 0x07, 0xfc, 0x00, 0x01, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x80, 0x00, 0x00, 
	0x00, 0x00, 0x0f, 0xfc, 0x00, 0x01, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x0f, 0xfc, 0x00, 0x03, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x0f, 0xf8, 0x00, 0x03, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x1f, 0xf8, 0x00, 0x03, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x01, 0xfe, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x1f, 0xf8, 0x00, 0x07, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x03, 0xfe, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x3f, 0xf0, 0x00, 0x07, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x03, 0xfe, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x3f, 0xf0, 0x00, 0x03, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x03, 0xfe, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x3f, 0xf0, 0x00, 0x01, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x07, 0xfc, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};

// =============================================  SETUP =====================================================================================================================
void setup() 
{
  Wire.begin();             // Commence la communication I2C avec le Multiplexeur

  // Initialise l'écran OLED 1 sur le bus numéro 2 (SCL2 - SDA2) ------------------------------------------------------------> TURBO
    TCA9548A(2);
    display.begin(SSD1306_SWITCHCAPVCC, 0x3C);                      // Allume l'écran
    display.clearDisplay();                                         // Efface le buffer
    display.drawBitmap(0, 0, epd_bitmap_sp_prod, 128, 60, 1);       // Affiche le logo "SP Production"
    display.display();

  // Initialise l'écran OLED 2 sur le bus numéro 3 (SCL3 - SDA3) ------------------------------------------------------------> EGT
    TCA9548A(3);
    display.begin(SSD1306_SWITCHCAPVCC, 0x3C);                      // Allume l'écran
    display.clearDisplay();                                         // Efface le buffer
    display.drawBitmap(0, 0,  epd_bitmap_205, 128, 60, 1);        // Affiche le logo "205 Gti"
    display.display ();
    
  // Initialise l'écran OLED 3 sur le bus numéro 4 (SCL4 - SDA4) ------------------------------------------------------------> AFR
    TCA9548A(4);
    display.begin(SSD1306_SWITCHCAPVCC, 0x3C);                      // Allume l'écran
    display.clearDisplay();                                         // Efface le buffer
    display.drawBitmap(0, 0,  epd_bitmap_tct, 128, 60, 1);        // Affiche le logo "205 Gti"
    display.display ();
    delay(2000);                                                    // Durée affichage écran d'accueil en millisecondes
}

// =============================================  LOOP =======================================================================================================================
void loop()
{
  // ############################# Paramètres de l'écran 1 via le bus 2 (SD2 - SCL2) --> ######### TURBO #####################################################################
    TCA9548A(2);
    display.clearDisplay();
      pressureBrut = analogRead(pressureInput);                                                               // Lit la valeur de la broche d'entrée et l'affecte à la variable (0-1023)
      pressureBar = (((pressureBrut-pressureZero)*pressuretransducermaxPSI)/(pressureMax-pressureZero)/14);   // Equation pour convertir la lecture analogique en BAR
      int pressureBar1 = map(analogRead(sensorPin), 21, 900, 100, 9600);                                      // Calcul valeur capteur pour la valeur MAX (Peak)
      barBoostAtmo =  map(pressureBrut, 1023, 0, 400, 0);                                                     // Calcul valeur Boost PHASE ATMO pour la PROGRESS BAR
      barBoostTurbo = map(pressureBrut, 0, 1023, 0, 360);                                                     // Calcul valeur Boost PHASE TURBO pour la PROGRESS BAR
     
  // ______________________________________________ Valeur MAX (Peak)  _______________________________________________________________________________________________________

      if (boostPeak < pressureBar1 && pressureBar1 > 0.50) 
    {
      boostPeak = pressureBar1;
      boostPeakTimer = millis();
      if (boostMax < boostPeak) 
      {
        boostMax = boostPeak;
      }
    }

    else if (boostPeak > pressureBar1 && (millis() - boostPeakTimer) > boostPeakReset) 
    {
      boostPeak = 0.00;
    }

      // Affiche la zone blanche (valeur max)---------------------------------------------------
        {
          display.fillRoundRect (82, 0, 46, 19, 2, WHITE);  // Rectangle blanc arrondi (Pos X, Pos Y, Largeur, Hauteur, Rayons coins, Couleur)
        }
   
      // Affiche la Pression MAX dans la zone blanche ------------------------------------------
        {
          display.setTextColor(BLACK);                         // Couleur FONT pour la valeur de pression MAX
          display.setTextSize(1);                              // Taille FONT
          display.setFont(&FreeSansBold9pt7b);                 // FONT 9pt
          display.setCursor(95, 15);                           // Position "valeur MAX"
          display.println(((boostPeak * 0.001) - 1.013), 1);   // 1.013 = 1013 mbar Pression atmosphérique
          display.setTextColor(WHITE);                         // Couleur FONT pour le texte "MAX"
          display.setTextSize(1);                              // Taille FONT
          display.setCursor(110, 28);                          // Position du texte "MAX"
          display.setFont(NULL);                               // Font "standard"
          display.print("MAX");                                // Affiche le texte "MAX"
        }      
  // ______________________________________________ Lecture valeur principale Pression Turbo _________________________________________________________________________________

    // Valeur principale en Phase ATMOSPHERIQUE -------------------------------------------------------------------------------
    if (pressureBar <= 0) 
    {
      display.setCursor(0, 40);               // Position de la valeur de DEPRESSION
      display.setFont(&FreeSansBold18pt7b);   // FONT 18pt          
      display.println(pressureBar, 1);        // Affiche a valeur de DEPRESSION
      display.setCursor(65, 46);              // Position de l'unité (BAR)
      display.setFont(&FreeSansBold9pt7b);    // FONT 9pt
      display.print("bar");                   // Affiche l'unité "BAR"
      delay(sensorDelay);                     // Délai en millisecondes entre les valeurs lues par le capteur
    }
    
    // Valeur principale en Phase TURBO ---------------------------------------------------------------------------------------
    else if (pressureBar > 0) 
    {
      display.setCursor(12, 40);              // Position de la valeur de PRESSION
      display.setFont(&FreeSansBold18pt7b);   // FONT 18pt          
      display.println(pressureBar, 1);        // Affiche a valeur de PRESSION
       display.setCursor(65, 46);             // Position de l'unité (BAR)
      display.setFont(&FreeSansBold9pt7b);    // FONT 9pt
      display.print("bar");                   // Affiche l'unité "BAR"
      delay(sensorDelay);                     // Délai en millisecondes entre les valeurs lues par le capteur  
    }

  // ______________________________________________ Progress bar  ____________________________________________________________________________________________________________
      
      if (pressureBar < 0.2)  // Si PRESSION sup. 0.2BAR --> masque la progress bar
    // Cadre Progress bar -------------------------------------------------------------------------------------------------------
      display.drawLine(42, 56, 42, 74, 1);       // Ligne Repère 0 bar
      display.drawRect(0, 56, 128, 8, WHITE);    // Rectangle progress bar

    // Progress bar en phase ATMO -----------------------------------------------------------------------------------------------
      if (pressureBar <= 0) 
      {
      display.fillRect(0, 58, barBoostAtmo, 4, WHITE);       // (Position en x, y, VALEUR, largeur, couleur)
      }

    // Progress bar en phase TURBO ----------------------------------------------------------------------------------------------
      if (pressureBar >= 0.1) 
      {
      display.fillRect(45, 58, barBoostTurbo, 4, WHITE);     // (Position en x, y, VALEUR, largeur, couleur)
      } 

  // ______________________________________________ WARNING TURBO ____________________________________________________________________________________________________________

      if (pressureBar >= 1.2)  // Si PRESSION sup. 1.2BAR --> Affiche "WARNING"
      {
        display.setTextColor(BLACK);
        display.setTextSize(1);
        display.setCursor(20, 62);
        display.setFont(&FreeSansBold9pt7b);
        display.fillRect(0, 48, 128, 16, WHITE);  // Affiche un rectangle blanc arrondi (Pos X, Pos Y, Largeur, Hauteur, Rayons coins, Couleur)
        display.print("WARNING");
      }

  // ______________________________________________ Titre "TURBO"_____________________________________________________________________________________________________________

    display.setTextColor(WHITE);            // Couleur FONT "TURBO"
    display.setTextSize(1);                 // Taille FONT      
    display.setFont(&FreeSansBold9pt7b);    // FONT            
    display.setCursor(0, 13);               // Position du texte "TURBO"
    display.println("TURBO");               // Affiche le texte "TURBO"
    display.display(); 


  // ############################# Paramètres de l'écran 2 via le bus 3 (SD3 - SCL3) --> ######### EGT #######################################################################
    TCA9548A(3);
    display.clearDisplay();
  // ______________________________________________ Valeur MAX (Peak)  _______________________________________________________________________________________________________
      
      // Affiche la zone blanche (valeur max)---------------------------------------------------
      {
        display.fillRoundRect (82, 0, 46, 19, 2, WHITE);  // Rectangle blanc arrondi (Pos X, Pos Y, Largeur, Hauteur, Rayons coins, Couleur)
      }
      
      // Affiche la Pression MAX dans la zone blanche ------------------------------------------
      display.setTextColor(BLACK);
      display.setTextSize(1);
      display.setFont(&FreeSansBold9pt7b);
      display.setCursor(95, 15);       // Position "valeur MAX"
      display.println((tempPeak), 0);  // Affiche la valeur de la température MAX
      display.setTextColor(WHITE);
      display.setTextSize(1);
      display.setCursor(110, 28);      // Position du texte "MAX"
      display.setFont(NULL);           // Retire la police précédente par la police "standard"
      display.print("MAX");            // Affiche le texte "MAX"


      // Formule pour afficher la température max dans la zone blanche ----------------------------
      if (tempPeak < temp1 && temp1 > 0.50) {
        tempPeak = temp1;
        tempPeakTimer = millis();
        if (tempMax < tempPeak) {
          tempMax = tempPeak;
        }
      }

      else if (tempPeak > temp1 && (millis() - tempPeakTimer) > tempPeakReset) {
        tempPeak = 0.00;
      }

  // ______________________________________________ Lecture valeur principale EGT  ___________________________________________________________________________________________
      
      temp1 = thermocouple1.readCelsius();
      delay(1000);
      display.setTextSize(1);
      display.setFont(&FreeSansBold18pt7b);
      display.setCursor(25, 46);
      display.print((temp1), 0);

      // Affiche le symbole "°"
      display.setTextSize(1);
      display.setFont(NULL);
      display.setCursor(85, 28);
      display.print("o");

      // Affiche l'unité de température = C
      display.setTextSize(1);
      display.setFont(&FreeSansBold9pt7b);
      display.setCursor(90, 46);
      display.setTextSize(1);
      display.print("C");
    
  // ______________________________________________ Progress bar EGT _________________________________________________________________________________________________________

      if (temp1 <= 900)  // Si T° sup. 900°C --> masque la progress bar
      {
        display.drawRect(0, 56, 128, 8, WHITE);         // Rectangle progress bar
        display.fillRect(2, 58, temp1 / 10, 4, WHITE);  // Valeur du capteur temperature dans la Progress bar
      }

  // ______________________________________________ WARNING EGT ______________________________________________________________________________________________________________

      if (temp1 >= 900)  // Si T° sup. 900°C --> Affiche "WARNING"
      {
        display.setTextColor(BLACK);
        display.setTextSize(1);
        display.setCursor(20, 62);
        display.setFont(&FreeSansBold9pt7b);
        display.fillRect(0, 48, 128, 16, WHITE);  // Affiche un rectangle blanc arrondi (Pos X, Pos Y, Largeur, Hauteur, Rayons coins, Couleur)
        display.print("WARNING");
      }

  // ______________________________________________ Titre "EGT"_______________________________________________________________________________________________________________
        
      display.setTextColor(WHITE);
      display.setTextSize(1);
      display.setCursor(0, 12);
      display.setFont(&FreeSansBold9pt7b);
      display.print("EGT");
      display.display(); 

 
 // ############################# Paramètres de l'écran 2 via le bus 3 (SD4 - SCL4) --> ######### AFR #######################################################################
    TCA9548A(4);
    display.clearDisplay();

    lambda = analogRead(A1);                        // Affectation de la sortie A1 pour le capteur
    needle = lambda;
    lambda = map(lambda, 0, 1023, 74, 221);         // Map pour la plage de la valeur Lambda
    needle = map(needle, 0, 1023, 1, 128);          // Map pour la plage du curseur
   
    // ______________________________________________ Valeur "AFR"_____________________________________________________________________________________________________________

      if (lambda/10 <=9.9)  // Positionnement de la valeur Lambda si UNITE seulement (permet d'avoir la valeur positionné au même endroit)
      {
        display.setTextSize(1);
        display.setFont(&FreeSansBold18pt7b);
        display.setTextColor(WHITE);
        display.setCursor(48,44);                 // Positionne la valeur Lambda (x , y)
        display.print((lambda)/10, 1);            // Affiche la valeur du capteur en A1
      }

      else if (lambda/10 >9.9)  // Positionnement de la valeur Lambda si DIZAINE + UNITE 
      {
        display.setTextSize(1);
        display.setFont(&FreeSansBold18pt7b);
        display.setTextColor(WHITE);
        display.setCursor(29,44);                 // Positionne la valeur Lambda (x , y)
        display.print((lambda)/10, 1);            // Affiche la valeur du capteur en A1
      }

    // ______________________________________________ Titre "AFR"______________________________________________________________________________________________________________
        
      display.setTextColor(WHITE);
      display.setTextSize(1);
      display.setFont(&FreeSansBold9pt7b);
      display.setCursor(0, 12);
      display.print("AFR"); 

    // ______________________________________________ Progress BAR ____________________________________________________________________________________________________________

      if ( lambda/10 < 18)                          // Si AFR INF. à 18 : WARNING
      {
        display.drawRect(0, 56, 128, 8, WHITE);       // Rectangle progress bar
        display.setTextColor(WHITE);
        display.setTextSize(1);
        display.setFont(&FreeSansBold9pt7b);
        display.setCursor(0, 53);                     // Positionne le "R" (Rche)
        display.print("R"); 
        display.setTextColor(WHITE);
        display.setTextSize(1);
        display.setFont(&FreeSansBold9pt7b);
        display.setCursor(115, 53);                   // Positionne le "P" (Pauvre)
        display.print("P"); 
      }

      if ( lambda/10 < 18)                          // Si AFR INF. à 18 : WARNING
      {
        display.setFont(NULL);
        display.drawLine(64,56,64,72,WHITE);        // Barre MILIEU "14.7"
        display.fillRect(2, 58, needle, 4, WHITE);  // Valeur de la lambda "needle" dans la progress bar
      }

    // ______________________________________________ WARNING AFR _____________________________________________________________________________________________________________
     
      else if (lambda/10 > 18)                      // Si AFR SUP. à 18 : WARNING
      { 
        display.setTextColor(BLACK);
        display.setTextSize(1);
        display.setFont(&FreeSansBold9pt7b);
        display.setCursor(20, 62);                 // positionne le texte "WARNING"
        display.fillRect(0, 49, 128, 16, WHITE);   // Affiche un rectangle blanc à la place de la progress bar
        display.print("WARNING");
      }
 
 
 
 
 
  display.display();
}

La seconde vidéo ne passe pas par le multiplexer.
Je viens de mettre le code

la loop fait ceci

void loop()
{
  // ############################# Paramètres de l'écran 1 via le bus 2 (SD2 - SCL2) --> ######### TURBO #####################################################################
  TCA9548A(2);
  display.clearDisplay();
  ...
  display.display();


  // ############################# Paramètres de l'écran 2 via le bus 3 (SD3 - SCL3) --> ######### EGT #######################################################################
  TCA9548A(3);
  display.clearDisplay();

  ...
  display.display();


  // ############################# Paramètres de l'écran 2 via le bus 3 (SD4 - SCL4) --> ######### AFR #######################################################################
  TCA9548A(4);
  display.clearDisplay();
  ...
  display.display();
}

donc vous mettez à jour complètement chaque écran à chaque fois. ce n'est pas la bonne approche comme suggéré avant.

Vous devez détecter ce qui doit être mis à jour et dans quel écran puis uniquement mettre à jour cet/ces écran(s) là (et éventuellement que la zone concernée de l'écran si vous voulez que ça soit rapide).

en première approche vous pouvez procéder ainsi:

  • avoir une structure qui contient tous les éléments en cours d'affichage (ce que l'on voit).
  • avoir une nouvelle structure dans laquelle vous chargez toutes les nouvelles valeurs (ce que l'on doit voir)
  • si une valeur a changé, vous mettez un booléen à vrai pour dire que l'écran X doit être redessiner.

une fois toutes les valeurs lues


// lecture dans nouvellStructure de tous les attributs à afficher
...

// et maj des booléens ecran2Change, ecran3Change, ecran4Change
// en comparant avec les valeurs de ancienneStructure
...

// affichage si nécessaire 
if (ecran2Change) {
  TCA9548A(2);
  display.clearDisplay();
  ...
  display.display();
} 

if (ecran3Change) {
  TCA9548A(3);
  display.clearDisplay();

  ...
  display.display();
} 

if (ecran4Change) {
  TCA9548A(4);
  display.clearDisplay();
  ...
  display.display();
} 

// on se souvient de ce qui est maintenant affiché
ancienneStructure = nouvellStructure; 

PS: le dernier commentaire est faux

Ok, merci beaucoup pour votre aide. Je vais essayer de suivre vos conseils, mais ça risque d'être compliqué pour un débutant comme moi :slight_smile:

Dans le cas où je n'y arriverais pas, y aurait-il un moyen de conserver mon code mais d'utiliser un matériel pouvant "gérer la lourdeur de mon code" ?

ce n'est pas compliqué si vous procédez avec méthode, le code de la loop est long mais assez simple

etape 1:

  • regarder le code qui touche l'écran #2
  • recenser toutes les variables qui finissent à l'écran et déterminer leur type ➜ en gros vous regardez tous les display.print ou display.println d'un texte non statique

par exemple, pour l'écran 1 via le bus 2 il reste

  display.println(((boostPeak * 0.001) - 1.013), 1);   // 1.013 = 1013 mbar Pression atmosphérique
  display.println(pressureBar, 1);        // Affiche a valeur de DEPRESSION
  display.println(pressureBar, 1);        // Affiche a valeur de PRESSION

donc ce qui compte c'est boostPeak et pressureBar

on les trouve ici

float boostPeak = 0;                      // variable pour stocker la valeur PEAK
float pressureBar = 0;                    // variable pour stocker la valeur provenant du capteur de pression (en PSI puis convertit en BAR)

etape2:
enlever les déclaration existantes de ces variables pour les replacer par la structure

commencer à bâtir une structure avec ces éléments

struct Affichage {
  float boostPeak = 0;                      // variable pour stocker la valeur PEAK
  float pressureBar = 0;                    // variable pour stocker la valeur provenant du capteur de pression (en PSI puis convertit en BAR)
};

et déclarer deux variables de ce type

Affichage  nouveauxElements, anciensElements;

et déclarez les 3 booléens

bool ecran2Change = false;
bool ecran3Change = false;
bool ecran4Change = false;

etape3.
partout ou vous aviez une des variables XXX, remplacez par nouveauxElements.XXX. Par exemple remplacez toutes les occurence de boostPeak par nouveauxElements.XXX.

etape4.
après avoir lu toutes les valeurs, testez s'il y a un changement qui nécessite un raffichage

ecran2Change = false;
ecran2Change |= (nouveauxElements.XXX != anciensElements.XXX);
ecran2Change |= (nouveauxElements.XXX != anciensElements.XXX);
...

par exemple

ecran2Change = false;
ecran2Change |= (nouveauxElements. boostPeak != anciensElements. boostPeak);
ecran2Change |= (nouveauxElements. pressureBar != anciensElements. pressureBar);

etape5.
effectuez l'affichage que si nécessaire

if (ecran2Change) {
  TCA9548A(2);
  display.clearDisplay();
  ... // le code d'affichage 
  display.display();
} 

etape6.
une fois la mise à jour effectuée, vous vous souvenez de ce qui est affiché maintenant

// on se souvient de ce qui est maintenant affiché
anciensElements = nouveauxElements; 

➜ vous répétez cela pour les 3 écrans

le code devrait alors ressembler à

struct Affichage {
  •••
};

Affichage  nouveauxElements, anciensElements;

bool ecran1Change = false;
bool ecran2Change = false;
bool ecran3Change = false;

void setup() {
  •••
}

void loop() {
  // ************* écran 1 via le bus 2  ************* 

  // lecture des attributs de cet écran
  nouveauxElements.attribut1 = ....
  nouveauxElements.attribut2 = ....
  nouveauxElements.attribut3 = ....
  •••

  // test des changements 
  ecran1Change = false;
  ecran1Change |= (nouveauxElements. attribut1 != anciensElements. attribut1);
  ecran1Change |= (nouveauxElements. attribut2 != anciensElements. attribut2);
  ecran1Change |= (nouveauxElements. attribut3 != anciensElements. attribut3);
  •••

// affichage si nécessaire
  if (ecran1Change) {
    TCA9548A(2);
    display.clearDisplay();
     ••• // le code d'affichage 
    display.display();
  } 

  // ************* écran 2 via le bus 3  ************* 

  // lecture des attributs de cet écran
  nouveauxElements.attribut4 = ....
  nouveauxElements.attribut5 = ....
  •••

  // test des changements 
  ecran2Change = false;
  ecran2Change |= (nouveauxElements. attribut4 != anciensElements. attribut4);
  ecran2Change |= (nouveauxElements. attribut4 != anciensElements. attribut5);
  •••

// affichage si nécessaire
  if (ecran2Change) {
    TCA9548A(3);
    display.clearDisplay();
     ••• // le code d'affichage 
    display.display();
  } 

  // ************* écran 3 via le bus 4  ************* 

  // lecture des attributs de cet écran
  nouveauxElements.attribut6 = ....
  •••

  // test des changements 
  ecran3Change = false;
  ecran3Change |= (nouveauxElements. attribut6 != anciensElements. attribut6);
  •••

// affichage si nécessaire
  if (ecran3Change) {
    TCA9548A(4);
    display.clearDisplay();
     ••• // le code d'affichage 
    display.display();
  } 

  // ***********************************************
  // on se souvient de ce qui est maintenant affiché
  // ***********************************************
  anciensElements = nouveauxElements; 

}

Merci beaucoup pour avoir fait l'effort de rendre la modification plus simple pour moi, c'est vraiment super sympa !!!
Je vais essayer et je ferai un retour.

Bon, malgré vos explications détaillées je ne comprends pas ce que je dois faire. Je me perds dans les termes "attributs", " nouveauxElements.attribut1 = ... " etc... Je suis vraiment débutant et je pense qu'à mon stade c'est beaucoup trop compliqué.

Si vous pouviez m'écrire le code pour un seul écran je pourrais sans doute y arriver mais je ne veux pas vous embêter.

La solution que je vois - à cause de mon niveau faible - c'est de mettre une Nano par écran.

si c'est la structure qui vous fait peur, dupliquez les variables

par exemple pour le premier écran j'ai fait du copier coller à la va vite donc à vérifier

// -------------------
// TURBO
// -------------------

const float pressureZero = 102.4;               // lecture analogique du capteur de pression à 0 psi
const float pressureMax = 921.6;                // lecture analogique du capteur de pression à 100 psi
const float pressuretransducermaxPSI = 100;     // Valeur max du capteur de pression (100 psi)
const unsigned long boostPeakReset = 5000;      // Temps en millisecondes pour réinitialiser la valeur MAX
float boostPeak = 0;                            // variable pour stocker la valeur PEAK
float boostMax = 0;                             // variable pour stocker la valeur MAX
unsigned long boostPeakTimer = 0;                         //

float OldBoostPeak = -999;
float OldPressureBar = -999;

void mesuresTURBO() {

  // ========== ON FAIT LES CALCULS  ========== 
  float pressureBrut = analogRead(pressureInput);             // Lit la valeur de la broche d'entrée et l'affecte à la variable (0-1023)
  long pressureBar1 = map(pressureBrut, 21, 900, 100, 9600);  // Calcul valeur capteur pour la valeur MAX (Peak)
  long barBoostAtmo =  map(pressureBrut, 1023, 0, 400, 0);    // Calcul valeur Boost PHASE ATMO pour la PROGRESS BAR
  long barBoostTurbo = map(pressureBrut, 0, 1023, 0, 360);    // Calcul valeur Boost PHASE TURBO pour la PROGRESS BAR

  float pressureBar = (((pressureBrut - pressureZero) * pressuretransducermaxPSI) / (pressureMax - pressureZero) / 14); // Equation pour convertir la lecture analogique en BAR

  if (boostPeak < pressureBar1 && pressureBar1 > 0.50) {
    boostPeak = pressureBar1;
    boostPeakTimer = millis();
    if (boostMax < boostPeak) {
      boostMax = boostPeak;
    }
  } else if (boostPeak > pressureBar1 && (millis() - boostPeakTimer) > boostPeakReset) {
    boostPeak = 0.00;
  }

  // ========== SI NECESSAIRE ON FAIT L'AFFICHAGE  ========== 
  if ((OldBoostPeak != boostPeak) || (OldPressureBar != pressureBar)) {
    // on a eu un changement, on refait l'affichage
    TCA9548A(2);
    display.clearDisplay();
    display.fillRoundRect (82, 0, 46, 19, 2, WHITE);  // Rectangle blanc arrondi (Pos X, Pos Y, Largeur, Hauteur, Rayons coins, Couleur)
    // Affiche la Pression MAX dans la zone blanche ------------------------------------------
    display.setTextColor(BLACK);                         // Couleur FONT pour la valeur de pression MAX
    display.setTextSize(1);                              // Taille FONT
    display.setFont(&FreeSansBold9pt7b);                 // FONT 9pt
    display.setCursor(95, 15);                           // Position "valeur MAX"
    display.println(((boostPeak * 0.001) - 1.013), 1);   // 1.013 = 1013 mbar Pression atmosphérique
    display.setTextColor(WHITE);                         // Couleur FONT pour le texte "MAX"
    display.setTextSize(1);                              // Taille FONT
    display.setCursor(110, 28);                          // Position du texte "MAX"
    display.setFont(NULL);                               // Font "standard"
    display.print("MAX");                                // Affiche le texte "MAX"

    // ______________________________________________ Lecture valeur principale Pression Turbo _________________________________________________________________________________

    // Valeur principale en Phase ATMOSPHERIQUE -------------------------------------------------------------------------------
    if (pressureBar <= 0)
    {
      display.setCursor(0, 40);               // Position de la valeur de DEPRESSION
      display.setFont(&FreeSansBold18pt7b);   // FONT 18pt
      display.println(pressureBar, 1);        // Affiche a valeur de DEPRESSION
      display.setCursor(65, 46);              // Position de l'unité (BAR)
      display.setFont(&FreeSansBold9pt7b);    // FONT 9pt
      display.print("bar");                   // Affiche l'unité "BAR"
      delay(sensorDelay);                     // Délai en millisecondes entre les valeurs lues par le capteur
    }
    // Valeur principale en Phase TURBO ---------------------------------------------------------------------------------------
    else if (pressureBar > 0)
    {
      display.setCursor(12, 40);              // Position de la valeur de PRESSION
      display.setFont(&FreeSansBold18pt7b);   // FONT 18pt
      display.println(pressureBar, 1);        // Affiche a valeur de PRESSION
      display.setCursor(65, 46);             // Position de l'unité (BAR)
      display.setFont(&FreeSansBold9pt7b);    // FONT 9pt
      display.print("bar");                   // Affiche l'unité "BAR"
      delay(sensorDelay);                     // Délai en millisecondes entre les valeurs lues par le capteur
    }

  // ========== ON MEMORISE LES NOUVELLES VALEUR  ========== 
    OldBoostPeak = boostPeak;
    OldPressureBar = pressureBar;
  }
}


// -------------------
// EGT
// -------------------

void mesureEGT() {
  // à faire
}


// -------------------
// AFR
// -------------------

void mesureAFR() {
  // à faire
}



void setup() {
  ...
}

void loop() {
  mesuresTURBO();
  mesureEGT();
  mesureAFR();
}

Il y a des truc louches cependant dans le code

pourquoi avoir déclaré sensorPin qui est la même chose que pressureInput ?

autant faire

      int pressureBar1 = map(pressureBrut, 21, 900, 100, 9600);                                      // Calcul valeur capteur pour la valeur MAX (Peak)

plus tard vous comparez pressureBar1 avec un nombre à virgule

mais c'est un entier.... et vous avez fait un map entre 100 et 9600, est-ce que 0.5 est significatif ??

boostPeak est défini en float, mais vous lui affectez une valeur de pressureBar1 qui est un entier

boostMax ne sert à rien dans le code

...

Un très grand merci à vous pour le temps passé et la pédagogie. Le dernier post était vraiment bien détaillé, à la portée du débutant que je suis.
Ca m'a permis de comprendre le fonctionnement. Et après avoir intégré vos modifications sur les 3 écrans ça fonctionne à merveille !!
https://youtube.com/shorts/W8r8c4ySoTk?feature=share

Pour ce qui est des trucs louches dans mon code, c'est une suite de modifications couches après couches sans faire de nettoyage. Je vais suivre vos conseils.
Encore une fois, merci beaucoup pour le temps passé :wink:

cool ! bravo

Bon, j'ai crié victoire trop vite. Il y avait un souci sur le 3eme écran (EGT). Si je chauffais le capteur la valeur ne changeait pas.
J'ai modifié le code, ça fonctionne.... mais retour de la latence, encore pire.

Je ne comprends pas trop pourquoi.

Voilà le code "final"

#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include "max6675.h"
#include <Adafruit_Sensor.h>
#include <Fonts/FreeSansBold9pt7b.h>
#include <Fonts/FreeSansBold12pt7b.h>
#include <Fonts/FreeSansBold18pt7b.h>

#define SCREEN_WIDTH 128    // Largeur en pixels de l'écran OLED
#define SCREEN_HEIGHT 64    // Hauteur en pixels de l'écran OLED

// Declaration de l'écran SSD1306 connecté au I2C (SDA, SCL pins)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);

// EGT -----------------------------------------------------------------------------------
int convert = 0;
  // Capteur température
int thermo1D0 = 4;   // so
int thermo1CS = 5;
int thermo1CLK = 6;  // sck
float temp1 = 0;
MAX6675 thermocouple1(thermo1CLK, thermo1CS, thermo1D0);

  // Valeur max (peak)
int tempPeakReset = 50000;    // Temps en millisecondes entre 2 valeurs max
float tempPeak = 0;
float tempMax = 0;
float OldtempPeak = -999;
float Oldtemp1 = -999;
unsigned long tempPeakTimer = 0;


// BOOST ----------------------------------------------------------------------------------
const int pressureInput = A0;             // sélectionne la broche d'entrée analogique pour le capteur de pression
const float pressureZero = 102.4;               // lecture analogique du capteur de pression à 0 psi
const float pressureMax = 921.6;                // lecture analogique du capteur de pression à 100 psi
const float pressuretransducermaxPSI = 100;     // Valeur max du capteur de pression (100 psi)
const unsigned long boostPeakReset = 5000;      // Temps en millisecondes pour réinitialiser la valeur MAX
float boostPeak = 0;                            // variable pour stocker la valeur PEAK
float boostMax = 0;                             // variable pour stocker la valeur MAX
unsigned long boostPeakTimer = 0;                         //

float OldBoostPeak = -999;
float OldPressureBar = -999;

// AFR ----------------------------------------------------------------------------------
int needle = 0;
float lambda ;
float OldLambda = -999;

// Sélectionne le BUS de communication I2C -------------------------------------------------
void TCA9548A(uint8_t bus)
{
  Wire.beginTransmission(0x70);  // Adresse du TCA9548A
  Wire.write(1 << bus);          // Envoie un byte au BUS sélectionné
  Wire.endTransmission();
}

// 'sp_prod', 128x60px
const unsigned char epd_bitmap_sp_prod [] 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xfc, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xf9, 0xe7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xf3, 0xcf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xe7, 0x9f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x03, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xe0, 
	0x00, 0x00, 0x07, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xe0, 
	0x00, 0x00, 0x07, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xc0, 
	0x00, 0x00, 0x0f, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xc0, 
	0x00, 0x00, 0x0f, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x80, 
	0x00, 0x00, 0x1f, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x80, 
	0x00, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 
	0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 
	0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 
	0x00, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 
	0x00, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 
	0x00, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 
	0x00, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 
	0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xe7, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xe7, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xcf, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xcf, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x9f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x9f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x7f, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf9, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf1, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe3, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x81, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 
	0x03, 0xfe, 0x7f, 0xe3, 0xfe, 0x1f, 0xf1, 0xe1, 0xcf, 0xfc, 0xff, 0xf8, 0xff, 0x87, 0x87, 0x00, 
	0x07, 0x8e, 0xf0, 0xff, 0x0f, 0x38, 0x39, 0xc3, 0xdc, 0x1c, 0x3c, 0x3b, 0xc1, 0xcf, 0xce, 0x00, 
	0x07, 0x9e, 0xff, 0xfc, 0x07, 0x78, 0x3b, 0x87, 0xb8, 0x00, 0x38, 0x77, 0x81, 0xcf, 0xde, 0x00, 
	0x0f, 0xf9, 0xff, 0x9c, 0x0e, 0x70, 0x7f, 0x87, 0x38, 0x00, 0x70, 0xf7, 0x03, 0xdc, 0xfc, 0x00, 
	0x1e, 0x01, 0xc3, 0x9e, 0x3c, 0xf1, 0xe7, 0x8f, 0x3c, 0x78, 0x70, 0xe7, 0x87, 0x9c, 0x7c, 0x00, 
	0x1c, 0x03, 0x83, 0x8f, 0xf0, 0xff, 0xc3, 0xfc, 0x1f, 0xe0, 0xe1, 0xc3, 0xfe, 0x38, 0x78, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};

// '205', 128x60px
const unsigned char epd_bitmap_205 [] 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0xff, 0xff, 0xff, 0xc0, 0x1f, 0xff, 0xff, 0xff, 0xf8, 0x07, 0xff, 0xff, 0xff, 0xc0, 
	0x00, 0x01, 0xff, 0xff, 0xff, 0xe0, 0x3f, 0xff, 0xff, 0xff, 0xfc, 0x07, 0xff, 0xff, 0xff, 0xc0, 
	0x00, 0x03, 0xff, 0xff, 0xff, 0xe0, 0x7f, 0xff, 0xff, 0xff, 0xfc, 0x0f, 0xff, 0xff, 0xff, 0xc0, 
	0x00, 0x07, 0xff, 0x00, 0xff, 0xe0, 0x7f, 0xff, 0xff, 0xff, 0xfc, 0x0f, 0xff, 0xff, 0xff, 0x80, 
	0x00, 0x07, 0xfc, 0x00, 0x7f, 0xe0, 0xff, 0x00, 0x00, 0x03, 0xfc, 0x0f, 0xe0, 0x00, 0x00, 0x00, 
	0x00, 0x07, 0xfc, 0x00, 0x7f, 0xe0, 0xfe, 0x00, 0x00, 0x03, 0xfc, 0x1f, 0xe0, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x7f, 0xc0, 0xfe, 0x00, 0x00, 0x03, 0xfc, 0x1f, 0xc0, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0xff, 0xc1, 0xfc, 0x00, 0x00, 0x07, 0xf8, 0x1f, 0xc0, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x1f, 0xff, 0xff, 0xc1, 0xfc, 0x00, 0x00, 0x07, 0xf8, 0x3f, 0xff, 0xff, 0xff, 0x00, 
	0x00, 0x03, 0xff, 0xff, 0xff, 0x83, 0xfc, 0x00, 0x00, 0x07, 0xf8, 0x3f, 0xff, 0xff, 0xff, 0x00, 
	0x00, 0x0f, 0xff, 0xff, 0xfe, 0x03, 0xf8, 0x00, 0x00, 0x0f, 0xf8, 0x7f, 0xe0, 0x01, 0xff, 0x00, 
	0x00, 0x3f, 0xff, 0x00, 0x00, 0x03, 0xf8, 0x00, 0x00, 0x0f, 0xf0, 0x7f, 0xc0, 0x00, 0xff, 0x00, 
	0x00, 0x3f, 0xe0, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00, 0x0f, 0xf0, 0x00, 0x00, 0x00, 0xff, 0x00, 
	0x00, 0x7f, 0xc0, 0x00, 0x00, 0x07, 0xf0, 0x00, 0x00, 0x1f, 0xf0, 0x00, 0x00, 0x01, 0xfe, 0x00, 
	0x00, 0x7f, 0xc0, 0x00, 0x00, 0x0f, 0xf0, 0x00, 0x00, 0x1f, 0xf0, 0xff, 0x80, 0x01, 0xfe, 0x00, 
	0x00, 0xff, 0xc0, 0x00, 0x00, 0x0f, 0xf0, 0x00, 0x00, 0x1f, 0xe0, 0xff, 0x80, 0x01, 0xfe, 0x00, 
	0x00, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xe1, 0xff, 0xff, 0xff, 0xfe, 0x00, 
	0x00, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xc1, 0xff, 0xff, 0xff, 0xfc, 0x00, 
	0x00, 0xff, 0xff, 0xff, 0xfe, 0x0f, 0xff, 0xff, 0xff, 0xff, 0x80, 0xff, 0xff, 0xff, 0xfc, 0x00, 
	0x00, 0xff, 0xff, 0xff, 0xfc, 0x07, 0xff, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0xf8, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};

// 'tct', 128x60px
const unsigned char epd_bitmap_tct [] 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x07, 0xff, 0xff, 0xff, 0xfe, 0x07, 0xff, 0xff, 0xff, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x80, 
	0x00, 0x0f, 0xff, 0xff, 0xff, 0xfc, 0x1f, 0xff, 0xff, 0xff, 0xf1, 0xff, 0xff, 0xff, 0xff, 0x00, 
	0x00, 0x0f, 0xff, 0xff, 0xff, 0xfc, 0x1f, 0xff, 0xff, 0xff, 0xe1, 0xff, 0xff, 0xff, 0xff, 0x00, 
	0x00, 0x1f, 0xff, 0xff, 0xff, 0xf8, 0x3f, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xff, 0xff, 0xff, 0x00, 
	0x00, 0x1f, 0xff, 0xff, 0xff, 0xf8, 0x3f, 0xff, 0xff, 0xff, 0xc3, 0xff, 0xff, 0xff, 0xfe, 0x00, 
	0x00, 0x00, 0x01, 0xff, 0x80, 0x00, 0x7f, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xf0, 0x00, 0x00, 
	0x00, 0x00, 0x01, 0xff, 0x00, 0x00, 0x7f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc0, 0x00, 0x00, 
	0x00, 0x00, 0x03, 0xff, 0x00, 0x00, 0x7f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xc0, 0x00, 0x00, 
	0x00, 0x00, 0x03, 0xfe, 0x00, 0x00, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xc0, 0x00, 0x00, 
	0x00, 0x00, 0x03, 0xfe, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x80, 0x00, 0x00, 
	0x00, 0x00, 0x07, 0xfe, 0x00, 0x01, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x80, 0x00, 0x00, 
	0x00, 0x00, 0x07, 0xfc, 0x00, 0x01, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x80, 0x00, 0x00, 
	0x00, 0x00, 0x0f, 0xfc, 0x00, 0x01, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x0f, 0xfc, 0x00, 0x03, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x0f, 0xf8, 0x00, 0x03, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x1f, 0xf8, 0x00, 0x03, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x01, 0xfe, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x1f, 0xf8, 0x00, 0x07, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x03, 0xfe, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x3f, 0xf0, 0x00, 0x07, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x03, 0xfe, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x3f, 0xf0, 0x00, 0x03, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x03, 0xfe, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x3f, 0xf0, 0x00, 0x01, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x07, 0xfc, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};

// ============================================ SETUP =======================================================================================================================
  void setup() 
  {
    Wire.begin();             // Commence la communication I2C avec le Multiplexeur

    // Initialise l'écran OLED 1 sur le bus numéro 2 (SCL2 - SDA2) ------------------------------------------------------------> TURBO
      TCA9548A(2);
      display.begin(SSD1306_SWITCHCAPVCC, 0x3C);                      // Allume l'écran
      display.clearDisplay();                                         // Efface le buffer
      display.drawBitmap(0, 0, epd_bitmap_sp_prod, 128, 60, 1);       // Affiche le logo "SP Production"
      display.display();
      
    // Initialise l'écran OLED 2 sur le bus numéro 3 (SCL3 - SDA3) ------------------------------------------------------------> AFR
      TCA9548A(3);
      display.begin(SSD1306_SWITCHCAPVCC, 0x3C);                      // Allume l'écran
      display.clearDisplay();                                         // Efface le buffer
      display.drawBitmap(0, 0,  epd_bitmap_205, 128, 60, 1);          // Affiche le logo "205 Gti"
      display.display ();

        // Initialise l'écran OLED 3 sur le bus numéro 4 (SCL4 - SDA4) ------------------------------------------------------------> EGT
      TCA9548A(4);
      display.begin(SSD1306_SWITCHCAPVCC, 0x3C);                      // Allume l'écran
      display.clearDisplay();                                         // Efface le buffer
      display.drawBitmap(0, 0,  epd_bitmap_tct, 128, 60, 1);          // Affiche le logo "205 Gti"
      display.display ();
      delay(1000);                                                    // Durée affichage écran d'accueil en millisecondes
  }

// ============================================ TURBO =======================================================================================================================
  void mesuresTURBO() 
  {
    // ______________ ON FAIT LES CALCULS  ____________________________________________________________________________________________________ 
      float pressureBrut = analogRead(pressureInput);             // Lit la valeur de la broche d'entrée et l'affecte à la variable (0-1023)
      long pressureBar1 = map(pressureBrut, 21, 900, 100, 9600);  // Calcul valeur capteur pour la valeur MAX (Peak)
      long barBoostAtmo =  map(pressureBrut, 1023, 0, 400, 0);    // Calcul valeur Boost PHASE ATMO pour la PROGRESS BAR
      long barBoostTurbo = map(pressureBrut, 0, 1023, 0, 360);    // Calcul valeur Boost PHASE TURBO pour la PROGRESS BAR

      float pressureBar = (((pressureBrut - pressureZero) * pressuretransducermaxPSI) / (pressureMax - pressureZero) / 14); // Equation pour convertir la lecture analogique en BAR

      if (boostPeak < pressureBar1 && pressureBar1 > 0.50) {
        boostPeak = pressureBar1;
        boostPeakTimer = millis();
        if (boostMax < boostPeak) {
          boostMax = boostPeak;
        }
      } else if (boostPeak > pressureBar1 && (millis() - boostPeakTimer) > boostPeakReset) {
        boostPeak = 0.00;
      }

    // ______________ SI NECESSAIRE ON FAIT L'AFFICHAGE  ______________________________________________________________________________________ 
      if ((OldBoostPeak != boostPeak) || (OldPressureBar != pressureBar)) {
        // on a eu un changement, on refait l'affichage
        TCA9548A(2);
        display.clearDisplay();
        display.fillRoundRect (82, 0, 46, 19, 2, WHITE);  // Rectangle blanc arrondi (Pos X, Pos Y, Largeur, Hauteur, Rayons coins, Couleur)
        // Affiche la Pression MAX dans la zone blanche ------------------------------------------
        display.setTextColor(BLACK);                         // Couleur FONT pour la valeur de pression MAX
        display.setTextSize(1);                              // Taille FONT
        display.setFont(&FreeSansBold9pt7b);                 // FONT 9pt
        display.setCursor(95, 15);                           // Position "valeur MAX"
        display.println(((boostPeak * 0.001) - 1.013), 1);   // 1.013 = 1013 mbar Pression atmosphérique
        display.setTextColor(WHITE);                         // Couleur FONT pour le texte "MAX"
        display.setTextSize(1);                              // Taille FONT
        display.setCursor(110, 28);                          // Position du texte "MAX"
        display.setFont(NULL);                               // Font "standard"
        display.print("MAX");                                // Affiche le texte "MAX"

      // ______________________________________________ Lecture valeur principale Pression Turbo _________________________________________________________________________________

        // Valeur principale en Phase ATMOSPHERIQUE -------------------------------------------------------------------------------
        if (pressureBar <= 0)
        {
          display.setCursor(0, 40);               // Position de la valeur de DEPRESSION
          display.setFont(&FreeSansBold18pt7b);   // FONT 18pt
          display.println(pressureBar, 1);        // Affiche a valeur de DEPRESSION
          display.setCursor(65, 46);              // Position de l'unité (BAR)
          display.setFont(&FreeSansBold9pt7b);    // FONT 9pt
          display.print("bar");                   // Affiche l'unité "BAR"
        }
        // Valeur principale en Phase TURBO ---------------------------------------------------------------------------------------
        else if (pressureBar > 0)
        {
          display.setCursor(12, 40);              // Position de la valeur de PRESSION
          display.setFont(&FreeSansBold18pt7b);   // FONT 18pt
          display.println(pressureBar, 1);        // Affiche a valeur de PRESSION
          display.setCursor(65, 46);             // Position de l'unité (BAR)
          display.setFont(&FreeSansBold9pt7b);    // FONT 9pt
          display.print("bar");                   // Affiche l'unité "BAR"
        }

      // ______________________________________________ Progress bar TURBO _______________________________________________________________________________________________________
        
        if (pressureBar < 0.2)  // Si PRESSION sup. 0.2BAR --> masque la progress bar
        // Cadre Progress bar -------------------------------------------------------------------------------------------------------
          display.drawLine(42, 56, 42, 74, 1);       // Ligne Repère 0 bar
          display.drawRect(0, 56, 128, 8, WHITE);    // Rectangle progress bar

        // Progress bar en phase ATMO -----------------------------------------------------------------------------------------------
          if (pressureBar <= 0) 
          {
          display.fillRect(0, 58, barBoostAtmo, 4, WHITE);       // (Position en x, y, VALEUR, largeur, couleur)
          }

        // Progress bar en phase TURBO ----------------------------------------------------------------------------------------------
          if (pressureBar >= 0.1) 
          {
          display.fillRect(45, 58, barBoostTurbo, 4, WHITE);     // (Position en x, y, VALEUR, largeur, couleur)
          } 

      // ______________________________________________ WARNING TURBO ____________________________________________________________________________________________________________

        if (pressureBar >= 1.2)  // Si PRESSION sup. 1.2BAR --> Affiche "WARNING"
        {
          display.setTextColor(BLACK);
          display.setTextSize(1);
          display.setCursor(20, 62);
          display.setFont(&FreeSansBold9pt7b);
          display.fillRect(0, 48, 128, 16, WHITE);  // Affiche un rectangle blanc arrondi (Pos X, Pos Y, Largeur, Hauteur, Rayons coins, Couleur)
          display.print("WARNING");
        }
      
      // ______________________________________________ Titre TURBO 88_____________________________________________________________________________________________________________

          display.setTextColor(WHITE);            // Couleur FONT "TURBO"
          display.setTextSize(1);                 // Taille FONT      
          display.setFont(&FreeSansBold9pt7b);    // FONT            
          display.setCursor(0, 13);               // Position du texte "TURBO"
          display.println("TURBO");               // Affiche le texte "TURBO"
          display.display(); 


      // ______________________________________________ On mémorise les nouvelles valeurs TURBO  _________________________________________________________________________________ 
          OldBoostPeak = boostPeak;
          OldPressureBar = pressureBar;
        }


        }

// ============================================ AFR =========================================================================================================================
  void mesuresAFR() 
  {

      // ______________________________________________ ON FAIT LES CALCULS  ___________________________________________________________________________________________________ 
        lambda = analogRead(A1);                        // Affectation de la sortie A1 pour le capteur
        needle = lambda;
        lambda = map(lambda, 0, 1023, 74, 221);         // Map pour la plage de la valeur Lambda
        needle = map(needle, 0, 1023, 1, 128);          // Map pour la plage du curseur

      // ______________________________________________ SI NECESSAIRE ON FAIT L'AFFICHAGE  ______________________________________________________________________________________
        if (OldLambda != lambda) 
        {
          // on a eu un changement, on refait l'affichage
          TCA9548A(3);
          display.clearDisplay();
        if (lambda/10 <=9.9)  // Positionnement de la valeur Lambda si UNITE seulement (permet d'avoir la valeur positionné au même endroit)
            {
              display.setTextSize(1);
              display.setFont(&FreeSansBold18pt7b);
              display.setTextColor(WHITE);
              display.setCursor(48,44);                 // Positionne la valeur Lambda (x , y)
              display.print((lambda)/10, 1);            // Affiche la valeur du capteur en A1
            }

            else if (lambda/10 >9.9)  // Positionnement de la valeur Lambda si DIZAINE + UNITE 
            {
              display.setTextSize(1);
              display.setFont(&FreeSansBold18pt7b);
              display.setTextColor(WHITE);
              display.setCursor(29,44);                 // Positionne la valeur Lambda (x , y)
              display.print((lambda)/10, 1);            // Affiche la valeur du capteur en A1
            }

      
      // ______________________________________________ Titre "AFR"______________________________________________________________________________________________________________
          
        display.setTextColor(WHITE);
        display.setTextSize(1);
        display.setFont(&FreeSansBold9pt7b);
        display.setCursor(0, 12);
        display.print("AFR");
      
      // ______________________________________________ Progress BAR ____________________________________________________________________________________________________________

        if ( lambda/10 < 18)                          // Si AFR INF. à 18 : WARNING
        {
          display.drawRect(0, 56, 128, 8, WHITE);       // Rectangle progress bar
          display.setTextColor(WHITE);
          display.setTextSize(1);
          display.setFont(&FreeSansBold9pt7b);
          display.setCursor(0, 53);                     // Positionne le "R" (Rche)
          display.print("R"); 
          display.setTextColor(WHITE);
          display.setTextSize(1);
          display.setFont(&FreeSansBold9pt7b);
          display.setCursor(115, 53);                   // Positionne le "P" (Pauvre)
          display.print("P"); 
        }

        if ( lambda/10 < 18)                          // Si AFR INF. à 18 : WARNING
        {
          display.setFont(NULL);
          display.drawLine(64,56,64,72,WHITE);        // Barre MILIEU "14.7"
          display.fillRect(2, 58, needle, 4, WHITE);  // Valeur de la lambda "needle" dans la progress bar
        }

      // ______________________________________________ WARNING AFR _____________________________________________________________________________________________________________
      
        else if (lambda/10 > 18)                      // Si AFR SUP. à 18 : WARNING
        { 
          display.setTextColor(BLACK);
          display.setTextSize(1);
          display.setFont(&FreeSansBold9pt7b);
          display.setCursor(20, 62);                 // positionne le texte "WARNING"
          display.fillRect(0, 49, 128, 16, WHITE);   // Affiche un rectangle blanc à la place de la progress bar
          display.print("WARNING");
        }


      // ______________________________________________ ON MEMORISE LES NOUVELLES VALEUR  _______________________________________________________________________________________
        OldLambda = lambda;
    }
  }

// ============================================ EGT =======================================================================================================================
  void mesuresEGT() 
  {
    // ______________ On fait les calculs EGT  ____________________________________________________________________________________________________ 
      temp1 = thermocouple1.readCelsius();
      delay(1000);




    // ______________ Si nécessaire on fait l'affichage EGT  ______________________________________________________________________________________ 
      if ((OldtempPeak != tempPeak) || (Oldtemp1 != temp1)) {
        // on a eu un changement, on refait l'affichage
        TCA9548A(4);
        display.clearDisplay();
        display.fillRoundRect (82, 0, 46, 19, 2, WHITE);  // Rectangle blanc arrondi (Pos X, Pos Y, Largeur, Hauteur, Rayons coins, Couleur)       

        // ______________ Formule pour afficher la température max dans la zone blanche ______________________________________________________________
                if (tempPeak < temp1 && temp1 > 0.50) 
                {
                  tempPeak = temp1;
                  tempPeakTimer = millis();
                  if (tempMax < tempPeak) 
                  {
                    tempMax = tempPeak;
                  }
                }

                else if (tempPeak > temp1 && (millis() - tempPeakTimer) > tempPeakReset) 
                {
                  tempPeak = 0.00;
                }

        // Affiche la Température MAX dans la zone blanche ------------------------------------------
        display.setTextColor(BLACK);
        display.setTextSize(1);
        display.setFont(&FreeSansBold9pt7b);
        display.setCursor(95, 15);       // Position "valeur MAX"
        display.println((tempPeak), 0);  // Affiche la valeur de la température MAX
        display.setTextColor(WHITE);
        display.setTextSize(1);
        display.setCursor(110, 28);      // Position du texte "MAX"
        display.setFont(NULL);           // Retire la police précédente par la police "standard"
        display.print("MAX");            // Affiche le texte "MAX"

      // ______________________________________________ Lecture valeur principale EGT _________________________________________________________________________________

        display.setTextSize(1);
        display.setFont(&FreeSansBold18pt7b);
        display.setCursor(25, 46);
        display.print((temp1), 0);

        // Affiche le symbole "°"
        display.setTextSize(1);
        display.setFont(NULL);
        display.setCursor(85, 28);
        display.print("o");

        // Affiche l'unité de température = C
        display.setTextSize(1);
        display.setFont(&FreeSansBold9pt7b);
        display.setCursor(90, 46);
        display.setTextSize(1);
        display.print("C");

      // ______________________________________________ Progress bar EGT _______________________________________________________________________________________________________
        
        if (temp1 <= 900)  // Si T° sup. 900°C --> masque la progress bar
            {
              display.drawRect(0, 56, 128, 8, WHITE);         // Rectangle progress bar
              display.fillRect(2, 58, temp1 / 10, 4, WHITE);  // Valeur du capteur temperature dans la Progress bar
            }

      // ______________________________________________ WARNING EGT ____________________________________________________________________________________________________________

        if (temp1 >= 900)  // Si T° sup. 900°C --> Affiche "WARNING"
            {
              display.setTextColor(BLACK);
              display.setTextSize(1);
              display.setCursor(20, 62);
              display.setFont(&FreeSansBold9pt7b);
              display.fillRect(0, 48, 128, 16, WHITE);  // Affiche un rectangle blanc arrondi (Pos X, Pos Y, Largeur, Hauteur, Rayons coins, Couleur)
              display.print("WARNING");
            }
      
      // ______________________________________________ Titre EGT _______________________________________________________________________________________________________________

          display.setTextColor(WHITE);            // Couleur FONT "TURBO"
          display.setTextSize(1);                 // Taille FONT      
          display.setFont(&FreeSansBold9pt7b);    // FONT            
          display.setCursor(0, 13);               // Position du texte "TURBO"
          display.println("EGT");               // Affiche le texte "TURBO"
          display.display(); 

      // ______________________________________________ On mémorise les nouvelles valeurs EGT  _________________________________________________________________________________ 
          OldtempPeak = tempPeak;
          Oldtemp1 = temp1;
        }


        }





// ============================================ LOOP ========================================================================================================================
  void loop() {
    mesuresTURBO();
    mesuresAFR();
    mesuresEGT();
    display.display();
  }

euh avec le delay(1000); de

void mesuresEGT()
{
  // ______________ On fait les calculs EGT  ____________________________________________________________________________________________________
  temp1 = thermocouple1.readCelsius();
  delay(1000);

vous bloquez tout pour 1 seconde... ➜ faut le virer

sinon temp1 étant un float, il se peut que la variation soit minime (non affichée) mais que vous considériez que la t° a changé.

éventuellement travaillez juste avec un chiffre après la virgule

déclarez Oldtemp1 sous forme de long au lieu de float et une autre variable

long Oldtemp1, tempArrondie;

et faites

// ============================================ EGT =======================================================================================================================
void mesuresEGT()
{
  // ______________ On fait les calculs EGT  ____________________________________________________________________________________________________
  temp1 = thermocouple1.readCelsius();
 tempArrondie = 10 * temp1; // on stocke en 10ème de degrès


  // ______________ Si nécessaire on fait l'affichage EGT  ______________________________________________________________________________________
  if ((Oldtemp1 != tempArrondie) {
    ... on fait l'affichage 


    Oldtemp1 = tempArrondie;
  }

comme cela si la variation est au centième de degrés ça ne redéclenche pas un affichage

Si je supprime le delay, plus de latence, mais la température ne bouge pas si je chauffe le capteur.

Voici le code modifié, j'ai peut être fait une erreur

// EGT -----------------------------------------------------------------------------------
int convert = 0;
  // Capteur température
int thermo1D0 = 4;   // so
int thermo1CS = 5;
int thermo1CLK = 6;  // sck
float temp1 = 0;
MAX6675 thermocouple1(thermo1CLK, thermo1CS, thermo1D0);

  // Valeur max (peak)
int tempPeakReset = 50000;    // Temps en millisecondes entre 2 valeurs max
float tempPeak = 0;
float tempMax = 0;
float OldtempPeak = -999;
//float Oldtemp1 = -999;
long Oldtemp1, tempArrondie;
unsigned long tempPeakTimer = 0;
// ============================================ EGT =======================================================================================================================
  void mesuresEGT() 
  {
    // ______________ On fait les calculs EGT  ____________________________________________________________________________________________________ 
      temp1 = thermocouple1.readCelsius();
      tempArrondie = 10 * temp1; // on stocke en 10ème de degrès

    // ______________ Si nécessaire on fait l'affichage EGT  ______________________________________________________________________________________ 
      if (Oldtemp1 != tempArrondie) {
        // on a eu un changement, on refait l'affichage
        TCA9548A(4);
        display.clearDisplay();
        display.fillRoundRect (82, 0, 46, 19, 2, WHITE);  // Rectangle blanc arrondi (Pos X, Pos Y, Largeur, Hauteur, Rayons coins, Couleur)   
            

        // ______________ Formule pour afficher la température max dans la zone blanche ______________________________________________________________
          if (tempPeak < temp1 && temp1 > 0.50) 
            {
              tempPeak = temp1;
              tempPeakTimer = millis();
                if (tempMax < tempPeak) 
                  {
                    tempMax = tempPeak;
                  }
            }

            else if (tempPeak > temp1 && (millis() - tempPeakTimer) > tempPeakReset) 
              {
                tempPeak = 0.00;
              }

      // Affiche la Température MAX dans la zone blanche ------------------------------------------
        display.setTextColor(BLACK);
        display.setTextSize(1);
        display.setFont(&FreeSansBold9pt7b);
        display.setCursor(95, 15);       // Position "valeur MAX"
        display.println((tempPeak), 0);  // Affiche la valeur de la température MAX
        display.setTextColor(WHITE);
        display.setTextSize(1);
        display.setCursor(110, 28);      // Position du texte "MAX"
        display.setFont(NULL);           // Retire la police précédente par la police "standard"
        display.print("MAX");            // Affiche le texte "MAX"

      // ______________________________________________ Lecture valeur principale EGT _________________________________________________________________________________

        display.setTextSize(1);
        display.setFont(&FreeSansBold18pt7b);
        display.setCursor(25, 46);
        display.print((temp1), 0);

        // Affiche le symbole "°"
        display.setTextSize(1);
        display.setFont(NULL);
        display.setCursor(85, 28);
        display.print("o");

        // Affiche l'unité de température = C
        display.setTextSize(1);
        display.setFont(&FreeSansBold9pt7b);
        display.setCursor(90, 46);
        display.setTextSize(1);
        display.print("C");

      // ______________________________________________ Progress bar EGT _______________________________________________________________________________________________________
        
        if (temp1 <= 900)  // Si T° sup. 900°C --> masque la progress bar
            {
              display.drawRect(0, 56, 128, 8, WHITE);         // Rectangle progress bar
              display.fillRect(2, 58, temp1 / 10, 4, WHITE);  // Valeur du capteur temperature dans la Progress bar
            }

      // ______________________________________________ WARNING EGT ____________________________________________________________________________________________________________

        if (temp1 >= 900)  // Si T° sup. 900°C --> Affiche "WARNING"
            {
              display.setTextColor(BLACK);
              display.setTextSize(1);
              display.setCursor(20, 62);
              display.setFont(&FreeSansBold9pt7b);
              display.fillRect(0, 48, 128, 16, WHITE);  // Affiche un rectangle blanc arrondi (Pos X, Pos Y, Largeur, Hauteur, Rayons coins, Couleur)
              display.print("WARNING");
            }
      
      // ______________________________________________ Titre EGT _______________________________________________________________________________________________________________

          display.setTextColor(WHITE);            // Couleur FONT "TURBO"
          display.setTextSize(1);                 // Taille FONT      
          display.setFont(&FreeSansBold9pt7b);    // FONT            
          display.setCursor(0, 13);               // Position du texte "TURBO"
          display.println("EGT");               // Affiche le texte "TURBO"
          display.display(); 

      // ______________________________________________ On mémorise les nouvelles valeurs EGT  _________________________________________________________________________________ 
          OldtempPeak = tempPeak;
          Oldtemp1 = temp1;
          Oldtemp1 = tempArrondie;
        }
      }

au lieu de

faites juste

si ça ne fonctionne pas, faites juste un petit programme de lecture et affichage dans le moniteur série pour voir si la sonde de T° fonctionne bien

Non, toujours pas, dès que je fais çà, la latence disparait mais la température ne bouge pas. La température fonctionne, puisque que si je fais un reset l'afficheur me donne la nouvelle température

postez tout le code

#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include "max6675.h"
#include <Adafruit_Sensor.h>
#include <Fonts/FreeSansBold9pt7b.h>
#include <Fonts/FreeSansBold12pt7b.h>
#include <Fonts/FreeSansBold18pt7b.h>

#define SCREEN_WIDTH 128    // Largeur en pixels de l'écran OLED
#define SCREEN_HEIGHT 64    // Hauteur en pixels de l'écran OLED

// Declaration de l'écran SSD1306 connecté au I2C (SDA, SCL pins)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);

// EGT -----------------------------------------------------------------------------------
int convert = 0;
  // Capteur température
int thermo1D0 = 4;   // so
int thermo1CS = 5;
int thermo1CLK = 6;  // sck
float temp1 = 0;
MAX6675 thermocouple1(thermo1CLK, thermo1CS, thermo1D0);

  // Valeur max (peak)
int tempPeakReset = 50000;    // Temps en millisecondes entre 2 valeurs max
float tempPeak = 0;
float tempMax = 0;
float OldtempPeak = -999;
//float Oldtemp1 = -999;
long Oldtemp1, tempArrondie;
unsigned long tempPeakTimer = 0;


// BOOST ----------------------------------------------------------------------------------
const int pressureInput = A0;                   // sélectionne la broche d'entrée analogique pour le capteur de pression
const float pressureZero = 102.4;               // lecture analogique du capteur de pression à 0 psi
const float pressureMax = 921.6;                // lecture analogique du capteur de pression à 100 psi
const float pressuretransducermaxPSI = 100;     // Valeur max du capteur de pression (100 psi)
const unsigned long boostPeakReset = 5000;      // Temps en millisecondes pour réinitialiser la valeur MAX
float boostPeak = 0;                            // variable pour stocker la valeur PEAK
float boostMax = 0;                             // variable pour stocker la valeur MAX
unsigned long boostPeakTimer = 0;                         //

float OldBoostPeak = -999;
float OldPressureBar = -999;

// AFR ----------------------------------------------------------------------------------
int needle = 0;
float lambda ;
float OldLambda = -999;

// Sélectionne le BUS de communication I2C -------------------------------------------------
void TCA9548A(uint8_t bus)
{
  Wire.beginTransmission(0x70);  // Adresse du TCA9548A
  Wire.write(1 << bus);          // Envoie un byte au BUS sélectionné
  Wire.endTransmission();
}

// 'sp_prod', 128x60px
const unsigned char epd_bitmap_sp_prod [] 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xfc, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xf9, 0xe7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xf3, 0xcf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xe7, 0x9f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x03, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xe0, 
	0x00, 0x00, 0x07, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xe0, 
	0x00, 0x00, 0x07, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xc0, 
	0x00, 0x00, 0x0f, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xc0, 
	0x00, 0x00, 0x0f, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x80, 
	0x00, 0x00, 0x1f, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x80, 
	0x00, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 
	0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 
	0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 
	0x00, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 
	0x00, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 
	0x00, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 
	0x00, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 
	0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xe7, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xe7, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xcf, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xcf, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x9f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x9f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x7f, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf9, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf1, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe3, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x81, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 
	0x03, 0xfe, 0x7f, 0xe3, 0xfe, 0x1f, 0xf1, 0xe1, 0xcf, 0xfc, 0xff, 0xf8, 0xff, 0x87, 0x87, 0x00, 
	0x07, 0x8e, 0xf0, 0xff, 0x0f, 0x38, 0x39, 0xc3, 0xdc, 0x1c, 0x3c, 0x3b, 0xc1, 0xcf, 0xce, 0x00, 
	0x07, 0x9e, 0xff, 0xfc, 0x07, 0x78, 0x3b, 0x87, 0xb8, 0x00, 0x38, 0x77, 0x81, 0xcf, 0xde, 0x00, 
	0x0f, 0xf9, 0xff, 0x9c, 0x0e, 0x70, 0x7f, 0x87, 0x38, 0x00, 0x70, 0xf7, 0x03, 0xdc, 0xfc, 0x00, 
	0x1e, 0x01, 0xc3, 0x9e, 0x3c, 0xf1, 0xe7, 0x8f, 0x3c, 0x78, 0x70, 0xe7, 0x87, 0x9c, 0x7c, 0x00, 
	0x1c, 0x03, 0x83, 0x8f, 0xf0, 0xff, 0xc3, 0xfc, 0x1f, 0xe0, 0xe1, 0xc3, 0xfe, 0x38, 0x78, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};

// '205', 128x60px
const unsigned char epd_bitmap_205 [] 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0xff, 0xff, 0xff, 0xc0, 0x1f, 0xff, 0xff, 0xff, 0xf8, 0x07, 0xff, 0xff, 0xff, 0xc0, 
	0x00, 0x01, 0xff, 0xff, 0xff, 0xe0, 0x3f, 0xff, 0xff, 0xff, 0xfc, 0x07, 0xff, 0xff, 0xff, 0xc0, 
	0x00, 0x03, 0xff, 0xff, 0xff, 0xe0, 0x7f, 0xff, 0xff, 0xff, 0xfc, 0x0f, 0xff, 0xff, 0xff, 0xc0, 
	0x00, 0x07, 0xff, 0x00, 0xff, 0xe0, 0x7f, 0xff, 0xff, 0xff, 0xfc, 0x0f, 0xff, 0xff, 0xff, 0x80, 
	0x00, 0x07, 0xfc, 0x00, 0x7f, 0xe0, 0xff, 0x00, 0x00, 0x03, 0xfc, 0x0f, 0xe0, 0x00, 0x00, 0x00, 
	0x00, 0x07, 0xfc, 0x00, 0x7f, 0xe0, 0xfe, 0x00, 0x00, 0x03, 0xfc, 0x1f, 0xe0, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x7f, 0xc0, 0xfe, 0x00, 0x00, 0x03, 0xfc, 0x1f, 0xc0, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0xff, 0xc1, 0xfc, 0x00, 0x00, 0x07, 0xf8, 0x1f, 0xc0, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x1f, 0xff, 0xff, 0xc1, 0xfc, 0x00, 0x00, 0x07, 0xf8, 0x3f, 0xff, 0xff, 0xff, 0x00, 
	0x00, 0x03, 0xff, 0xff, 0xff, 0x83, 0xfc, 0x00, 0x00, 0x07, 0xf8, 0x3f, 0xff, 0xff, 0xff, 0x00, 
	0x00, 0x0f, 0xff, 0xff, 0xfe, 0x03, 0xf8, 0x00, 0x00, 0x0f, 0xf8, 0x7f, 0xe0, 0x01, 0xff, 0x00, 
	0x00, 0x3f, 0xff, 0x00, 0x00, 0x03, 0xf8, 0x00, 0x00, 0x0f, 0xf0, 0x7f, 0xc0, 0x00, 0xff, 0x00, 
	0x00, 0x3f, 0xe0, 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00, 0x0f, 0xf0, 0x00, 0x00, 0x00, 0xff, 0x00, 
	0x00, 0x7f, 0xc0, 0x00, 0x00, 0x07, 0xf0, 0x00, 0x00, 0x1f, 0xf0, 0x00, 0x00, 0x01, 0xfe, 0x00, 
	0x00, 0x7f, 0xc0, 0x00, 0x00, 0x0f, 0xf0, 0x00, 0x00, 0x1f, 0xf0, 0xff, 0x80, 0x01, 0xfe, 0x00, 
	0x00, 0xff, 0xc0, 0x00, 0x00, 0x0f, 0xf0, 0x00, 0x00, 0x1f, 0xe0, 0xff, 0x80, 0x01, 0xfe, 0x00, 
	0x00, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xe1, 0xff, 0xff, 0xff, 0xfe, 0x00, 
	0x00, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xc1, 0xff, 0xff, 0xff, 0xfc, 0x00, 
	0x00, 0xff, 0xff, 0xff, 0xfe, 0x0f, 0xff, 0xff, 0xff, 0xff, 0x80, 0xff, 0xff, 0xff, 0xfc, 0x00, 
	0x00, 0xff, 0xff, 0xff, 0xfc, 0x07, 0xff, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0xf8, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};

// 'tct', 128x60px
const unsigned char epd_bitmap_tct [] 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x07, 0xff, 0xff, 0xff, 0xfe, 0x07, 0xff, 0xff, 0xff, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x80, 
	0x00, 0x0f, 0xff, 0xff, 0xff, 0xfc, 0x1f, 0xff, 0xff, 0xff, 0xf1, 0xff, 0xff, 0xff, 0xff, 0x00, 
	0x00, 0x0f, 0xff, 0xff, 0xff, 0xfc, 0x1f, 0xff, 0xff, 0xff, 0xe1, 0xff, 0xff, 0xff, 0xff, 0x00, 
	0x00, 0x1f, 0xff, 0xff, 0xff, 0xf8, 0x3f, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xff, 0xff, 0xff, 0x00, 
	0x00, 0x1f, 0xff, 0xff, 0xff, 0xf8, 0x3f, 0xff, 0xff, 0xff, 0xc3, 0xff, 0xff, 0xff, 0xfe, 0x00, 
	0x00, 0x00, 0x01, 0xff, 0x80, 0x00, 0x7f, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xf0, 0x00, 0x00, 
	0x00, 0x00, 0x01, 0xff, 0x00, 0x00, 0x7f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc0, 0x00, 0x00, 
	0x00, 0x00, 0x03, 0xff, 0x00, 0x00, 0x7f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xc0, 0x00, 0x00, 
	0x00, 0x00, 0x03, 0xfe, 0x00, 0x00, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xc0, 0x00, 0x00, 
	0x00, 0x00, 0x03, 0xfe, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x80, 0x00, 0x00, 
	0x00, 0x00, 0x07, 0xfe, 0x00, 0x01, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x80, 0x00, 0x00, 
	0x00, 0x00, 0x07, 0xfc, 0x00, 0x01, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x80, 0x00, 0x00, 
	0x00, 0x00, 0x0f, 0xfc, 0x00, 0x01, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x0f, 0xfc, 0x00, 0x03, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x0f, 0xf8, 0x00, 0x03, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x1f, 0xf8, 0x00, 0x03, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x01, 0xfe, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x1f, 0xf8, 0x00, 0x07, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x03, 0xfe, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x3f, 0xf0, 0x00, 0x07, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x03, 0xfe, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x3f, 0xf0, 0x00, 0x03, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x03, 0xfe, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x3f, 0xf0, 0x00, 0x01, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x07, 0xfc, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};

// ============================================ SETUP =======================================================================================================================
  void setup() 
  {
    Wire.begin();             // Commence la communication I2C avec le Multiplexeur

    // Initialise l'écran OLED 1 sur le bus numéro 2 (SCL2 - SDA2) ------------------------------------------------------------> TURBO
      TCA9548A(2);
      display.begin(SSD1306_SWITCHCAPVCC, 0x3C);                      // Allume l'écran
      display.clearDisplay();                                         // Efface le buffer
      display.drawBitmap(0, 0, epd_bitmap_sp_prod, 128, 60, 1);       // Affiche le logo "SP Production"
      display.display();
      
    // Initialise l'écran OLED 2 sur le bus numéro 3 (SCL3 - SDA3) ------------------------------------------------------------> AFR
      TCA9548A(3);
      display.begin(SSD1306_SWITCHCAPVCC, 0x3C);                      // Allume l'écran
      display.clearDisplay();                                         // Efface le buffer
      display.drawBitmap(0, 0,  epd_bitmap_205, 128, 60, 1);          // Affiche le logo "205 Gti"
      display.display ();

        // Initialise l'écran OLED 3 sur le bus numéro 4 (SCL4 - SDA4) ------------------------------------------------------------> EGT
      TCA9548A(4);
      display.begin(SSD1306_SWITCHCAPVCC, 0x3C);                      // Allume l'écran
      display.clearDisplay();                                         // Efface le buffer
      display.drawBitmap(0, 0,  epd_bitmap_tct, 128, 60, 1);          // Affiche le logo "205 Gti"
      display.display ();
      //delay(1000);                                                    // Durée affichage écran d'accueil en millisecondes
  }

// ============================================ TURBO =======================================================================================================================
  void mesuresTURBO() 
  {
    // ______________ ON FAIT LES CALCULS  ____________________________________________________________________________________________________ 
      float pressureBrut = analogRead(pressureInput);             // Lit la valeur de la broche d'entrée et l'affecte à la variable (0-1023)
      long pressureBar1 = map(pressureBrut, 21, 900, 100, 9600);  // Calcul valeur capteur pour la valeur MAX (Peak)
      long barBoostAtmo =  map(pressureBrut, 1023, 0, 400, 0);    // Calcul valeur Boost PHASE ATMO pour la PROGRESS BAR
      long barBoostTurbo = map(pressureBrut, 0, 1023, 0, 360);    // Calcul valeur Boost PHASE TURBO pour la PROGRESS BAR

      float pressureBar = (((pressureBrut - pressureZero) * pressuretransducermaxPSI) / (pressureMax - pressureZero) / 14); // Equation pour convertir la lecture analogique en BAR

      if (boostPeak < pressureBar1 && pressureBar1 > 0.50)
      {
          boostPeak = pressureBar1;
          boostPeakTimer = millis();

        if (boostMax < boostPeak) 
          {
            boostMax = boostPeak;
          }
      } 

      else if (boostPeak > pressureBar1 && (millis() - boostPeakTimer) > boostPeakReset)
      {
        boostPeak = 0.00;
      }

    // ______________ SI NECESSAIRE ON FAIT L'AFFICHAGE  ______________________________________________________________________________________ 
      if ((OldBoostPeak != boostPeak) || (OldPressureBar != pressureBar))
      {
        // on a eu un changement, on refait l'affichage
        TCA9548A(2);
        display.clearDisplay();
        display.fillRoundRect (82, 0, 46, 19, 2, WHITE);  // Rectangle blanc arrondi (Pos X, Pos Y, Largeur, Hauteur, Rayons coins, Couleur)
        // Affiche la Pression MAX dans la zone blanche ------------------------------------------
        display.setTextColor(BLACK);                         // Couleur FONT pour la valeur de pression MAX
        display.setTextSize(1);                              // Taille FONT
        display.setFont(&FreeSansBold9pt7b);                 // FONT 9pt
        display.setCursor(95, 15);                           // Position "valeur MAX"
        display.println(((boostPeak * 0.001) - 1.013), 1);   // 1.013 = 1013 mbar Pression atmosphérique
        display.setTextColor(WHITE);                         // Couleur FONT pour le texte "MAX"
        display.setTextSize(1);                              // Taille FONT
        display.setCursor(110, 28);                          // Position du texte "MAX"
        display.setFont(NULL);                               // Font "standard"
        display.print("MAX");                                // Affiche le texte "MAX"

      // ______________________________________________ Lecture valeur principale Pression Turbo _________________________________________________________________________________

        // Valeur principale en Phase ATMOSPHERIQUE -------------------------------------------------------------------------------
        if (pressureBar <= 0)
        {
          display.setCursor(0, 40);               // Position de la valeur de DEPRESSION
          display.setFont(&FreeSansBold18pt7b);   // FONT 18pt
          display.println(pressureBar, 1);        // Affiche a valeur de DEPRESSION
          display.setCursor(65, 46);              // Position de l'unité (BAR)
          display.setFont(&FreeSansBold9pt7b);    // FONT 9pt
          display.print("bar");                   // Affiche l'unité "BAR"
        }
        // Valeur principale en Phase TURBO ---------------------------------------------------------------------------------------
        else if (pressureBar > 0)
        {
          display.setCursor(12, 40);              // Position de la valeur de PRESSION
          display.setFont(&FreeSansBold18pt7b);   // FONT 18pt
          display.println(pressureBar, 1);        // Affiche a valeur de PRESSION
          display.setCursor(65, 46);             // Position de l'unité (BAR)
          display.setFont(&FreeSansBold9pt7b);    // FONT 9pt
          display.print("bar");                   // Affiche l'unité "BAR"
        }

      // ______________________________________________ Progress bar TURBO _______________________________________________________________________________________________________
        
        if (pressureBar < 0.2)  // Si PRESSION sup. 0.2BAR --> masque la progress bar
        // Cadre Progress bar -------------------------------------------------------------------------------------------------------
          display.drawLine(42, 56, 42, 74, 1);       // Ligne Repère 0 bar
          display.drawRect(0, 56, 128, 8, WHITE);    // Rectangle progress bar

        // Progress bar en phase ATMO -----------------------------------------------------------------------------------------------
          if (pressureBar <= 0) 
          {
          display.fillRect(0, 58, barBoostAtmo, 4, WHITE);       // (Position en x, y, VALEUR, largeur, couleur)
          }

        // Progress bar en phase TURBO ----------------------------------------------------------------------------------------------
          if (pressureBar >= 0.1) 
          {
          display.fillRect(45, 58, barBoostTurbo, 4, WHITE);     // (Position en x, y, VALEUR, largeur, couleur)
          } 

      // ______________________________________________ WARNING TURBO ____________________________________________________________________________________________________________

        if (pressureBar >= 1.2)  // Si PRESSION sup. 1.2BAR --> Affiche "WARNING"
        {
          display.setTextColor(BLACK);
          display.setTextSize(1);
          display.setCursor(20, 62);
          display.setFont(&FreeSansBold9pt7b);
          display.fillRect(0, 48, 128, 16, WHITE);  // Affiche un rectangle blanc arrondi (Pos X, Pos Y, Largeur, Hauteur, Rayons coins, Couleur)
          display.print("WARNING");
        }
      
      // ______________________________________________ Titre TURBO _______________________________________________________________________________________________________________

          display.setTextColor(WHITE);            // Couleur FONT "TURBO"
          display.setTextSize(1);                 // Taille FONT      
          display.setFont(&FreeSansBold9pt7b);    // FONT            
          display.setCursor(0, 13);               // Position du texte "TURBO"
          display.println("TURBO");               // Affiche le texte "TURBO"
          display.display(); 


      // ______________________________________________ On mémorise les nouvelles valeurs TURBO  _________________________________________________________________________________ 
          OldBoostPeak = boostPeak;
          OldPressureBar = pressureBar;
        }
  }

// ============================================ AFR =========================================================================================================================
  void mesuresAFR() 
  {

      // ______________________________________________ ON FAIT LES CALCULS  ___________________________________________________________________________________________________ 
        lambda = analogRead(A1);                        // Affectation de la sortie A1 pour le capteur
        needle = lambda;
        lambda = map(lambda, 0, 1023, 74, 221);         // Map pour la plage de la valeur Lambda
        needle = map(needle, 0, 1023, 1, 128);          // Map pour la plage du curseur

      // ______________________________________________ SI NECESSAIRE ON FAIT L'AFFICHAGE  ______________________________________________________________________________________
        if (OldLambda != lambda) 
        {
          // on a eu un changement, on refait l'affichage
          TCA9548A(3);
          display.clearDisplay();
            if (lambda/10 <=9.9)  // Positionnement de la valeur Lambda si UNITE seulement (permet d'avoir la valeur positionné au même endroit)
              {
                display.setTextSize(1);
                display.setFont(&FreeSansBold18pt7b);
                display.setTextColor(WHITE);
                display.setCursor(48,44);                 // Positionne la valeur Lambda (x , y)
                display.print((lambda)/10, 1);            // Affiche la valeur du capteur en A1
              }

            else if (lambda/10 >9.9)  // Positionnement de la valeur Lambda si DIZAINE + UNITE 
              {
                display.setTextSize(1);
                display.setFont(&FreeSansBold18pt7b);
                display.setTextColor(WHITE);
                display.setCursor(29,44);                 // Positionne la valeur Lambda (x , y)
                display.print((lambda)/10, 1);            // Affiche la valeur du capteur en A1
              }

      
      // ______________________________________________ Titre "AFR"______________________________________________________________________________________________________________
          
        display.setTextColor(WHITE);
        display.setTextSize(1);
        display.setFont(&FreeSansBold9pt7b);
        display.setCursor(0, 12);
        display.print("AFR");
      
      // ______________________________________________ Progress bar AFR ____________________________________________________________________________________________________________

        if ( lambda/10 < 18)                          // Si AFR INF. à 18 : WARNING
          {
            display.drawRect(0, 56, 128, 8, WHITE);       // Rectangle progress bar
            display.setTextColor(WHITE);
            display.setTextSize(1);
            display.setFont(&FreeSansBold9pt7b);
            display.setCursor(0, 53);                     // Positionne le "R" (Rche)
            display.print("R"); 
            display.setTextColor(WHITE);
            display.setTextSize(1);
            display.setFont(&FreeSansBold9pt7b);
            display.setCursor(115, 53);                   // Positionne le "P" (Pauvre)
            display.print("P"); 
          }

        if ( lambda/10 < 18)                          // Si AFR INF. à 18 : WARNING
          {
            display.setFont(NULL);
            display.drawLine(64,56,64,72,WHITE);        // Barre MILIEU "14.7"
            display.fillRect(2, 58, needle, 4, WHITE);  // Valeur de la lambda "needle" dans la progress bar
          }

      // ______________________________________________ WARNING AFR _____________________________________________________________________________________________________________
      
        else if (lambda/10 > 18)                      // Si AFR SUP. à 18 : WARNING
          { 
            display.setTextColor(BLACK);
            display.setTextSize(1);
            display.setFont(&FreeSansBold9pt7b);
            display.setCursor(20, 62);                 // positionne le texte "WARNING"
            display.fillRect(0, 49, 128, 16, WHITE);   // Affiche un rectangle blanc à la place de la progress bar
            display.print("WARNING");
          }


      // ______________________________________________ ON MEMORISE LES NOUVELLES VALEUR  _______________________________________________________________________________________
        OldLambda = lambda;
    }
  }

// ============================================ EGT =======================================================================================================================
  void mesuresEGT() 
  {
      Serial.begin(9600);

    // ______________ On fait les calculs EGT  ____________________________________________________________________________________________________ 
      temp1 = thermocouple1.readCelsius();
      tempArrondie = 10 * temp1; // on stocke en 10ème de degrès

    // ______________ Si nécessaire on fait l'affichage EGT  ______________________________________________________________________________________ 
      if (Oldtemp1 != tempArrondie) {
        // on a eu un changement, on refait l'affichage
        TCA9548A(4);
        display.clearDisplay();
        Serial.println(temp1);
        display.fillRoundRect (82, 0, 46, 19, 2, WHITE);  // Rectangle blanc arrondi (Pos X, Pos Y, Largeur, Hauteur, Rayons coins, Couleur)   
            

        // ______________ Formule pour afficher la température max dans la zone blanche ______________________________________________________________
          if (tempPeak < temp1 && temp1 > 0.50) 
            {
              tempPeak = temp1;
              tempPeakTimer = millis();
                if (tempMax < tempPeak) 
                  {
                    tempMax = tempPeak;
                  }
            }

            else if (tempPeak > temp1 && (millis() - tempPeakTimer) > tempPeakReset) 
              {
                tempPeak = 0.00;
              }

      // Affiche la Température MAX dans la zone blanche ------------------------------------------
        display.setTextColor(BLACK);
        display.setTextSize(1);
        display.setFont(&FreeSansBold9pt7b);
        display.setCursor(95, 15);       // Position "valeur MAX"
        display.println((tempPeak), 0);  // Affiche la valeur de la température MAX
        display.setTextColor(WHITE);
        display.setTextSize(1);
        display.setCursor(110, 28);      // Position du texte "MAX"
        display.setFont(NULL);           // Retire la police précédente par la police "standard"
        display.print("MAX");            // Affiche le texte "MAX"

      // ______________________________________________ Lecture valeur principale EGT _________________________________________________________________________________

        display.setTextSize(1);
        display.setFont(&FreeSansBold18pt7b);
        display.setCursor(25, 46);
        display.print((temp1), 0);

        // Affiche le symbole "°"
        display.setTextSize(1);
        display.setFont(NULL);
        display.setCursor(85, 28);
        display.print("o");

        // Affiche l'unité de température = C
        display.setTextSize(1);
        display.setFont(&FreeSansBold9pt7b);
        display.setCursor(90, 46);
        display.setTextSize(1);
        display.print("C");

      // ______________________________________________ Progress bar EGT _______________________________________________________________________________________________________
        
        if (temp1 <= 900)  // Si T° sup. 900°C --> masque la progress bar
            {
              display.drawRect(0, 56, 128, 8, WHITE);         // Rectangle progress bar
              display.fillRect(2, 58, temp1 / 10, 4, WHITE);  // Valeur du capteur temperature dans la Progress bar
            }

      // ______________________________________________ WARNING EGT ____________________________________________________________________________________________________________

        if (temp1 >= 900)  // Si T° sup. 900°C --> Affiche "WARNING"
            {
              display.setTextColor(BLACK);
              display.setTextSize(1);
              display.setCursor(20, 62);
              display.setFont(&FreeSansBold9pt7b);
              display.fillRect(0, 48, 128, 16, WHITE);  // Affiche un rectangle blanc arrondi (Pos X, Pos Y, Largeur, Hauteur, Rayons coins, Couleur)
              display.print("WARNING");
            }
      
      // ______________________________________________ Titre EGT _______________________________________________________________________________________________________________

          display.setTextColor(WHITE);            // Couleur FONT "TURBO"
          display.setTextSize(1);                 // Taille FONT      
          display.setFont(&FreeSansBold9pt7b);    // FONT            
          display.setCursor(0, 13);               // Position du texte "TURBO"
          display.println("EGT");               // Affiche le texte "TURBO"
          display.display(); 

      // ______________________________________________ On mémorise les nouvelles valeurs EGT  _________________________________________________________________________________ 

          Oldtemp1 = tempArrondie;
        }
      }
// ============================================ LOOP ========================================================================================================================
  void loop() {
    mesuresTURBO();
    mesuresAFR();
    mesuresEGT();
    display.display();  // Rafraichit l'écran
  }