Bonjour à tous,
Je voudrais afficher la valeur d'une variable sur un afficheur LCD 2004.
Ma variable est positive et va au maximum jusqu'a 999 et je voudrais l'afficher sur deux rangées de l'afficheur.
Voici l'idée de depart de mon projet:
http://forum.semageek.com/viewtopic.php?id=967
J'ai essayé d'isoler au maximum la partie du code qui m'intéresse.
Il y a quelques sujet sur ces caractères à deux rangées mais tous en anglais.
N'étant pas expert dans le codage, je souhaite éviter la gestion d'une bibliothèque, ou alors une sûre, car j'ai deja fais des essais non concluants avec des "**BigFont".
Voici mon code :
byte mavar= 125;
#include <LiquidCrystal.h>
LiquidCrystal lcd(11,12,5,4,3,2); // Initialisation de la librairie Liquid Crystal
// gestion gros charactère
byte degre[8] = { B01000, B10100, B01000, B00111, B01000, B01000, B01000, B00111}; // °C
byte endJauge[8] = { B11111, B00001, B00001, B00001, B00001, B00001, B00001, B11111 }; // ]
byte startJauge[8] = { B11111, B10000, B10000, B10000, B10000, B10000, B10000, B11111 }; // [
byte fullJauge[8] = { B11111, B11111, B11111, B11111, B11111, B11111, B11111, B11111 }; // carré plein
byte emptyJauge[8] = { B11111, B00000, B00000, B00000, B00000, B00000, B00000, B11111 }; // carré vide
byte haut[8] = { B11111, B11111, B00000, B00000, B00000, B00000, B00000, B00000 }; // trait en haut
byte bass[8] = { B00000, B00000, B00000, B00000, B00000, B00000, B11111, B11111 }; // trait en bas
byte lesDeux[8] = { B11111, B11111, B00000, B00000, B00000, B00000, B11111, B11111 }; // les deux
void bigFontBegin(){
lcd.createChar(0, degre);
lcd.createChar(1, startJauge);
lcd.createChar(2, endJauge);
lcd.createChar(3, fullJauge);
lcd.createChar(4, emptyJauge);
lcd.createChar(5, haut);
lcd.createChar(6, bass);
lcd.createChar(7, lesDeux);
}
void unHaut(){
lcd.write(byte(5));
lcd.write(byte(3));
lcd.print(" ");
}
void unBas(){
lcd.write(byte(6));
lcd.write(byte(3));
lcd.write(byte(6));
}
void deuxHaut(){
lcd.write(byte(7));
lcd.write(byte(7));
lcd.write(byte(3));
}
void deuxBas(){
lcd.write(byte(3));
lcd.write(byte(6));
lcd.write(byte(6));
}
void troisHaut(){
lcd.write(byte(5));
lcd.write(byte(7));
lcd.write(byte(3));
}
void troisBas(){
lcd.write(byte(6));
lcd.write(byte(6));
lcd.write(byte(3));
}
void quatreHaut(){
lcd.write(byte(3));
lcd.write(byte(6));
lcd.write(byte(3));
}
void quatreBas(){
lcd.print(" ");
lcd.print(" ");
lcd.write(byte(3));
}
void cinqHaut(){
lcd.write(byte(3));
lcd.write(byte(7));
lcd.write(byte(7));
}
void cinqBas(){
lcd.write(byte(6));
lcd.write(byte(6));
lcd.write(byte(3));
}
void sixHaut(){
lcd.write(byte(3));
lcd.write(byte(7));
lcd.write(byte(7));
}
void sixBas(){
lcd.write(byte(3));
lcd.write(byte(6));
lcd.write(byte(3));
}
void septHaut(){
lcd.write(byte(5));
lcd.write(byte(5));
lcd.write(byte(3));
}
void septBas(){
lcd.print(" ");
lcd.print(" ");
lcd.write(byte(3));
}
void huitHaut(){
lcd.write(byte(3));
lcd.write(byte(7));
lcd.write(byte(3));
}
void huitBas(){
lcd.write(byte(3));
lcd.write(byte(6));
lcd.write(byte(3));
}
void neufHaut(){
lcd.write(byte(3));
lcd.write(byte(7));
lcd.write(byte(3));
}
void neufBas(){
lcd.write(byte(6));
lcd.write(byte(6));
lcd.write(byte(3));
}
void zeroHaut(){
lcd.write(byte(3));
lcd.write(byte(5));
lcd.write(byte(3));
}
void zeroBas(){
lcd.write(byte(3));
lcd.write(byte(6));
lcd.write(byte(3));
}
void setup()
{
lcd.begin(20, 4);
lcd.clear();
bigFontBegin();
}
void loop() {
byte a = mavar/100;
byte b = (mavar/10)-(a*10);
byte c = mavar-(a*100)-(b*10);
lcd.setCursor(0, 1);
switch (a) {
case 0 :
lcd.print(" "); break;
case 1 :
unHaut(); break;
case 2 :
deuxHaut(); break;
case 3 :
troisHaut(); break;
case 4 :
quatreHaut(); break;
case 5 :
cinqHaut(); break;
case 6 :
sixHaut(); break;
case 7 :
septHaut(); break;
case 8 :
huitHaut(); break;
case 9 :
neufHaut(); break;
}
lcd.print(" ");
switch (b) {
case 0 :
zeroHaut(); break;
case 1 :
unHaut(); break;
case 2 :
deuxHaut(); break;
case 3 :
troisHaut(); break;
case 4 :
quatreHaut(); break;
case 5 :
cinqHaut(); break;
case 6 :
sixHaut(); break;
case 7 :
septHaut(); break;
case 8 :
huitHaut(); break;
case 9 :
neufHaut(); break;
}
lcd.print(" ");
switch (c) {
case 0 :
zeroHaut(); break;
case 1 :
unHaut(); break;
case 2 :
deuxHaut(); break;
case 3 :
troisHaut(); break;
case 4 :
quatreHaut(); break;
case 5 :
cinqHaut(); break;
case 6 :
sixHaut(); break;
case 7 :
septHaut(); break;
case 8 :
huitHaut(); break;
case 9 :
neufHaut(); break;
}
//lcd.setCursor(0, 2);
switch (a) {
case 0 :
lcd.print(" "); break;
case 1 :
unBas(); break;
case 2 :
deuxBas(); break;
case 3 :
troisBas(); break;
case 4 :
quatreBas(); break;
case 5 :
cinqBas(); break;
case 6 :
sixBas(); break;
case 7 :
septBas(); break;
case 8 :
huitBas(); break;
case 9 :
neufBas(); break;
}
lcd.print(" ");
switch (b) {
case 0 :
zeroBas(); break;
case 1 :
unBas(); break;
case 2 :
deuxBas(); break;
case 3 :
troisBas(); break;
case 4 :
quatreBas(); break;
case 5 :
cinqBas(); break;
case 6 :
sixBas(); break;
case 7 :
septBas(); break;
case 8 :
huitBas(); break;
case 9 :
neufBas(); break;
}
lcd.print(" ");
switch (c) {
case 0 :
zeroBas(); break;
case 1 :
unBas(); break;
case 2 :
deuxBas(); break;
case 3 :
troisBas(); break;
case 4 :
quatreBas(); break;
case 5 :
cinqBas(); break;
case 6 :
sixBas(); break;
case 7 :
septBas(); break;
case 8 :
huitBas(); break;
case 9 :
neufBas(); break;
}
}
Le debogage ne remonte pas d'erreur, mais impossible d'afficher ce fameux 125.
Si quelqu'un pouvait m'éclairer un peu sur ce qui ne va pas dans le sketch, ce serait vraiment cool