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 ---
- 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 ---
Modérateur : Jérémy
LDC 2x16 : Comment afficher une valeurs issue d'un capteur?
- Subzero64170
Débutant- Messages : 51
- Âge : 37
- Enregistré en : octobre 2015
- Localisation : PAU
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
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
LDC 2x16 : Comment afficher une valeurs issue d'un capteur?
- paulfjujo
Expert- Messages : 2597
- Âge : 73
- Enregistré en : juillet 2015
- Localisation : 01800
- Contact :
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 ...
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"
Aller, un peu de travail personnel ... et tu avanceras.
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 ...
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.
LDC 2x16 : Comment afficher une valeurs issue d'un capteur?
-
Jérémy
Administrateur du site- Messages : 2725
- Âge : 45
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
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
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
LDC 2x16 : Comment afficher une valeurs issue d'un capteur?
- Subzero64170
Débutant- Messages : 51
- Âge : 37
- Enregistré en : octobre 2015
- Localisation : PAU
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!!
Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 47 invités