J'ai un début de programme qui me permet d'afficher ce que je veux sur l'afficheur, tant que je connais le checksum c'est le suivant :
void setup () {
Serial.begin(9600); //Début de la liaison série
}
void loop () {
Serial.print("<ID00><L1><PA><FE><MA><WC><FE>");
Serial.print("Archer 1 :24");
Serial.print("56");
Serial.println("<E>");
delay(5000);
}
J'aimerais maintenant concevoir un programme Arduino pour calculer le checksum automatiquement, si quelqu'un pouvait me mettre sur la piste ça m'aiderait vraiment énormément.
Non, tu peux faire un petit up.
Bon comme c'est mon jour de bonté, je vais répondre.
Il faut que tu compose (presque) entièrement le message dans un buffer. Ensuite tu calcules le checksum dans ce buffer et tu le mets à la fin.
Pour faire ça, il faut que ru crées une fonction à laquelle tu passes le message à afficher et qui compose le message, calcule le checksum et envoie le message.
Ca donne quelquechose comme ça:
void setup () {
Serial.begin(9600); //Début de la liaison série
}
void loop () {
display("Archer 1 :24");
delay(5000);
}
// affiche un message sur l'afficheur
//
void display(const char *msg)
{
char buf[100];
strcpy(buf,"<ID00><L1><PA><FE><MA><WC><FE>");
strcat(buf,msg);
byte chk=0;
char *p;
for (p=buf+6; *p; p++) // calcule le checksum
chk^=(byte) *p;
sprintf(p,"%02X<E>",chk); // ajoute le checksum et le code de fin
Serial.println(buf);
}
Bonjour Kamill, tu m'sauves tout simplement la vie, je te remercie infiniment, j'ai une dernière petite question si ça te dérange pas :
j'utilise un arduino uno avec un shield avec un port série connecté sur l'arduino, et à chaque fois que je téléverse sur arduino je dois retirer les deux cavaliers et les replacer après pour afficher sur le journal défilant, ma question est la suivante : existe il une commande pour intervertir les broches ?
J'espère être arrivé à me faire comprendre, merci d'avance
Il faudrait voir si ton shield pour la liaison série peut utiliser d'autres pins.
Si c'est le cas tu dois pouvoir utiliser un SoftwareSerial à la place du serial hardware.
Kamil, merci, moi aussi ca m'a aidé, ca fait des heures que je cherche comment faire un checksum et hop, je tombe sur ta solution, je teste et ca marche...