Bonjour à tous,
je suis actuellement dans ma période bac de mon projet en STI2D, jusque ici j'ai réussi a m'en sortir mais la je suis arrivé sur un sujet que je ne connais pas...
Je vous explique rapidement le projet pour que vous compreniez peux être mieux ma question,
Mon trinôme doit mettre en place un système de gestion de ventilation du tunnel de Neuilly a partir de relevés de température et du taux de CO2.
Malheureusement un des membres du groupe a abandonné le lycée, nous nous retrouvons donc a 2 pour faire le travaille de 3 personnes.
Mon binôme gère la mise en places des modules de ventilation et la communication entre les modules, moi je m'occupe de la mise en place d'un serveur Web pour le contrôle du système par un technicien et d'un système d'affichage pour les automobiliste.
Je suis actuellement bloqué sur le système d'affichage qui n'est pas un module arduino classique comme tout se qui est utilisé dans notre projet mais un grand afficheur que voici :
http://www.conrad.fr/ce/fr/product/590996/Journal-lumineux-LED-3-couleurs?ref=searchDetail
L'envoie des données est fait, mon soucis est que l'afficheur demande un checksum a la fin de l'envoie de mes données mais je n'y arrive pas...
C'est en checksum Xor qui est demander.
voici la trame de données qu'envoie l'arduino avec un exemple fournie par mon professeur :
<ID00><L1><PA><FE><MA><WC><FE>test62<E>
La partie n'est pas a prendre en compte dans le checksum qui est représenter par "62".
indique la fin de transmission et n'est pas a prendre en compte non plus.
Voici le code que j'ai ecris. il est écrit de manière a se que l'on écrive un mot dans le moniteur série et que peux importe se qui est écrit, le checksum se calcule automatiquement :
unsigned long text = 0;
unsigned char checksum = 0;
unsigned long afficheur ;
void setup () {
Serial.begin(9600); //Début de la liaison série sur les Serial
Serial1.begin(9600); //Début de la liaison série sur les Serial 1
}
void loop () {
//Envoie des données seulement si il en reçoit
if (Serial.available () > 0) {
text = Serial.read(); //text prend la valeur reçu
checksum = afficheur ^ text;
Serial1.print("<ID00><L1><PA><FE><MA><WC><FE>"); // on envoie en première partie les codes non variant utile pour l'afficheur
Serial1.print(text); // on envoie le texte lu dans le moniteur série
Serial1.print(checksum); // on enoie la valeur du checksum calculer
Serial1.println("<E>"); //commande de fin d'envoie de données pour l'afficheur
}
delay(2000);
}
Se n'est pas si simple que je le pensais et je ne connais quasiment rien en checksum... si une âme charitable pouvais m'expliquer un peu ça serait super.
je vous remercie de m'avoir lu et de m'aider ^^