lcd I2C

Je fais appel à vos lumières car mon écran LCD_I2C me fait des misères :
Le montage est bon : gnd sur gnd, VCC sur 5V, SDA sur A4 et SCL sur A5 (arduino uno)
L’écran s’allume, mais rien ne s’affiche. J’ai essayé de régler le contraste, mais seulement les carrés de la ligne du haut s’affichent.
J’ai essayé les exemples comme “Hello World” et autres, mais c’est le même résultat.
Je ne sais plus quoi essayer et je me dis que l’écran a peut-être un défaut.

Je vous soumet mon code (il s’agit de contrôler la température d’un aquarium) et je voudrais que la température s’affiche sur l’écran :

#include <OneWire.h>
#include <DallasTemperature.h>
#include <LiquidCrystal_I2C.h>

#define temp_sensor A0
float temperature =0;
int tempMini = 23;
int tempMax = 26;
int relais = 2;

OneWire oneWirePin (temp_sensor);

DallasTemperature sensors(&oneWirePin);

LiquidCrystal_I2C lcd (0x3F, 16,2);

void setup()
{
  Serial.begin (9600);
  Serial.println ("c'est parti !");
  delay (3000);

  pinMode (relais, OUTPUT);
  
  sensors.begin ();

  lcd.begin (16,2);

  }

void loop()
{
  sensors.requestTemperatures ();
  Serial.println ();
  
  temperature = sensors.getTempCByIndex(0);

  digitalWrite (relais, LOW);
 
  Serial.print ("Température de ");
  Serial.println (temperature);


  if (temperature <= tempMini) {
    Serial.println("TROP FROID");
    digitalWrite(relais, HIGH);     
  }
   

  else if ((temperature < tempMax)&&(temperature > tempMini)){
   Serial.println("En chauffe");
   digitalWrite(relais, HIGH);    
 }
  
  else if (temperature >= tempMax) {
    Serial.println("Température max atteinte = chauffage arrêté");
    digitalWrite(relais, LOW);
    
  }

  lcd.setCursor (0,0);
  lcd.print ("Température : ");
  lcd.print (temperature);
  lcd.print ("°C");

  delay(3000);

}

Voilà, j’espère que quelqu’un pourra m’aider. Merci !

Quelle librairie lcd?
Quel écran ?

Faites tourner un scanner I2C pour vous assurer que son adresse est bien 0x3F

la librairie "one wire" peut elle remplacer la bibliotéque " wire" tout court ?

Salut

Certains afficheurs ont une adresse différente, 0x27 par exemple.

Commence par ceci : scanner I2C

@+

a librairie "one wire" peut elle remplacer la bibliotéque " wire" tout court ?

Non :
Wire -> bus I2C
One Wire -> bus One Wire

Bonjour,

Si le scan I2C trouve le module, il y a probablement une panne matérielle et c'est "poubelle".

J'ai eu ce cas il y a quelques semaines, un LCD sur deux défectueux.

bonjour David,
ma question initiale n’était pas innocente ,( aILfch merci ):
dans le début de votre code il n’y a pas :

#include <Wire.h>

qui n’est pas la même chose que

#include <OneWire.h>

c 'est peut être un simple oubli , comme une évidence
mais cela reste une cause de de dis-fonctionnement.

#include <LiquidCrystal_I2C.h>

seule n’est pas suffisante pour faire fonctionner l’ afficheur i2c

ps: cela ne veut pas dire que qu’ avec n 'importe quelle librairie et n’importe qu 'elle adresse i2c c’est fonctionnel

il existe plusieurs biblios nommées <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd (0x3F, 16,2);

lcd.begin (16,2);

pas logique
c’est soit
LiquidCrystal_I2C lcd (0x3F, 16,2);

lcd.begin ();

soit :

LiquidCrystal_I2C lcd (0x3F);

lcd.begin (16,2);

sans oublier la bonne adresse i2c et le #include <Wire.h>

Tout dépend de la librairie utilisée :
La méthode begin de CELLE-CI n'a pas d'arguments.

Avant tout répondre aux question :

Quelle librairie lcd?
Quel écran ?

@+

et quelle adresse i2c ?

L’OP est sans doute parti à la pêche ...

Il aurait aussi très bien pu commencer par là:
un tuto