Bonjour,
Je suis en train d'essayer de communiquer entre un émetteur et un récepteur Arduino afin de mener à bien mon projet de fin d'année.
J'utilise pour cela la librairie VirtualWire. Pour effectuer une transmission de mots simples tels que "Bonjour", je n'ai aucun problème, cependant je dois communiquer une valeur variable (luminosité). J'utilise donc le programme de transmission suivant :
#include <VirtualWire.h> // inclusion de la librairie VirtualWire
const char *msg = "Bonsoir"; // Tableau qui contient notre message
void setup() // Fonction setup()
{
Serial.begin(9600); // Initialisation du port série pour avoir un retour sur le serial monitor
Serial.println("Tuto VirtualWire"); // Petit message de bienvenue
vw_setup(2000); // initialisation de la librairie VirtualWire à 2000 bauds (note: je n'utilise pas la broche PTT)
Serial.print("");
}
void loop() // Fonction loop()
{
Serial.print("TX ... "); // On signale le début de l'envoi
vw_send((uint8_t *)msg, strlen(msg)); // On envoie le message
vw_wait_tx(); // On attend la fin de l'envoi
Serial.println("Done !"); // On signal la fin de l'envoi
delay(1000); // Et on attend 1s pour pas flooder
}
Que j'ai modifié afin de changer le message de transmission en une variable :
#include <VirtualWire.h> // inclusion de la librairie VirtualWire
float L ;
void setup() // Fonction setup()
{
Serial.begin(9600); // Initialisation du port série pour avoir un retour sur le serial monitor
Serial.println("Tuto VirtualWire"); // Petit message de bienvenue
vw_setup(2000); // initialisation de la librairie VirtualWire à 2000 bauds (note: je n'utilise pas la broche PTT)
Serial.print("");
}
void loop() // Fonction loop()
{
Serial.print("TX ... "); // On signale le début de l'envoi
vw_send((uint8_t *)L, strlen (L) ); // On envoie le message
vw_wait_tx(); // On attend la fin de l'envoi
Serial.println("Done !"); // On signal la fin de l'envoi
delay(1000); // Et on attend 1s pour pas flooder
}
Et la console Arduino m'affiche le message d'erreur suivant :
O:\SIN\transmission sans fil arduino\test_-2\test-_2.ino: In function 'void loop()':
test_-_2:27: error: invalid cast from type 'float' to type 'uint8_t* {aka unsigned char*}'
vw_send((uint8_t *)L, strlen (L) ); // On envoie le message
^
test_-_2:27: error: cannot convert 'float' to 'const char*' for argument '1' to 'size_t strlen(const char*)'
vw_send((uint8_t *)L, strlen (L) ); // On envoie le message
^
exit status 1
invalid cast from type 'float' to type 'uint8_t* {aka unsigned char*}'
Avec l'erreur sur la ligne en rouge. j'ai cru comprendre que la transmission devait s'effectuer avec une const char; mais je ne sais pas comment convertir ma variable L.
Merci de vos réponses