tutorial LCD

Transcription

tutorial LCD
Création d’une multi radio générique
Chapitre 1
Nous allons lors de ces tutoriels, créer une multi radio générique en passant par toutes les étapes
CAD fabrication physique et programmation. Lors de ces programmations, nous ferons différents
exercices pour vous aider à comprendre un peu mieux le langage SIOC et plus particulièrement
l’utilisation des LCD.
Matériel nécessaire pour ces tutoriels:
1 IOCARD MASTER CARD
1 IOCARD USB EXPENSION
1 IOCARD USB-LCD
1 écran LCD (rétro éclairé ou non)
1 potentiomètre 10k
1 potentiomètre 100K (si écran rétro éclairé)
5 boutons OFF ON OFF
Sommaire :
1 - Montage de l’écran LCD
1.1
1.2
1.3
1.4
Configuration carte USB-LCD
Schémas de montage de l’écran et soudure
Programme LCD et test
Programmation
1.1 Configuration carte USB-LCD
Pour tester le bon fonctionnement de votre carte USB-LCD de simple test sont à faire. Le premier est
simplement de connecter votre carte à votre ordinateur via le câble USB et de vérifier que votre
ordinateur détecte bien votre carte (plug & play).
La seconde, et de lancer le logiciel USB-LCD que vous pouvez trouver directement à cette adresse :
http://www.opencockpits.com/modules.php?name=Downloads&d_op=getit&lid=275 ou sur le site
d’Opencockpit.
Après avoir dézzipé l’archive, vous trouverez dans le répertoire l’application IOLCD.exe.
Après exécution de IOLCD vous devriez voir ceci :
Explication :
Host : nom du pc ou est lancé l’application
Port : n° de port
Status : vous indique si IOLCD parle bien ou non avec SIOC (pour que le statut passe en ONLINE il
faudra lancer SIOC)
USB : c’est pour l’instant la partie qui nous intéresse le plus. Vous devriez voir USB RUNNING qui
signale que la USB-LCD est bien connectée au PC et qu’elle est bien reconnue.
Device : C’est le n° du port USB sur lequel est connecté votre USB-LCD (peut être différent chez vous)
Si tout ceci est OK alors nous pouvons passer à la suite.
1.2 Schémas de montage de l’écran et soudure
Pour cette partie vous avez besoin de :
1 fer à souder
Fil à souder
1 écran LCD 2 x 16 (ou autre)
1 potentiomètre 10k
1 potentiomètre 100k
Câble
Connectique male HE10
Schémas :
Explication du schéma :
Je ne vais pas entrer dans la description de tous les fils mais uniquement les plus importants.
Sur le schéma, vous pouvez voir que nous utilisons seulement 12 fils en sortie de la broche et tant
mieux car nous aurons déjà bien du mal à les souder alors imaginez si nous devions souder les 40.
Le schéma ci-dessus fonctionne avec un code couleur afin de faciliter sa lecture
La lecture des numéros de pin ce fait de gauche à droite et de bas en haut. Ce qui fait que le n°3 ce
trouve au-dessus du n°1 , le n°5 au-dessus du n°3 et ainsi de suite.
Les plus importants :
9 et 10 : alimentation en 5V de l’écran (10 = 5v / 9 = masse)
27 à 30 : identification de l’écran (4 pour nos 4 écrans possible) Display 0 = 29 - Display 1 = 30 –
Display 2 = 27 – display 3 = 28
L’écran LCD
Bien que nous ayons 12 fils en sortie, nous voyons que sur l’écran LCD nous avons 16 entrées. Ne
vous inquiétez pas c’est normal. Nous avons en entrée 5 la masse du potentiomètre du contraste et
le pontage du 5V de l’entrée 1 à l’entrée 5 – Les entrées 15 et 16 si votre écran est rétro éclairé.
Pour un écran non rétro éclairé, les entrées 15 et 16 de l’écran ne sont pas utilisées et nous n’avons pas besoin
non plus du potentiomètre 100k pour le retro. Vous ne devez pas non plus ponter les entrées 2 à 15
Il ne vous reste plus qu’à suivre le schéma pour souder tout ça.
CONSEIL : Si vous n’êtes pas à l’aise avec la soudure, je vous conseille vivement de vous entrainer
avant car les soudures sur l’écran sont très proche les unes des autres et un débordement pourrais
être fatale.
ASTUCE : Pour une soudure facile, dénudez vos fils le plus petit possible. Ceci vous facilitera la
soudure et évitera que le fils trop dénudé aille faire contact avec un autre.
ASTUCE : Etamer vos fils avant de les souder sur l’écran
ASTUCE : Si vous n’avez pas de connecteur male, vous pouvez utiliser une connectique male d’une
vielle carte mère ou autre (cdrom HDD,…) et souder directement derrière celle-ci
(METTRE PHOTO CONNECTIQUE CARTE MERE)
1.3 Programme LCD et test
Maintenant que notre écran est soudé et connecté à notre USB-LCD il est temps de vérifier si nous
avons bien travaillé.
Le premier test visible, est lors ce que nous actionnons les potentiomètres (si nous augmentons le
contraste nous devrions voir apparaitre les rectangles de caractère noircir. Si c’est le cas s’est déjà
bon signe. Dans le cas inverse, vérifier bien toute vos soudures et qu’aucun contact ne ce fasses
entre deux.)
Nous allons maintenant ouvrir le second soft de notre archive qui se nomme IOLCD_CONFIG.exe
Explication :
Filename : nom du fichier de configuration de vos écrans (par défaut, le nom utilisé par IOCLCD est
IOClcd.lcd et se trouve dans le même répertoire que vos soft LCD. Si vous désirez utiliser un autre nom,
vous devez ouvrir le fichier IOCLCD.ini et changer le nom du fichier par défaut)
Chaque écran est représenté par son numéro (4 écran numéroté de 0 à 3) ici « DISPLAY 0 ». Nous
dirons que s’est le numéro de l’écran PHYSIQUE
Le premier paramètre vous sert à configurer le type d’écran que vous avez connecté CAD le nombre
de ligne et de caractère que votre écran dispose (pour notre exemple il s’agit d’un 16x2 : 2 lignes de
16 caractères)
Le paramètre suivant est le n° de l’écran virtuel.
EXPLICATION : chaque écran physique dispose de 5 écrans virtuels. Ceci veut dire que pour chaque
écran physique, on peut y faire apparaitre 5 affichages différents
Exemple : Sur le DISPLAY 0 en virtuel 0 on fera apparaitre la fréquence de la com1 puis sur action
d’un bouton nous ferons apparaitre toujours sur le DISPLAY 0 mais cette fois ci en virtuel 1, la
fréquence de la NAV1. Sur le même écran physique nous avons donc 5 possibilités d’affichage.
Nous verrons plus tard comment dire à SIOC quel écran nous voulons
J’appellerai cette partie l’identification DISPLAY pour SIOC.
Afin que SIOC, lors de notre programmation, sache de qui on parle, on attribue ici un n° de variable.
Cette variable identifie l’écran physique donc la variable 1000 sera notre écran DISPLAY 0
Pour attribuer le n° de variable rien de plus facile : mettez votre n° dans le rectangle blanc et valider
sur « ADD Var » et le programme confirmera votre demande en indiquant le n° à côté de
« Variable ». Pour le changer refaite la même manœuvre avec votre nouveau n°.
INFO : le n° d’écran virtuel est lié au n° de la variable du display. On passera en programmation le
paramètre 0,1,2,3 ou 4 à la variable pour afficher l’écran virtuel voulu. (1000=1 pour signaler l’écran
virtuel 1 sur le display 0)…
Il nous reste ensuite l’écran proprement dit
Pour notre premier test, nous allons écrire le mot « TUTORIEL » sur notre écran
Double cliquer sur le premier rectangle pour voir ceci :
(vérifiez que vous êtes bien en écran virtuel 0)
Dans la partie Text : nous entrons « TUTORIEL » et validons avec OK
INFO : le logiciel attribuera automatiquement un emplacement à chaque lettre nous évitant ainsi de
faire la manœuvre lettre par lettre
Votre écran devrait ressembler à cela
Sauvons notre config : Fichier => save
(Pour rappel : le nom par défaut du fichier est ioclcd.lcd et dois se trouver dans le même répertoire
que les soft LCD)
Puis fermer le IOCLCD_CONFIG
Lancer maintenant le IOCLCD.exe et vous devriez voir apparaitre sur votre écran le mot « TUTORIEL »
Conseil : Si vous ne voyez pas ce que vous venez d’écrire :
Vérifiez que vous avez bien inscris le mot dans l’écran correspondant à ce que vous avez soudé
(dépend de quel fils data vous avez raccordé. Rappel : Display 0 = 29 - Display 1 = 30 – Display 2 = 27
– display 3 = 28)
Vérifiez que vous avez bien inscris le mot sur l’écran virtuel 0 (pour le savoir, passer les en revue)
Vérifiez le contraste et luminosité
Vérifiez que le nom sous lequel vous venez d’enregistrer correspond bien au nom par défaut du
IOCLCD.ini
Si tout est ok mais que rien ne se passe, vérifiez vos connexions et soudures
A pratiquer sur tous vos écrans pour vérifier que ses derniers fonctionnent.
1.4 Programmation
Avant de commencer à programmer sur SIOC, nous allons effectuer un dernier petit test pour
s’assurer que SIOC et USB-LCD communique bien ensemble.
Démarrer sioc afin de voir ceci :
Démarrer ensuite le soft IOCLCD.exe
A la ligne « Status » vous devez avoir maintenant « Online » qui signifie que USB-LCD parle bien à
sioc.
Retournez ensuite sur sioc pour voir ceci :
Dans la fenêtre LOG, « IOCP client connected » est venu s’ajouter. Si tel est le cas tout vas bien.
Si vous ne voyez pas tout ça, s’est probablement un problème au niveau de la configuration des softs
et je vous invite à vous rendre sur le forum Aircockpit pour y trouver la solution
INFO : l’USB-LCD n’est pas reconnu comme DEVICES donc s’est normal de ne pas voir votre carte
dans cette liste. Vous pouvez toute fois voir qu’il y a maintenant 1 client connecté dans la partie IOCP
SERVER
Premier programme : affichage de la com1 active et standby
IMPORTANT :
Avant de commencer, il faut savoir qu’il existe une particularité avec les écrans LCD et SIOC.
En effet SIOC ne pourra envoyer que des données chiffrées et non alphabétique ni de ponctuation.
Cette particularité va nous obliger à écrire à l’avance le texte dont nous aurons besoin.
Pour notre exercice nous allons devoir faire apparaitre sur l’écran :
COM1 ACT :
COM1 STB :
Votre écran devrait ressembler à ceci : (procédez de la même manière que pour notre mot TUTORIEL
du test)
Comme sioc n’envoie pas la ponctuation nous allons devoir inscrire manuellement le point de
séparation entier décimal.
ATTENTION : le « point » devra se trouver derrière 3 caractères libres (les entiers)et devant 2
caractères libres (les décimales) sans quoi la suite des opérations effacera le séparateur.
Maintenant nous allons définir sur notre écran ou ira les entiers et les décimales et leur donner
également un n° pour nos futures variables.
Double cliquer sur le premier caractère ou devra apparaitre les entiers de la fréquence active (3
caractères avant le « . »
Au lieu d’y inscrire du texte, nous donnons ici le n° de la variable (pour notre exemple 1001) de ce
que l’on voudra faire apparaitre ainsi que le nombre de caractère (Lenght) que ses données vont
prendre (ici 3) et valider par le bouton « OK » de la même ligne
Les rectangles jaune vous montre la place occupée par une(des) variable(s)
ASTUCE : un passage sur ses rectangles avec la souris fera apparaître une info bulle avec le n° de la
variable
Faites de même pour les décimales en prenant soin de mettre votre n° de variable et une longueur
de 2
Com1 act :
Entier ; variable n°1001 longueur 3
Décimal ; variable n° 1002 longueur 2
Com1 STB
Entier ; variable n°1003 longueur 3
Décimal ; variable n° 1004 longueur 2
CONSEIL PRATIQUE : Afin de s’y retrouver dans tous les numéros de variable et pour une lecture plus
facile, je travaille toujours en numérotant comme ceci :
Mais écrans
Display 0 : variable n°1000 - Display 1 : variable n°1100 - Display 2 : variable n°1200 –
Display 3 : variable n°1300 (les centaines me servent à identifier le n° du display)
Pour mes écrans virtuel et sous variables, je travaille avec les 10ene ainsi la 1ere sous variable du
Display 0 sur l’écran virtuel 0 sera lue 1001
Alors que la 3eme sous variable du display 2 sur l’écran virtuel 3 sera lue 1223
De cette façon je peux programmer sans risque de me tromper dans les numéros des variables.
Une fois fini, sauvez et quittez IOCLCD_CONFIG
Ouvrez sioc puis config sioc
On va commencer par déclarer toute nos variables qui concernent notre écran
Les variables ne sont liées à rien (NO LINKED)
Ensuite nos variables concernant les fréquences
Nous allons maintenant devoir traiter les données des variables com1 ACT et STB car elles ne sont
pas utilisable brut.
Si nous regardons la liste de Peter Dowson, elle nous dit que les offsets fréquences pour les Com sont
en format BCD que la fréquence 123.45 est représentée comme ceci 0x2345.
De plus nous devons séparer les entiers des décimal pour les envoyer sur notre écran
Commençons à traiter la fréquence de la COM 1 active
Comme le format utilisable est le format BCD nous passons donc la valeur reçue dans le bon format
En sioc : L0 = FROMBCD &COM1_ACT
(la valeur à retenir (L0) est égale à la valeur de COM1_ACT au format BCD
Le FROMBCD signale que l’on transforme en format BCD a l’inverse pour envoyer en format BCD on
utilisera la fonction TOBCD
Si nous pouvions lire le résultat, nous verrions que L0 = 2345 représentant la fréquence 123.45
Vous l’avez remarqué il manque le 1 de 123 alors ajoutons le
Pour ce faire nous allons ajouter 10000 à L0 pour obtenir 12345 (2345 + 10000)
En sioc : L0 = l0 + 10000
Maintenant nous allons devoir séparer les entiers de décimales pour obtenir deux valeurs 123 et 45
Et pour obtenir 123,45 à partir de 12345 il suffit de diviser par 100
En sioc : L1 = L0 / 100
Info : les L0 L1 L2 servent à garder des valeurs dans notre cas L0 sert de base L1 servira pour retenir
nos entiers et L2 nos décimale
Ensuite pour ne garder que les entiers on va tronquer le résultat obtenu
En clair ; tronquer la valeur L1 pour obtenir une nouvelle valeur L1
En sioc : L1 = TRUNC L1
Occupons-nous des décimales
Pour ne garder que les décimal d’un nombre on utilise ici la fonction MOD qui à l’inverse de TRUNC
ne garde que le résultat décimal d’une division
Nous allons reprendre notre valeur L0 qui est rappeler vous = à 12345 et donc la diviser par 100 et
retenir le résultat sous L2
En sioc : L2 = MOD L0 100
Résumé :
Nous avons L0 = 12345
L1 = 123
L2 = 45
Sous sioc sa ressemble à ceci :
A ce stade il ne reste plus qu’à dire à sioc d’envoyer les valeurs obtenues à notre écran
En dessous du dernier calcul (L2) on dit à sioc que lcd_com1_AE est = à L1 et que lcd_com1_AD est =
à L2
En Sioc :
&lcd_com1_AE = L1
&lcd_com1_AD = L2
Enregistrer – fermer le config sioc – Reload et lancer FS (IOCLCD dois également être lancé)
Pour afficher la fréquence StandBy répétez les opérations
Le code complet sioc en TXT :
Var 1000, name ecran_LCD_0
// Display 0
Var 1001, name lcd_com1AE
// Com1 active partie entier
Var 1002, name lcd_com1AD
// Com1 active partie decimal
Var 1003, name lcd_com1SE
// Com1 stb partie entier
Var 1004, name lcd_com1SD
// Com1 stb partie decimal
Var 2000, name COM1_ACT, Link FSUIPC_OUT, Offset $034E, Length 2
{
L0 = FROMBCD &COM1_ACT
L0 = L0 + 10000
L1 = L0 / 100
L1 = TRUNC L1
L2 = MOD L0 ,100
&lcd_com1AE = L1
&lcd_com1AD = L2
}
// fréquence com1 Active
Var 2001, name COM1_STB, Link FSUIPC_OUT, Offset $311A, Length 2
{
L0 = FROMBCD &COM1_ACT
L0 = L0 + 10000
L1 = L0 / 100
L1 = TRUNC L1
L2 = MOD L0 ,100
&lcd_com1SE = L1
&lcd_com1SD = L2
}
// fréquence com1 STB
Screen du sioc :
Dans le prochain chapitre, nous verrons comment utiliser les écrans virtuels et le passage d’un à
l’autre avec un bouton.
A suivre …
Mammouth
Mouthuy Vincent