/* DHT22-5R-2.ino : Reception des donnes Decodage apres la reception Affichage des donnees reconstituees Sketchs de base issus de https://github.com/panStamp/panstamp/wiki et de panstamp - Daniel Berenger : BasicRadio, BasicBeacon, DHT22... Essai de transcodage a partir de http://www.varesano.net/blog/fabio/sending-float-variables-over-serial-without-loss-precision-arduino-and-processing Modifications - adaptations pour les tests : Philippe Redoutey, janvier 2015 */ // permet d'envoyer les informations vers le moniteur s�rie #include "HardwareSerial.h" #define LED 4 // pour les test, pour verifier le passage // dans les boucles #define RFCHANNEL 0 // Let's use channel 0 #define SYNCWORD1 0xB5 // Synchronization word, high byte #define SYNCWORD0 0x47 // Synchronization word, low byte #define SOURCE_ADDR 4 // Sender address : l'adresse de ce module #define DESTINATION_ADDR 11 // destination address : l'adresse du // du module a qui l'on veut envoyer des // donnees CCPACKET txPacket; // packet object byte count = 0; byte OctetIn1; // Les octets que l'on veut recuperer byte OctetIn2; byte OctetIn3; byte OctetIn4; int IntHum2; // Les integer que l'on va reconstituer int IntTemp2; float hum2; // Les valeurs decimales que l'on va afficher et traiter float temp2; void rfPacketReceived(CCPACKET *packet) { if (packet->length > 1) // on teste la longueur du paquet // il faut tester egakelent le CRC // et potentiellement l'adresse { Serial.print("Longueur du paquet recu : "); // pour les tests Serial.println(packet->length); Serial.print("Adresse de l'emetteur : "); Serial.println(packet->data[0]); OctetIn1 = packet->data[1]; // on recupere les octets reçus OctetIn2 = packet->data[2]; OctetIn3 = packet->data[3]; OctetIn4 = packet->data[4]; // on reconstitue les valeurs entieres IntHum2 = ((OctetIn2 & 0xff) << 8) | (OctetIn1 & 0xff); IntTemp2 = ((OctetIn4 & 0xff) << 8) | (OctetIn3 & 0xff); // et on recree les valeurs decimales hum2 = IntHum2 / 10.0; temp2 = IntTemp2 / 10.0; Serial.println("Mesures recues"); // pour les tests Serial.print("Humidite: "); Serial.print(hum2,1); // ,1 pour n'afficher qu'une decimales Serial.print(" %\t"); // \t = tabulation Serial.print("Temperature: "); Serial.print(temp2,1); Serial.print(" °C\t"); Serial.println(); Serial.println(); } } void setup() { Serial.begin(9600); // initialisation de la partie radio du panstamp panstamp.radio.setChannel(RFCHANNEL); panstamp.radio.setSyncWord(SYNCWORD1, SYNCWORD0); panstamp.radio.setDevAddress(SOURCE_ADDR); panstamp.radio.setCCregs(); // Let's disable address check for the current project so that our device // will receive packets even not addressed to it. // Le fait de valider cette commande fait que le module traitera // toute reception meme qui ne lui sont pas destinee, // sauf a faire un test supplemntaire apres reception panstamp.radio.disableAddressCheck(); // Declare RF callback function // declaration de la routine qui sera appelee qaund il y a une reception panstamp.setPacketRxCallback(rfPacketReceived); } void loop() { // Dans ce programme, il n'y a rien dans le void loop // la reception, le decodage et l'affichage sur le moniteur serie // se font dans la routine de reception rfPacketReceived(CCPACKET *packet) } // fin du void loop