Programmation d'un afficheur LED

Bonjour à tous :slight_smile: ,

Je suis étudiant en DUT GEII et j'ai un projet : Remettre en fonctionnement un afficheur à LED

Le seul soucis c'est que j'ai qu'une seul documentation à propos de celui-ci : Le protocole GTXC ::slight_smile:

http://www.ledsynergy.com/leaflets-drawings/protocol-GTXCW-manual.pdf

Si quelqu'un pourrait m'expliquer ou m'éclairer sur ce protocole ... ça serrait sympa ! :frowning:

De plus à la fin de ce document j'ai du code mais en GWBASIC (Ancien langage):

Mon but : Reprogrammer cette carte et envoyant les données utiles via une Arduino ou autre !

(Oui, j'ai déjà poster un message similaire sur un forum mais pas eu de réponse, j'espère que la communauté pourras solutionner mon problème ! :slight_smile: )

Merci d'avance de vos réponses ! :wink:

Bonjour,
As-tu des problèmes pour convertir le programme Basic en C ?

Tout d'abord merci de ta réponse aussi rapide ! :wink:

En effet, je ne connais pas du tout ce langage, de plus l'utilisation des codes ASCII compliquent la tache !

Si tu pourrais me venir en aide ça serrait sympa ! :wink:

Re,
Je ne vais pas faire le travail à ta place. Pour GwBasic utilise la toile, il y a toute la documentation nécessaire.
Quelques pistes pour la transcription.

ligne 10 : ouvre le port série
ligne 15 : efface l'écran et affiche texte
ligne 16 : affiche texte
ligne 20 : affecte à la variable A$ (variable texte) les caractères qui suivent (ex: chr$(66) correspond à la lettre B)
ligne 25 : une boucle de 100 à 10000 pour CNT (début boucle ligne 25 - fin boucle ligne 110)
ligne 30 : affecte à la variable MSG$ (variable texte) le texte CNT = et la représentation texte de CNT
ligne 40 : affecte à la variable TXT$ A$ plus MSG$ plus CHR$(4)
ligne 50 : variable numérique CK=0
ligne 60 : boucle qui balaye tout le texte TXT$
ligne 70 : calcul checksum
ligne 80 : fin boucle checksum
ligne 90 : affiche le résultat
ligne 100 : boucle d'attente

Maintenant c'est à toi d'agir.
@+

Merci beaucoup !
Ce projet n'est pas un projet scolaire je précise je suis dans un club de modélisme et on souhaiterais afficher le temps de course et d'autres infos sur celui !

Mais merci de tes infos, j'aime réfléchir ! :slight_smile:

Re,

Str862:
Mais merci de tes infos, j'aime réfléchir ! :slight_smile:

Tant mieux :wink:

Je viens de le transcrire (pour le plaisir) cela m'a pris 2 minutes.
A toi d'agir - mais en cas de problèmes, tu reviens :smiling_imp:

Je comprends tout à fait l'utilité d'afficher un B avec (chr$(66))
Mais peux-tu m'expliquer l'utilité du NULL car si je ne me trompes c'est ce que renvoie (chr$(0)) ?

Re,
C'est écrit dans ton descriptif de protocole

La ligne 20 correspond au début du protocole décrit dans la doc que tu nous a copiée.
le CHR$(0) c'est le header sync

D'accord j'ai compris les 2 bits '00' correspondent au header et donc au CHR$(0)

&HC0 c'est de l'hexadécimal ? (&H = 0x ?)

Re,
Oui

Un peut de documentation : GWBASIC

[edit] Tout est décrit avec précision dans "protocol-GTXCW-manual.pdf"

Salut,
Tout d'abords merci pour la documentation sur le GWBASIC.
Pour ce qui est des infos je suis conscient que tout est dans le PDF mais je ne veux pas appliquer bêtement mais comprendre aussi ce que je fais.

C'est aussi pour ça que je pose beaucoup de question :blush:

Je ne comprends pas vraiment l'équivalence entre le header qui devra être '00':
le CHR$(0) ne renvoie pas réellement 0 mais une valeur NULL vu que la fonction CHR$ renvoie le caractère correspondant au code.

Ce qui se démontre bien par ce test :

Bonjour,
Les caractères <32 ne sont pas utilisés pour l'affichage.
Ces caractères sont interprétés par l'afficheur.
Par exemple : chr$(0) = header, chr$(1) = afficheur 1 line, etc... +1 pour la doc

[edit] Les print du programme gwbasic sont à destination de l'afficheur série et non pour le moniteur

Merci de ta réponse
Donc si je décompose : ;D

  • CHR$(0 à 3) : Nécessaire à l'afficheur (Header,NOL,Sign Address,ETX) (Compris ! ;))

  • CHR$(&HC0) : en binaire -> 11000000 (SERST) Réglage des paramètres Serial

B7 B6 B5 B4 B3 B2 B1 B0
1 1 0 0 0 0 0 0
  • "001": Page n°001 et SERST B4 = 0 donc Byte 26 à 29 à définir
    CHR$(&HC0): Byte 26 : 11100010
B7 B6 B5 B4 B3 B2 B1 B0
1 1 1 0 0 0 1 0

Tempo : (B0-B3)0010 -> 2 donc temporisation de 10 secs
Display status: (B5-B4) 00 -> Timer mode ( affichée pendant Tempo)
(B7 - B0) toujours à 1

CHR$(&HC1) : byte 27 = 11000001:
Function: (B3 - B0 ) 0001 -> Fonction "Appear"
Clock et Temp: (B4 - B5 ) Température et heure masquées
B7 et B6 toujours à 1

CHR$(&HC0) : byte 28 = 11000000:
Aucune "mise en page", Langue étrangère désactivée, couleur de fond activée, et B7 toujours à 1

Jusque là est-ce que j'ai bon ? :relaxed:

Re,
Disposes tu de l'afficheur pour faire les tests car sans l'équipement d'affichage cela ne va pas être facile ?
@+

Je dispose de l'afficheur uniquement le week-end :slight_smile:

Re,

Str862:
Je dispose de l'afficheur uniquement le week-end :slight_smile:

Comme c'est le we, as-tu fait des tests ?

J'aurais bien voulu mais je n'ai aucun programme pour l'instant :confused:
Pourrais tu me donnais ton programme afin que je puisse tester ?
Et si ça fonctionne je fairais le programme avec lequel on pourrait changer le texte, les fonctions, ... cette semaine

Bonsoir,
Tu utilises quoi comme carte Arduino ?
As-tu pensé à l'adaptation de niveau pour la liaison série avec ton module afficheur ?
@+

Salut,
J'utilise une arduino Dualminove.
De quoi veux-tu parler par adaptation de niveau ? Tension des sorties RX, TX de l'arduino ?
A+