Bienvenue aux nouveaux arrivants sur FantasPic !

- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.

--- L’équipe FantasPic ---
Forum général sur le langage C !

Modérateur : Jérémy

LDC 2x16 : Comment afficher une valeurs issue d'un capteur?
Subzero64170
Avatar de l’utilisateur
Débutant
Débutant
Messages : 51
Âge : 37
Enregistré en : octobre 2015
Localisation : PAU

#1 Message par Subzero64170 » sam. 11 juin 2016 11:56

Bonjour tous le monde!
Materiel : pic16f877a
Compilateur : Mikroc
Liaison classique entre le pic et le LCD: Données (bit D0 à D7) RS, R/W,E
J'aimerai avoir quelques explications sur l'affichage de variables "x" "temperature" "distance" sur un afficheur LCD. En effet, l'exemple fournit par MikroC permet d'afficher un texte classique du style :
text1=hello
la commande lcd_out permet d'afficher ce teste facilement.

Or ça devient vite compliqué lorsque l'on veut afficher le resultat d'une variable à l'ecran du style : "temperature" "distance" etc...
J'ai vu sur plusieurs sites qu'il faut convertir la variable "distance" ou "temperature" pour qu'elle puisse être affichée.

Est ce que quelqu'un peut expliquer cela en detail :
Comment convertir une variable "distance" pour qu'elle puisse etre affichée?
Que fait la commande LCD_OUT pour pouvoir afficher un texte concrètement? (comme cela j'imagine "hello" prend "h" convertit puis affiche puis "e" convertit et affiche puis...)
Comment fait on le lien entre une variable "distance" ou une chaine de caractères "hello" et la table de caractères de l'afficheur...sous mikroc
“L'imagination est plus importante que le savoir.” A.Einstein

LDC 2x16 : Comment afficher une valeurs issue d'un capteur?
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 2597
Âge : 73
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#2 Message par paulfjujo » sam. 11 juin 2016 18:50

bonjour,


une variable contient ce qu'on lui met dedans
et depend de la plage de valeur pour en definir le type
exemple
0 à 255°C => variable de type unsigned char
-128 à + 127°C => variable de type signed char
0 à 65535 mm => variable de type unsigned int
0 à 4294967295 => variable de type unsigned long
ou -2147483648 à 2147483647 de type signed long
plus difficile à manipuler:
37.23°C => variable de type float ( avec decimales) .. mais à eviter si possibble
en utilisant un unsigned int ex: 3723 et position du point decimal au bon endroit
.. à suivre
.. etc ...

Attention!! voir les bases du numerique !

pour afficher cette variable sur le LCD , il faut la convertir en chaine de caractere (caracteres ascii lisible!)
pour un LCD en mode texte, la table de caractere est interne au LCD, on ne s'en preocupe pas.
ce n'est pas le cas pour des LCD Grafiques.. il faut "dessiner" chaque lettre ou chiffre.

voir la librairie "Conversion" et "string"

Code : Tout sélectionner


unsigned char Temperature
;
unsigned int Distance;    
char 
* txt;    // pointeur sur charactere
char TEXTE[17]; // table contenant du texte
txt=&TEXTE[0];  // initialise pointeur sur debut de texte
Temperature=37; 
ByteToStr
(Temperature ,txt); 
LCD_OUT
(1,1;"Temperature=   "); 
LCD_OUT
(1,14,txt);
Distance=25000;
WordToStr(Distance ,txt); 
LCD_OUT
(2,1;"Distanc=        "); 
LCD_OUT
(2,10,txt);


Aller, un peu de travail personnel ... et tu avanceras.
Aide toi, le ciel ou FantasPic t'aidera

LDC 2x16 : Comment afficher une valeurs issue d'un capteur?
Jérémy
Administrateur du site
Administrateur du site
Messages : 2725
Âge : 45
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#3 Message par Jérémy » sam. 11 juin 2016 19:09

Salut Subzero64170,

Je ne suis pas un expert mais je peux essayer de t'apporter un début de réponse , qu'un expert sera sans doute compléter voir corriger .

Comme tu la dit, la fonction LCD_OUT , récupère un caractère dans une chaine de caractères et l'affiche .
Une chaine de caractère est un tableau contenant des caractères et se terminant pour un caractères dit "NULL" ou "/0" ou "terminateur de string". Un caractère se compose de la table ASCII , comprenant 0 à 255 caractères (ou presque).

Donc si tu veux afficher par exemple le nombre "123" il faut le décomposer en trois chiffres "1" puis "2" et enfin "3" pour que chaque chiffre rentre dans une case d'un tableau ( chaine de caractère). Sinon le logiciel va afficher le caractère numéro 123 de la table ACSSI;

Dans MikroC, tu peux ouvrir la table de caractère ASCII dans le menu "outils" et "ASCII char" . Tu verra que le caractère 123 correspond au symbol "{" .

Donc pour afficher une variable il va falloir la décomposer . On utilise la fonction IntToStr , pour integer To String . Cela va donc convertir un nombre entier de type Int en une chaine de caractère , affichable par ton LCD.

L'exemple de MikroC sur ce sujet et assez explicite et m'évitera de dire des bêtises. Tape "conversions librairy" dans l'aide .

j’espère avoir pu t'éclaircir un peu

EDIT: grillé par PAul
C'est en faisant des erreurs, que l'on apprend le mieux !!!

LDC 2x16 : Comment afficher une valeurs issue d'un capteur?
Subzero64170
Avatar de l’utilisateur
Débutant
Débutant
Messages : 51
Âge : 37
Enregistré en : octobre 2015
Localisation : PAU

#4 Message par Subzero64170 » mar. 14 juin 2016 18:54

Merci pour ces precieux conseils, les fonctions conversions sont trés pratique ça evite de se creer une fonction qui convertit un a un les valeurs en ascii pour pouvoir les afficher sur le lcd 2 lignes.J'utilise simplement floatostring et lcdout et j'afiche n'importe quelle valeur issue d'un capteur!!
“L'imagination est plus importante que le savoir.” A.Einstein


Retourner vers « Langage C »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 47 invités