Afficheur 7 segments port serie

DIDIER17

Member
Bonjour,
je n'arrive pas a gérer par une sortie série ce simple afficheur de chez microbot?
( je ne sais pas si j'ai le droit d’évoquer un produit dans ce forum?)

4-Digit Serial LED Display
Code: MR400-012.1

la documentation ne précise pas le protocole ( parité, vitesse, bit de stop, CR, LF, etc.)
donc je suis un peu (complètement) perdu.

la documentation indique que je dois envoyer un octet avec ce type de trame
0x79(-) 0x23(3) 0x82(.) 0x11(1) 0x04(4)

j'ai fais des essais sans aucun résultat avec un 8M2 en utilisant le TX du port série de programmation
je pense que cela est possible?

quelqu'un a-t-il déjà gérer ce type d'afficheur?

merci par avance
 

DIDIER17

Member

chimere322

Senior Member
re,
effectivement, si tu avais donné le lien au début. Je pense qu'il va falloir attendre d'autre réponse et surtout d'un membre très actif sur ce forum,j'ai nommé la personne dont j'ai donné le lien. Mais il va falloir être patient car le forum n'est pas vraiment actif en ce moment.
 

PieM

Senior Member
Bonjour et bienvenue,

Je pense sincèrement, à la vue de la doc, que le type qui a programmé le pic est un pervers ! De plus ne pas donner les caractéristiques de la liaison TTL c'est se moquer du monde. Seule solution effectivement utiliser l'I2C.
Par contre pour traduire un nombre avec cette méthode, ça ne sera pas coton :
Traduire -3.14 par (79,23,82,11,4) en sachant que 79, c'est 40 (caractère spécial)+ 30 car 3e digit + 9 qui est le segment G et que 82 c'est le point du digit 2, va être une entreprise titanesque !

Il va falloir choisir : abandonner 14€ ou y passer des nuits!
Un conseil, en général: lisez toujours les datasheets avant de commander des trucs.
Courage !
 

DIDIER17

Member
Bonsoir et merci infiniment aux participants de ce forum très réactif!
je vais me rapprocher du fabricant Microbot ( importateur ou revendeur car je ne pense pas que ce module soit fabriquer en Italie),
pour de plus amples renseignements
je reviens vers vous, si toutefois, j'ai des réponses utiles.
Merci PieM et MGU pour vos interventions et vos suggestions

Bonne soirée
Didier

https://www.microbot.it/en/contact-us.html
 

chimere322

Senior Member
Voila, la messe et dite, c'est pourquoi je voulais d'autre avis.Mercie à tous et bonne continuation sur tes recherches.
 

DIDIER17

Member
Bonsoir chimere322,
Yes I did, but I speak english like a spanish cow, et cela ne m'aide pas beaucoup.
Aujourd'hui j'ai mis en service un autre afficheur piloté par un FRM010, ce dernier fonctionne très bien.
j'espere décoder le fonctionnement MR400-012.1, ce sera ma contribution à la communauté des forumeurs ( vilain néologisme) car
je crains de ne pas être d'une grande utilité pour vos travaux. j'ai essayé de suivre l'histoire du "jalonneur" au troisieme post j'etais largué...
Bonne soirée
Didier
 

DIDIER17

Member
Bonjour à tous,
je reprends cette conversation. Je m’étais engager a chercher une solution,(l'année dernière...) pour faire fonctionner cet afficheur en liaison série.
Voici le fruit de 2 ou 3 après-midi de trifouillage.
Désolé pour le code alambiqué, la fonction DIG n'est pas implémenté sur les 08M2 afin de décomposer le nombre en chiffre et je lis le manuel du Picaxe en diagonale. ( je vais faire bondir les puristes du code robuste)

Configuration du port série C.0 sur un O8M2

8 bit,9600,no Parity, 1 bit de stop

connexion sur trois fils +5, GND, et RX

voici les paramètres d' hsersetup :

hsersetup B9600_4, %00

pour afficher un nombre par exemple "1234"
il faut envoyer un octet sous cette forme:

hserout 0,(0x31,0x22,0x13,0x04)
^ ^ ^ ^ c'est le nombre que je souhaite afficher 1234

0x pour l'hexa

le deuxième chiffre en rouge indique à l'afficheur la position d'affichage ( 3 millier, 2 centaine, 1 dizaine, 0 unité)

le troisième chiffre en noir indique la valeur du chiffre,
et pis c'est tout!


je n'ai pas trouvé une façon simple de gérer cet afficheur en liaison série mais il fonctionne bien et rapidement avec moins de latence
qu'un 1602 par exemple.

la documentation Microbot présente un octet type: (MSB)|S1 S0|P1 P0| C3 C3 C1 C0| (LSB).
S1 S0 set de caractère
P1 P0 position d'affichage
C3 C2 C1 C0 caractère
c'est pas clair?


je vous met en PDF un bout de test qui compte et décompte de 0 à 1000

Voila ma modeste contribution au forum.
Merci à tous et bonne journée, que je vous souhaite la plus fraiche possible.
 

Attachments

MGU

Senior Member
Bonjour,

Bonjour à tous,
je reprends cette conversation. Je m’étais engager a chercher une solution,(l'année dernière...) pour faire fonctionner cet afficheur en liaison série.
Voici le fruit de 2 ou 3 après-midi de trifouillage.
Désolé pour le code alambiqué, la fonction DIG n'est pas implémenté sur les 08M2 afin de décomposer le nombre en chiffre et je lis le manuel du Picaxe en diagonale. ( je vais faire bondir les puristes du code robuste)

Configuration du port série C.0 sur un O8M2

8 bit,9600,no Parity, 1 bit de stop

connexion sur trois fils +5, GND, et RX

voici les paramètres d' hsersetup :

hsersetup B9600_4, %00

pour afficher un nombre par exemple "1234"
il faut envoyer un octet sous cette forme:

hserout 0,(0x31,0x22,0x13,0x04)
^ ^ ^ ^ c'est le nombre que je souhaite afficher 1234

0x pour l'hexa

le deuxième chiffre en rouge indique à l'afficheur la position d'affichage ( 3 millier, 2 centaine, 1 dizaine, 0 unité)

le troisième chiffre en noir indique la valeur du chiffre,
et pis c'est tout!


je n'ai pas trouvé une façon simple de gérer cet afficheur en liaison série mais il fonctionne bien et rapidement avec moins de latence
qu'un 1602 par exemple.

la documentation Microbot présente un octet type: (MSB)|S1 S0|P1 P0| C3 C3 C1 C0| (LSB).
S1 S0 set de caractère
P1 P0 position d'affichage
C3 C2 C1 C0 caractère
c'est pas clair?


je vous met en PDF un bout de test qui compte et décompte de 0 à 1000

Voila ma modeste contribution au forum.
Merci à tous et bonne journée, que je vous souhaite la plus fraiche possible.
Bonjour,
Merci pour l'info

MM
 

PieM

Senior Member
Bonjour,

tout ça:
Rich (BB code):
pod = 4563
 W0 = pod
 W1 = W0 //1000 'reste de la di
 W2 = W0 //100 ' reste de la div
 W3 = W0 //10 ' unité
 W5 = W0 - W1 /1000 'millier
 W6 = W1 -W2 / 100 ' centaine
 W7 = W2 - W3 /10 ' dixaine

 lookup W3,(0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09),b20

lookup W7,(0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19),b21

 lookup W6,(0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29),b22

 lookup W5,(0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39),b23

 hserout 0,(b23,b22,b21,b20)
Peut être remplacé par :
Rich (BB code):
 b20 = W0 //10 + 0x00
 b21 = W0 //100 /10 + 0x10
 b22 = W0 //1000 /100 + 0x20
 b23 = W0 /1000 + 0x30
hserout 0,(b23,b22,b21,b20)
 

DIDIER17

Member
Bonjour,
Merci PieM, évidemment quand on sait programmer, ça va mieux!
je vous inscris de ce pas pour le prix Turing.
Bonne journée
 

BESQUEUT

Senior Member
J'aurais utilisé bintoascii
mais le code de Piem fait 19 octets de moins !
Rich (BB code):
#macro Afficher(Nombre)
bintoascii Nombre,b24,b23,b22,b21,b20
b20=b20-0x30
b21=b21-0x20
b22=b22-0x10
hserout 0,(b23,b22,b21,b20) ' 66 octets
#endmacro


hsersetup B9600_4, %00
symbol pod = W8

pause 3000
for pod = 0 to 1000
      Afficher(pod)
next pod

for pod = 1000 downto 0 step 1
      Afficher(pod)
next pod
 

PieM

Senior Member
Bonjour,
Je trouve l'utilisation et le contenu de la macro, plus astucieuse.
Il est dommage que l'auteur du driver de cet afficheur n'ait pas intégré une utilisation plus conforme à ce type de produit, cad décoder en 7 segments directement à partir des codes ascii transmis. Cela aurait permis d'afficher la totalité des caratères alphanumériques possibles en 7 segments sans la gymnastique infernale décrite dans la doc. Avec un PIC, ça ne devait pas être insurmontable. Il n'y aurait pas eu besoin du set d'affichage, ni de la position.
 
Top