J'ai besoin d'un bon coup de main pour les émetteurs/ récepteurs car ça dépasse de loin mes compétences
Ce que je souhaite faire :
Réaliser un boitier avec un arduino mini + Emetteur ss fil + un capteur de température DS18B20 et un capteur de luminosité (photo résistif)
J'ai réussi avec le tuto à afficher le message. Maintenant, je souhaite envoyer les valeurs de luminosité dans un premier temps puis la température. J’expérimente le tout sur une arduino uno pour me simplifier la vie.
J'ai du mal à comprendre les codes utilisés.
Pour le moment j'utilise le code (code trouvé au fil de mes recherches) suivant pour l'emetteur
- Code: Tout sélectionner
#include <VirtualWire.h> // Vous devez télécharger et installer la librairie VirtualWire.h dans votre dossier "/libraries" !
uint8_t buf[2];
void setup()
{
vw_setup(2000); // Bits par seconde (vous pouvez le modifier mais cela modifiera la portée). Voir la documentation de la librairie VirtualWire.
vw_set_tx_pin(3);
Serial.begin(9600); // La broche 3 sera utilisée pour transmettre la DATA, vous pouvez changez de broche si vous le désirez.
}
void loop()
{
int lightLevel = analogRead(0);
buf[0] = lightLevel;
Serial.println(lightLevel);
// C'est le message à envoyer.
vw_send(buf, 1);
vw_wait_tx(); // On attend que le message complet soit envoyé.
delay(1000); // Très important sinon cela peut brouiller d'autres appareils !
}
et ce code la pour le récepteur
- Code: Tout sélectionner
#include <VirtualWire.h> // Vous devez télécharger et installer la librairie VirtualWire.h dans votre dossier "/libraries" !
void setup()
{
Serial.begin(9600); // On initialise "le serial monitor", j'ai laissé 9600 bauds ici car c'est la valeur par défaut mais vous pouvez la modifier. Attention à bien mettre la même valeur dans votre Serial Monitor et dans votre programme.
vw_setup(2000); // Bits par seconde (vous pouvez le modifier mais cela modifiera la portée). Voir la documentation de la librairie VirtualWire.
vw_set_rx_pin(5); // C'est sur cette broche que l'on reliera les broches DATA du récepteur, vous pouvez changez de broche si vous le désirez.
vw_rx_start(); // On démarre le récepteur.
}
void loop()
{
uint8_t buf[VW_MAX_MESSAGE_LEN];
uint8_t buflen = VW_MAX_MESSAGE_LEN;
if (vw_wait_rx_max(200))
if (vw_get_message(buf, &buflen)) {
Serial.print(buf[0]);
Serial.print(" ");
// analogWrite(11, buf[1]);
}
}
Je récupère bien une valeur mais elle est fausse par rapport à ce que me donne le serial de l'emetteur. Pour 800 j'ai 600 par exemple.
J'ose pas attaquer le capteur de température car jusqu'à présent c'est de la bidouille et je ne comprends pas des parties de codes.
Si vous pouvez m'apporter vos lumières