Faire un protocole, rs485, pilotage

Bonjour,

Je me permet de demander vos conseils pour un programme que je mets en place actuellement et qui me pose quelques soucis. Je cherche à piloter un moteur qui ce contrôle grâce à un protocole d'une vitesse de 19200bauds qui suit le schéma suivant :
Octet de start (0xAC)
Octet d'adresse
Identifiant du type de message (Drive moteur)
Identifiant du mode
Puissance et vitesse moteur (en Hexa ?)
Checksum (crc8 Maxim)
Et donnée de stop (0xAD)

Le tout sur un format rs485. J'ai donc acheté un Shield rs485 pour mon Arduino Uno (qui bloque le téléchargement...) Je ne sais donc pas si il fonctionne bien.
Qui normalement traduit le ttl en sortie rx et TX de la carte.
Pour communiquer j'ai donc tenté de faire un programme qui envoie les informations les unes après les autres en utilisant : MySerial.write(0xAC) (exemple pour la donnée de start)
Ainsi de suite jusqu'à la donnée de stop.
Cette donnée doit être envoyé 10 fois par seconde.(j'ai fais un timer avec millis()).
Je ne sais pas si c'est la bonne manière d'envoyer un protocole ou s'il faut procéder autrement.. je ne trouve pas beaucoup d'infos la dessus sur internet.
Auriez-vous des idées ? Je répondrais à toutes les questions au besoin.
Merci d'avance pour votre aide !

Tu peux t'inspirer des bibliothèques existantes pour RS485:

  • Celle-ci utilise SoftWareSerial pour libérer les broches TX/RX nécessaires à la communication avec le PC
  • Une autre ici

Pour la programation par l'USB l'interface série est utilisée.
La carte UNO comprend un circuit intégré (atmega16U2 pour les officielles ou CH340 pour les clones) qui fait la conversion USB/UART (ou interface série matérielle).
Il est possible que ton "shield", qui est semble-t-il connecté sur l'interface série, bloque ou déforme par sa présence les signaux provenant de l'USB, rendant ainsi la programmation impossible.

Que se passe t-il si tu retire ce "shield" pour reprogrammer et que tu le replace après ?
Faire cette manip permettra de bien identifier "le coupable", il faut évacuer tous les doutes et ne garder que des certitudes.

Sur le shield la broche RO du max 485 (ou équivalent) est connecté à la broche rx de l'arduino. C'est ça qui empèche le téléversement, c'est normal. Certain shield ont un jumper qui permet de couper cette connexion pendant l'upload, sinon simplement retirer le shield pendant l'upload.