Pages: [1]   Go Down
Author Topic: Affichage de variables sur LCD : besoin d'aide ! [Résolu !!]  (Read 1277 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 6
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
« Last Edit: April 10, 2013, 05:59:29 pm by powpowpeuf » Logged

Ales
Offline Offline
Faraday Member
**
Karma: 29
Posts: 3197
Do or DIY
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

https://www.sparkfun.com/tutorials/286 ?
Logged


Offline Offline
Sr. Member
****
Karma: 0
Posts: 345
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 6
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 ?
Logged

Ales
Offline Offline
Faraday Member
**
Karma: 29
Posts: 3197
Do or DIY
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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é !
Logged


Offline Offline
Newbie
*
Karma: 0
Posts: 6
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 ? ^^
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 6
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
}



* Explication_AffichageVariable.ino (3.53 KB - downloaded 15 times.)
* Affichage_Variable.ino (0.56 KB - downloaded 17 times.)
Logged

Offline Offline
Sr. Member
****
Karma: 0
Posts: 345
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

On ne peut que te féliciter !

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

Offline Offline
Full Member
***
Karma: 0
Posts: 110
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

www.hatokuro.comuf.com site consacrer au rétrogaming

Offline Offline
Jr. Member
**
Karma: 0
Posts: 91
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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  



 

« Last Edit: April 12, 2013, 11:35:18 am by peuch88 » Logged

Pages: [1]   Go Up
Jump to: