Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentes Révision précédente | |||
|
projets:laisonsansfil [02/03/2017 18:11] Vincent Roudaut |
projets:laisonsansfil [09/03/2017 17:54] (Version actuelle) Vincent Roudaut |
||
|---|---|---|---|
| Ligne 14: | Ligne 14: | ||
| == Tutorial de montage == | == Tutorial de montage == | ||
| * https://www.carnetdumaker.net/articles/communiquer-sans-fil-en-433mhz-avec-la-bibliotheque-virtualwire-et-une-carte-arduino-genuino/ | * https://www.carnetdumaker.net/articles/communiquer-sans-fil-en-433mhz-avec-la-bibliotheque-virtualwire-et-une-carte-arduino-genuino/ | ||
| + | |||
| + | == Sketch réception == | ||
| + | <code> | ||
| + | /** | ||
| + | * Exemple de code pour la bibliothèque VirtualWire – Serveur d'envoi de texte | ||
| + | */ | ||
| + | |||
| + | #include <VirtualWire.h> | ||
| + | |||
| + | void setup() { | ||
| + | Serial.begin(9600); | ||
| + | |||
| + | // Initialisation de la bibliothèque VirtualWire | ||
| + | // Vous pouvez changez les broches RX/TX/PTT avant vw_setup() si nécessaire | ||
| + | vw_setup(2000); | ||
| + | vw_rx_start(); // On peut maintenant recevoir des messages | ||
| + | |||
| + | Serial.println("Go !"); | ||
| + | } | ||
| + | |||
| + | void loop() { | ||
| + | byte message[VW_MAX_MESSAGE_LEN]; | ||
| + | byte taille_message = VW_MAX_MESSAGE_LEN; | ||
| + | // N.B. La constante VW_MAX_MESSAGE_LEN est fournie par la lib VirtualWire | ||
| + | |||
| + | /* | ||
| + | La variable "taille_message" doit impérativement être remise à | ||
| + | la taille du buffer avant de pouvoir recevoir un message. | ||
| + | Le plus simple est d'utiliser une variable locale pour ne pas | ||
| + | avoir à réassigner la valeur à chaque début de loop(). | ||
| + | */ | ||
| + | |||
| + | // On attend de recevoir un message | ||
| + | vw_wait_rx(); | ||
| + | |||
| + | if (vw_get_message(message, &taille_message)) { | ||
| + | // On copie le message, qu'il soit corrompu ou non | ||
| + | |||
| + | Serial.println((char*) message); // Affiche le message | ||
| + | } | ||
| + | } | ||
| + | </code> | ||
| + | |||
| + | == Sketch émission == | ||
| + | <code> | ||
| + | /** | ||
| + | * Exemple de code pour la bibliothèque VirtualWire – Client d'envoi de texte | ||
| + | */ | ||
| + | |||
| + | #include <VirtualWire.h> | ||
| + | |||
| + | void setup() { | ||
| + | Serial.begin(9600); | ||
| + | |||
| + | // Initialisation de la bibliothèque VirtualWire | ||
| + | // Vous pouvez changez les broches RX/TX/PTT avant vw_setup() si nécessaire | ||
| + | vw_setup(2000); | ||
| + | | ||
| + | Serial.println("Go !"); | ||
| + | } | ||
| + | |||
| + | void loop() { | ||
| + | /* | ||
| + | byte message[VW_MAX_MESSAGE_LEN] = {'b','i','p',' ','b','i','p','!'}; | ||
| + | // N.B. La constante VW_MAX_MESSAGE_LEN est fournie par la lib VirtualWire | ||
| + | | ||
| + | // Lit un message de maximum 26 caractères depuis le port série | ||
| + | | ||
| + | int len = Serial.readBytesUntil('\n', (char*) message, VW_MAX_MESSAGE_LEN - 1); | ||
| + | if (!len) { | ||
| + | return; // Pas de message | ||
| + | } | ||
| + | | ||
| + | //int len = sizeof(message); | ||
| + | message[len] = '\0'; // Ferme la chaine de caractères | ||
| + | */ | ||
| + | vw_send("hello\0", 6); // On envoie le message | ||
| + | //vw_send(message, len + 1); // On envoie le message | ||
| + | vw_wait_tx(); // On attend la fin de l'envoi | ||
| + | //Serial.println("sending!" + message); | ||
| + | delay(300); | ||
| + | } | ||
| + | </code> | ||
