Go Down

Topic: Affichage de variables sur LCD : besoin d'aide ! [Résolu !!] (Read 2107 times) previous topic - next topic

powpowpeuf

Apr 07, 2013, 06:20 pm Last Edit: Apr 11, 2013, 12:59 am by powpowpeuf Reason: 1
Bonjour à toutes zet à tous !
Je suis ce que l'on peut considérer comme un débutant/néophyte/noob/novice/profane d'Arduino ! Je ne me suis jamais penché sur ce petit machin (il faut bien l'avouer, assez formidable), et je le fais aujourd'hui dans le cadre d'un projet.

Mon problème est le suivant :
Après moult recherches, je ne suis toujours pas parvenu à savoir comment parvenir à afficher une variable sur mon écran LCD. Je suis sur un Arduino Uno, avec un Color LCD Shield 132x132, qui requiert la bibliothèque <ColorLCDShield.h>.
Quelqu'un saurait il-donc comment, à partir d'une variable quelconque, l'afficher sur mon écran ? (Je sais pas si je suis très clair, donc en gros, disons que j'ai Var = X, comment faire pour afficher ce X sur mon écran ?)

Voilà tout,
j'espère être compréhensible et avoir donner les infos nécessaires.

Merci d'avance !
Powpowpeuf

B@tto

Blog électronique : http://battomicro.wordpress.com/
Photographie : www.interactive-celebration.fr

gunsman76

C'est déjà le truc bien compliqué pour débuter...


Tu n'aurais pas été mieux de commencer par un LCD tout simple ?


Enfin c'est juste une idée

powpowpeuf

Merci b@tto, mais je travail déjà beaucoup avec ce tuto, et je n'ai pas su trouvé ma réponse

