Bonjour,
Je suis nouveau sur ce Forum et je remercie d'avance les membres de la communauté.
J'aimerai avoir un coup de main, j'aimera réalisé une connexion Arduino Radio. J'ai donc acheté un composant de type XD-FST et j'ai récupéré la librairie VirualWire.
J'ai récupéré le montage électrique (simple) sur internet et il existe pleins de source également avec les codes pour les émetteurs et récepteurs, je ne parviens pas a faire fonctionner la communication. Je tente donc un pierre dans la marre, voici le code que j'ai actuellement (trouvé sur le net) :
(Merci à Skyduiono pour ce auto)
et voici les codes
Emetteur :
#include <VirtualWire.h> // inclusion de la librairie VirtualWire
const char *msg = "Arduino"; // 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_set_tx_pin(12);
vw_setup(2000); // initialisation de la librairie VirtualWire à 2000 bauds (note: je n'utilise pas la broche PTT)
}
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
}
Récepteur :
#include <VirtualWire.h> // inclusion de la librairie VirtualWire
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)
vw_set_rx_pin(11);
vw_rx_start(); // Activation de la partie réception de la librairie VirtualWire
}
void loop() // Fonction loop()
{
uint8_t buf[VW_MAX_MESSAGE_LEN]; // Tableau qui va contenir le message reçu (de taille maximum VW_MAX_MESSAGE_LEN)
uint8_t buflen = VW_MAX_MESSAGE_LEN; // Taille maximum de notre tableau
// REMARQUE ULTRA IMPORTANTE :
// Par le passé ces deux lignes se trouvaient en "haut de programme", c'était donc des variables globales.
// Elles ne doivent PAS être globales, c'est très important !
//
// Pourquoi ?
// C'est très simple. Posez vous la question suivante : que vaut "buflen" si la réception d'un message échoue,
// où qu'on reçoit un message de moins de VW_MAX_MESSAGE_LEN octets ?
// Au début "buflen" vaut VW_MAX_MESSAGE_LEN, mais après "buflen" vaudra une valeur < VW_MAX_MESSAGE_LEN.
// Et paf, la taille de votre buffer vient de diminuer pour la réception suivante, et ainsi de suite.
if (vw_wait_rx_max(200)) // Si un message est reçu dans les 200ms qui viennent
{
if (vw_get_message(buf, &buflen)) // On copie le message, qu'il soit corrompu ou non
{
Serial.print("RX : ");
for (byte i = 0; i < buflen; i++) // Si il n'est pas corrompu on l'affiche via Serial
Serial.print(buf[i]);
Serial.println("");
}
}
}
Je joins également la photo du montage (j'ai l'arduino émetteur en bas il affiche la LED TX allumée, je ne sais pas si c'est normal).
D'avance merci pour vos remarques / suggestion.
Je ne sais pas comment tester si mon émetteur fonctionne (indépendamment pour comprendre d'ou vient le problème).
