Fleauw, une douche plus responsable
Ci-dessous, voici le code flashé dans nos modules à base de microcontrôleur ESP32C6

// librairies communication peripheriques
#include  
#include 
// librairies ecran led
#include 
#include 
//librairies bluetooth
#include 
#include 
#include 

//definition de la taille de l'ecran
#define SCREEN_WIDTH 128  
#define SCREEN_HEIGHT 64  

// initialisation de l'ecran
#define OLED_RESET -1  // Reset pin
#define SCREEN_ADDRESS 0x3C
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

// initialisation du service bluetooth
#define SERVICE_UUID        "4fafc201-1fb5-459e-8fcc-c5c9c331914b"
#define CHARACTERISTIC_UUID "beb5483e-36e1-4688-b7f5-ea07361b26a8"

class MyCallbacks: public BLECharacteristicCallbacks {
    void onWrite(BLECharacteristic *pCharacteristic) {
      String value = pCharacteristic->getValue();
      if (value.length() > 0) {
        Serial.print("Data received from Client: ");
        for (int i = 0; i < value.length(); i++)
          Serial.print(value[i]);
        Serial.println();
      }
    }
};



void setup() {
  Serial.begin(9600);
    
  if (!display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS)) {
    Serial.println(F("SSD1306 allocation failed"));
    for (;;);

  }
  
  //constantes
  int coef_dir=151.33;
  int ord_origine=-1.58;

// creation du service BLE
  BLEDevice::init("XIAO_ESP32C5_Server");
  
  // initialisation du serveur BLE
  BLEServer *pServer = BLEDevice::createServer();

  // creation d'un service desservi par BLE, pour communiquer des donnees
  BLEService *pService = pServer->createService(SERVICE_UUID);

  // autoriser la lecture/ecriture par BLE
  BLECharacteristic *pCharacteristic = pService->createCharacteristic(
                                         CHARACTERISTIC_UUID,
                                         BLECharacteristic::PROPERTY_READ |
                                         BLECharacteristic::PROPERTY_WRITE
                                       );

  pCharacteristic->setCallbacks(new MyCallbacks()); // Set write callback function
  pCharacteristic->setValue(0); // Set initial value

  // demarrer le service BLE
  pService->start();

  // commencer a communiquer par BLE
  BLEAdvertising *pAdvertising = BLEDevice::getAdvertising();
  pAdvertising->addServiceUUID(SERVICE_UUID);
  pAdvertising->setScanResponse(true);
  pAdvertising->setMinPreferred(0x06); 
  BLEDevice::startAdvertising();


  // ecran de demarrage
  display.clearDisplay();
  display.setTextSize(2);
  display.setTextColor(BLACK,WHITE);
  display.setCursor(0, 0);
  display.println("          ");
  display.println("  FLEAUW  ");
  display.println("          ");
  display.println("          ");
  display.display();
  delay(5000);
  display.clearDisplay();

//mesure de la tension et transformation en débit par régression linéaire
  while (0!=1){
  srand(time(NULL));
  int min=20;
  int max= 40;
  int readvalue=analogRead(D0);
  int flow=ord_origine+(((3.3*readvalue)/4095)*16)*coef_dir;
  // Affichage du débit en temps réel
  display.setTextSize(1);
  display.setTextColor(WHITE);
  display.setCursor(0, 0);
  display.println("Debit d'eau:");
    display.println("");
  display.print(flow);
  display.println(" l/min");
  display.println("");
  display.println("");

  display.display();


  //communication du dernier debit en BLE
  BLEDevice::stopAdvertising();
  pCharacteristic->setValue(flow); 
  BLEDevice::startAdvertising();
  delay(1000);
  display.clearDisplay();
  }  
}






void loop() {

}