[Conseil] Décodage BMC.

Bonjour tout le monde!

J'ai besoin d'aide car voilà plusieurs jours que je sèche sur un problème: le décodage d'une trame codé en BMC "Biphase Mark Code" en chaîne hexadécimal que je pourrai exploiter par la suite.
Voici le principe de ce codage.

Le problème est que je ne suis pas assez calé pour faire ça seul.
J'ai donc fais quelques recherches sur le net et j'ai trouvé ce site :

Cette personne utilise ce codage pour transmettre des infos entre 2 arduinos.
Je me suis donc penché sur la partie RX (réception), mais là encore, je n'arrive pas à l'adapter.

Vous pouvez trouver le sketch téléchargeable en fin de page.

A savoir que mon signal est composé de trames d'environs 100ms reçu toutes les 1 secondes.
Si je détecte un état Haut OU Bas qui fait plus de 150µs j'ai un "0", sinon j'ai un "1" (cf photo si dessus).

Plusieurs questions :
-Pouvez vous m'expliquer pourquoi le signal reçu doit être envoyé sur la broche 49 du Mega? (je ne le situe pas dans le sketch)
-Pouvez vous m'aider à comprendre et à modifier ce sketch pour mon projet (éventuellement par ajout de commentaires spécialement pour les nuls -> pour moi :roll_eyes:) ?

J'en demande beaucoup, mais n'y arrivant pas seul et n'ayant personne autour de moi pour m'aider, j'aimerai beaucoup trouver de l'aide et enfin comprendre.

Pour infos, je travail sur un Mega 2560.

Merci!!

Jérôme.

Salut,

Il utilise directement les timers de l'Atmega, d'où la complexité accrue du code et le choix des pins.

Mais t'es pas obligé d'utiliser ce code, une simple routine avec des pulsIn() et/ou des digitalRead() fonctionnera aussi

Bonjour et merci pour ta réponse.

Effectivement, je n'avais pas pensé aux pulseln(). Je vais y réfléchir.