Salut, j'ai pour projet de faire une station météo avec 3 autres camarades. Je m'occupe de l'émetteur récepteur 433Mhz qui doit envoyer les données d'un pluviomètre sur une autre carte arduino contenant l'aficheur LCD
Je ne m'occupe que de l'émetteur récepteur, le pluviomètre je ne m'en occupe pas, je traite uniquement ça donnée
Carte arduino 1 -> Les données du pluviomètre reçu et envoyé par l'emetteur 433Mhz
Carte Arduino 2 -> Récepteur et affichage sur le LCD
Les branchements sont bon, le problèmes c'est que je n'arrive pas à afficher la donnée du pluviomètre qui a été à été envoyé en onde haute fréquence sur l'afficheur une fois qu'il a été réceptionné.
voici mon code de l'émetteur:
#include <VirtualWire.h>
const char *msg = "Arduino"; /* Tableau qui contient notre message */
void setup()
{
Serial.begin(9600); /* Initialisation du port série */
Serial.println("Page d'envoit de trame");
vw_setup(2000); /* initialisation de la librairie VirtualWire à 2000 bauds */
/* plus la vitesse de transmission est lente plus la porté est accentué et inversement */
}
void loop()
{
Serial.print("Début d'envoi: ");
vw_send((uint8_t *)msg, strlen(msg)); /* envoie le message */ /* Transmet un message de taille len à partir des données contenues dans le tableau buf */
/* uint_8 = unsigned char = 1 octet, strlen renvoi le nombre de caractere dans une chaine de caractère char */
vw_wait_tx(); /* Fonction bloquante qui attend la fin de la transmission en cours avant de continuer le programme */
Serial.println("Envoyé !"); /* on signal la fin de l'envoi */
delay(1000); /* on attend 1s pour pas flooder */
}
Lui est bon.
Et voici le code du Récépteur:
#include <LiquidCrystal.h>
#include <VirtualWire.h>
LiquidCrystal lcd(7, 8, 9, 10, 6, 12); /* initialise la librairie en précisant les sorties utilisées */
void setup()
{
/* partie récepteur*/
Serial.begin(9600); /* Initialisation du port série à 9600 bauds */
Serial.println("Pluviométrie"); /* message de début */
vw_setup(2000); /* initialisation de la librairie VirtualWire à 2000 bauds */
vw_rx_start(); /* active/démarre la partie réception de la librairie VirtualWire */
/* partie lcd */
lcd.begin(16, 2); /* initialise le nombre de caractères et de lignes */
lcd.print("valeur du pluviomètre à afficher"); /* Affiche le message */
}
void loop()
{
/* PARTIE RADIO */
uint8_t buf[VW_MAX_MESSAGE_LEN];
uint8_t buflen = (VW_MAX_MESSAGE_LEN-1); // /!\ Laisser le -1 !!! En effet : si le buffer a un taille x, on ne pourra écrire que (x-1) char car le dernier char doit être un '\0'
if (vw_wait_rx_max(200))
{
Serial.print(buf);
}
buf[buflen] = '\0';
/* PARTIE DEBUG VERS PC */
Serial.print(buf); // Affichage radio
/* PARTIE LCD */
lcd.setCursor(0, 0); // Curseur en début de première ligne
lcd.print(buf); // Affichage radio
lcd.setCursor(0, 1); // Curseur en début de seconde ligne
lcd.print(millis()/1000); // Affichage timer (nombre de secondes depuis le dernier reset)
}
Je me suis déjà fait aidé sur un forum mais comme j'aimerais le finir le plus rapidement, je profite aussi de ce forum pour recevoir de l'aide.
Le problème doit venir je pense de ce passage dans le code du récepteur:
if (vw_wait_rx_max(200))
{
Serial.print(buf);
}
Merci d'avance ![]()
Ps: je répondrais rapidement toute la soirée s'il y a une quelconque réponse