Passage code LCD vers code LCD avec I2C

Bonjour à tous, je suis nouveau sur le forum donc veuillez m’excuser si je fais quelque chose de travers. :open_mouth:

Voilà j’explique mon soucis, j’ai créé un programme pour mon projet (explication rapide au début du code) en utilisant les bornes du LCD standard. Or, lors de la réception de mon LCD, il est soudé à un I2C.

J’aimerai savoir ce qu’il y a à modifier dans mon programme pour qu’il marche.
Je me suis renseigné sur le fonctionnement avec la librairie #include <LiquidCrystal_I2C.h> mais je ne suis pas sûr de moi.

Voici la première partie de mon code :
(Les premières lignes sont les plus importantes, le reste n’est que pour comprendre le système)

// Ce Programme permet de relever les informations d'un capteur effet Hall,
// Calculer différentes informations, les lire sur un écran LCD, et faire tourner le ventilateur selon la vitesse de pédalage
// Il rajoute aussi un petit "smiley" d'une batterie se chargeant





#include "LiquidCrystal.h"
LiquidCrystal lcd(11,10,9,8,7,6,5,4,13,12);
#include <AFMotor.h>

int hall=2;
int duree;
int temps;
int compteur;
int vitesse;
float calorie;
int production;
float distance;


AF_DCMotor moteur1(1);

byte batterievide[8] = {
    B01110,
    B10001,
    B10001,
    B10001,
    B10001,
    B10001,
    B11111,
};

byte batteriequasivide[8] = {
    B01110,
    B10001,
    B10001,
    B10001,
    B11111,
    B11111,
    B11111,
};

byte batteriemoyenne[8] = {
    B01110,
    B10001,
    B10001,
    B11111,
    B11111,
    B11111,
    B11111,
};

byte batteriepleine[8] = {
    B01110,
    B11111,
    B11111,
    B11111,
    B11111,
    B11111,
    B11111,
};









void ventilator() {                       // différentes vitesses du ventilateur selon la vitesse du pédalage

  if (vitesse <= 0)
  {
   moteur1.run(RELEASE);
  }
  else if (10<vitesse<=20)
  {
   moteur1.run(FORWARD);
   moteur1.setSpeed(51); 
  }
  else if (20<vitesse<=30)
  {
   moteur1.run(FORWARD);
   moteur1.setSpeed(102);
  }
  else if (30<vitesse<=40)
  {
   moteur1.run(FORWARD);
   moteur1.setSpeed(153);
  }
  else if (40<vitesse<=50)
  {
    moteur1.run(FORWARD);
   moteur1.setSpeed(204);
  }
  else
  {
    moteur1.run(FORWARD);
   moteur1.setSpeed(255);
  }
}






void calcul() {

   if (compteur < 10)
   
   {
   compteur++;
   }
   
   else
   
   {
    duree=millis()-temps;
    temps=millis();
    delay(100);
    compteur=0;
   }

}




void setup()
{

  moteur1.run(RELEASE);
  
  lcd.begin(20,4);
  Serial.begin(9600);

  lcd.setCursor(0, 1);
  lcd.print(distance,3);
  lcd.setCursor(7, 1);
  lcd.print("km");  

  
  attachInterrupt(hall,calcul,FALLING);
}




void loop()
{  
   
   vitesse=(2*3.1415926*0.33*(10*1000/(duree)*3.6));
   production=(0.3*(vitesse/3.6)*(vitesse/3.6)*(vitesse/3.6));
   calorie=(production/4.185/1000)+calorie;
   distance=(vitesse/3.6/1000)+distance;
   
   lcd.createChar(0, batterievide);
   lcd.begin(20, 4);
   
   lcd.home();
   lcd.print("Distance Parcouru = ");
   lcd.setCursor(0, 1);
   lcd.print(distance,3);
   lcd.setCursor(7, 1);
   lcd.print("km");                                 
   
   lcd.setCursor(0, 2);                                         // 1
   lcd.print("vitesse = ");
   lcd.setCursor(0, 3);
   lcd.print(vitesse);     
   lcd.setCursor(7, 3);
   lcd.print("km/h");        

   lcd.setCursor(19, 3);
   lcd.write((uint8_t) 0); 
   delay(1000);

bonjour,
tu utilise la lib LiquidCrystal_I2C.h et ca devrait rouler en déclarant l’adresse i2c

par contre un lcd.begin dans le loop c’est pas top :wink:

infobarquee:
bonjour,
tu utilise la lib LiquidCrystal_I2C.h et ca devrait rouler en déclarant l'adresse i2c

par contre un lcd.begin dans le loop c'est pas top :wink:

Oups merci pour la maladresse, donc l'adresse I2C je l'a connais grâce à I2C scanner ou je peux utiliser directement 0x3F (je suis LCD 20x4)