Gunsman76; Je sais que c'est pas forcément le mieux, mais vaut mieux pas chercher à comprendre, c'est compliqué ^^' et j'ai pas vraiment le temps de changer, la date butoire du rendu de mon projet est proche (sinon c'est pas drôle !)..

Mais merci à tous deux de vos réponses !


Quelqu'un d'autre ?

B@tto

Non mais si tu nous expliquais pourquoi ça marche pas aussi ... Dans la lib y'a une fonction setStr() pour afficher une chaine de caractère. A partir de la je vois pas où est la difficulté !
Blog électronique : http://battomicro.wordpress.com/
Photographie : www.interactive-celebration.fr

powpowpeuf

Je sais bien, mais est-ce que c'est possible d'insérer une variable via cette fonction ? Car je sais qu'elle est censée afficher un texte, mais est-ce qu'elle peut afficher le résultat d'une variable ? Et si oui, comment ? ^^

powpowpeuf

J'ai finalement réussi !!
J'ai donc fait ce petit sketch pour tenter d'expliquer le principe, en essayant d'être le plus clair possible malgré mon incompétence dans le domaine de la programmation !
Quote
/* Ultra-novice de l'arduino, je ne m'y suis mis qu'il y à une semaine de celà.
J'ai été confronter au problème de l'affichage des variables sur mon écran Color LCDShield,
et après des jours de recherches et de tentatives de compréhension, le miracle s'est produit !
J'ai donc voulu réalisé ce croquis simple, permettant l'affichage d'une variable allant de 0
à 999, afin de tenter de vous expliquer (avec mes mots de néophyte) comment faire.
Cette explication se veut absolument sans prétention, et si vous rencontrez un problème,
n'hésitez pas à m'envoyer un message sur le site d'Arduino, ce sera un plaisir d'essayer
d'apporter des réponses à vos questions !
Bon code !!

Sketch by Powpowpeuf*/




#include <ColorLCDShield.h>    //On inclut la bibliothèque spécifique au Color LCDShield

LCDShield lcd;

int x;    /*On déclare la variable que
          l'on souhaite afficher au final */


void setup ()
{
 lcd.init (PHILIPS);    // La routine habituelle  
 lcd.contrast (-51);    // pour initialiser le
 lcd.clear(WHITE);      // shield
 
 int AffichageVariable(x);  /*On déclare la fonction qui va nous
                            permettre d'afficher la variable x */
}

void loop ()
{
  x+=1;         //On joue sur notre variable x pour quand
  delay(100);   //même avoir quelque chose à voir. En l'occurence,
                //on l'incrémente de 1 toutes les 0,1 seconde.
 
 
  AffichageVariable(x);  //Notre variable ayant été modifié,
                         //on réaffiche sa nouvelle valeur
}



void AffichageVariable(int x)   //Et on attaque la fonction d'affichage de x !
{
/* xChar sera la ligne (String) affichée.
Entre crochet, on met le nombre de composants
qu'elle contient; 3x (un x pour les unités,
un pour les dizaines et un pour les centaines);
une sorte "d'adptateur" au langage ASCII, que l'on
complètera un peu plus loin; et deux espaces après
nos x, pour éviter que des symboles bizarres
apparaissent (les espaces ne sont pas inscrits dans
la déclaration de xChar)*/
 
 char xChar[6] = {                    
   'x', 'x', 'x', 0x0A    };

/*Maintenant qu'on a notre string, il faut adapter
notre valeur x, car le langage ASCII ne connait que
les unités; ainsi, pour afficher 152, il nous faut
décomposer notre string en trois unités, grâce aux
formules qui suivent (lors d'une opération arithmétique,
la valeur obtenue est l'entier du résultat de cette
opération, car le type de notre valeur ne permet pas
les virgules.
Ici xChar[0] correspond au centaine, xChar[1] aux dizaines
et xChar[2} aux unités (les chiffres entre crochet déterminent
leur position dans la string et donc dans l'affichage).
D'après les calculs, on obtient :
xChar[0]= 152 / 100 = 1,52 = 1;
xChar[1]=(152 - (1*100))/10 = 52 / 10 = 5,2 = 5;
xChar[2]=152 - 100 - 50 = 2.
On obtient bien 152 !*/
 
 xChar[0] = x/100;
 xChar[1] = (x - (xChar[0]*100))/10;
 xChar[2] = x - (xChar[0]*100) - (xChar[1]*10);

/* Pour que les chiffres indiqués dans la string restent
des chiffres après avoir été encodés selon le langage ASCII,
il faut 0x3A. Le string comporte déjà, 0x0A, il ne reste plus
qu'à appliquer à xChar[0], xChar[1] et xChar[2], 0x30. Ainsi,
on obtient 0x3A.*/

 for (int i=0; i<3; i++)
   xChar += 0x30;
   
 xChar[3] = ' ';     //On n'oublie pas les espaces, qu'il faut placer
 xChar[4] = ' ';     //directement après le dernier xChar[].
 
 
 lcd.setStr(xChar, 66, 66, BLACK, WHITE);  // Et on affiche le tout !!
                                           // Ici, x apparaitra au milieu de l'écran.
}



gunsman76

On ne peut que te féliciter !

Bravo pour ton partage, je pense que ça servira à d'autres personnes  :)

lacolombenoir

Bon sujet et heureux de voir que tu a trouvé la solution et que tu la partage avec toutes la communauté :smiley-surprise:,
j'espère que tu montrera le rendu final de ton projet dire de voir l'aboutissement final de se topic.
www.hatokuro.comuf.com site consacrer au rétrogaming

peuch88

#9
Apr 12, 2013, 06:53 am Last Edit: Apr 12, 2013, 06:35 pm by peuch88 Reason: 1
pour avoir eu un problème a peut prêt similaire, pour convertir une variable en string on peut utiliser la fonction "sprintf"

solution donné par  skywodd  sur un de mes post http://arduino.cc/forum/index.php/topic,159201.0.html

voir aussi ce topic
http://arduino.cc/forum/index.php/topic,33093.0.html

cette fonction n'est pas implémentée dans le manuel de réference Arduino car s'est du C++
ça réduira considérablement la taille de ton code  






Go Up