createchar() bug

Bonjour,

J'utilise actuellement un arduino nano avec un lcd 4x20. Dans mon programme, j'utilise createchar

#include <LiquidCrystal.h>
LiquidCrystal lcd(1, 0, 6,7, 3, 9);

byte vide[8]={
  B00000,
  B00000,
  B00000,
  B10101,
  B10101,
  B00000,
  B00000,
  B00000
};

byte gauche[8]={
  B10000,
  B10000,
  B10000,
  B10101,
  B10101,
  B10000,
  B10000,
  B10000
};

byte milieu[8]={
  B00100,
  B00100,
  B00100,
  B10101,
  B10101,
  B00100,
  B00100,
  B00100
};

byte droite[8]={
  B00001,
  B00001,
  B00001,
  B10101,
  B10101,
  B00001,
  B00001,
  B00001
};

byte signal[8]={
  B00001,
  B00001,
  B00101,
  B10101,
  B10101,
  B00101,
  B00001,
  B00001
};
byte signalHS[8]={
  B00000,
  B00000,
  B00000,
  B10000,
  B10000,
  B00000,
  B00000,
  B00000
};
void setup()
{
lcd.createChar(1, vide);
  lcd.createChar(2, gauche);
  lcd.createChar(3, milieu); 
  lcd.createChar(4, droite);
  lcd.createChar(5, signal);
  lcd.createChar(6, signalHS);
  lcd.begin(20, 4);
}
void loop()
{
    lcd.write (char((uint8_t)0));
    lcd.write (char((uint8_t)1));
    lcd.write (char((uint8_t)2));
    lcd.write (char((uint8_t)3));
    lcd.write (char((uint8_t)4));

delay (200);
lcd.clear();
}

Seulement lorsque je compile, mon affichage est comme demandé, mais si je déconnecte l'alimentation et je remet, les caractères sont bien différent.

Avez vous une idée sur le problème ?

Bonsoir, essayes de mettre un lcd.clear() à la fin de setup()

Merci pour ta réponse mais je viens d'essayer et cela ne fonctionne pas.
C'est bizarre car après plusieurs test, les bons caractères sont présent 1 fois sur 2 après le chargement du code.
J'utilise les bornes 0 et 1 de l arduino pour l'afficheur c'est pas genant ? j'utilise pas serial.begin

Peut-être faut-il mettre lcd.begin avant les lcd.createChar ?

bonjour,
+1

#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

byte smiley[8] = {
  B00000,
  B10001,
  B00000,
  B00000,
  B10001,
  B01110,
  B00000,
};

void setup() {
  lcd.createChar(0, smiley);
  lcd.begin(40x20);  
  lcd.write(byte(0));
}

void loop() {}

Bonjour,

Pourquoi tu crées les caractères 1 2 3 4 5 6 et tu affiches les caractères 0 1 2 3 4 ?