Niveau cuve capteur Ultrason { RESOLU }

Bonjour,

J’essaye de mettre en place un système pour le relevé de niveau de ma cuve eau de pluie avec un arduino uno ,un afficheur lcd et un capteur ultrasons JSN-SR04T-2.0 .
L’objectif étant de mesurer la hauteur de liquide et d’imprimer cette mesure sur la première ligne de l’afficheur et de convertir cette mesure en taux de remplissage imprimésur la seconde ligne de l’afficheur.
Vu les limites de mesures du capteur ,j’ai considéré une zone morte de 20cm entre le capteur et le niveau maxi de l’eau.

Dans mon cas mesure US de 170Cm sera égale à 0% cuve vide
mesure US de 20 Cm sera égale à 100% cuve pleine.

J’ai consulté de nombreux post et testé de multiples solutions mais je ne vois pas comment coder correctement pour obtenir une mesure en % correcte.
Pourriez-vous m’aiguiller pour résoudre ce problème,en Pj un schéma de ma cuve.

Merci d’avance pour vos réponses

#include <LiquidCrystal.h> // includes the LiquidCrystal Library

LiquidCrystal lcd(1, 2, 4, 5, 6, 7); // Creates an LCD object. Parameters: (rs, enable, d4, d5, d6, d7)

const int trigPin = 9;
const int echoPin = 10;

long duree;
int distanceCm;
byte hniveaumaxi=20;
byte hniveaumini=170;
float pourcent;

void setup() {
lcd.begin(16,2); // Initializes the interface to the LCD screen, and specifies the dimensions (width and height) of the display

pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
}

void loop() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);

digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);

duree= pulseIn(echoPin, HIGH);
distanceCm= duree*0.035/2;
pourcent= (distanceCm*100-hniveaumaxi)/hniveaumini;

lcd.setCursor(0,0); 
lcd.print("Distance: "); 
lcd.print(distanceCm); 
lcd.print("cm");
delay(10);
lcd.setCursor(0,1);
lcd.print("Niveau ");
lcd.print(pourcent);
lcd.print("%");
delay(10);
}

On peut utiliser map()

Ok , merci hbachetti

Je n'ai jamais trop utilisé cette fonction je test dans la foulée.

Ok testé ça fonctionne ,merci pour votre aide