Bonjours, j'aimerai fabriquer un une petite voiture toute simple a l'aide d'un module 433mhz, le probleme est que jarrive un envoyer un message de l'emmeteur au recepteur, mais ce message et tout le temp le meme "0" alors que le message qui est censer etre envoyer est "avant", "arriere", "droite" ou "gauche".
Avec: Serial.println(message[27]); tu affiche uniquement le 28 ième caractère de la chaine 'message', qui doit être '\0'.
De plus, pourquoi faire: vw_send(message, taille_message) ; avec taille_message=27, au lieu de
vw_send(message, strlen(message)) ;
En effet le 'message ne fait pas toujours 27 cars.
Quand vous faites Serial.println(message[27]);vous demandez d’imprimer le 28eme octet du tableau (qui n’est même pas dans le tableau qui va de 0 à 26). Il faut faireSerial.println(message);
bilbo83:
De plus, pourquoi faire: vw_send(message, taille_message) ; avec taille_message=27, au lieu de
vw_send(message, strlen(message)) ;
En effet le 'message ne fait pas toujours 27 cars.
Ce n’est pas optimal d’envoyer plus d’octets que nécessaire (ça fonctionnera) mais il faut envoyer le ‘\0’ pour que le buffer reçu soit bien une c-String sinon risque de bugs en fonction de ce qu’il y aura dans la mémoire. Donc au moins envoyer strlen(message)+1 octets
quand vous émettez une trame, il faut absolument donner la longueur du buffer à envoyer. L'arduino se fiche de savoir s'il y a quelque chose de pertinent dans tout le buffer, il prend le nombre d'octets que vous spécifiez et c'est ça qu'il balance sur les ondes. De l'autre côté il faut bien sûr une variable qui va être gérée par la partie réception des données et qui sera initialisée à la taille du message reçu. donc il vous faut bien une variable dans la partie réception.
Ce que voulait dire @bilbo83 c'est que si vous envoyez le message "gauche" c'est 6 caractères plus un caratère nul pour marquer la fin de la chaîne; Donc vous n'avez pas besoin d'envoyer sur les ondes 27 caractères, en envoyer que 7 peut suffire pour que le message soit bien transmis. 7 correspond à ce que je disais plus haut, strlen(message)+1 c'est à dire la nombre de caractères dans le message plus 1 pour le caractère nul de fin.
Désolée de ne pas avoir répondu avant...
Je vient d'apporter les modifications que vous m'avez suggéré a mon programme mais ca ne marche toujours pas...
Voici mes codes:
émetteur: