Hallo,
ich benutze einen Arduino MRKZERO um die daten von einem HYT939 Feuchtesensor auszulesen und dann mit einem NRF24L01 an einen Arduino Mega zu senden.
Leider bekomme ich im Ausgabefester nur 0.00 zu sehen..
Hier meine Codes:
Zero:
#include <nRF24L01.h>
#include <RF24.h>
#include <SPI.h>
#include <Wire.h>
RF24 radio(6,7); // CNS, CE
const byte address[6] = "00001";
#define HYT939_ADDR 0x28
void setup()
{
Serial.begin(9000);
Wire.begin();
radio.begin();
radio.openWritingPipe(address);
radio.setPALevel(RF24_PA_HIGH);
radio.stopListening();
}
void loop()
{
#define TFACTOR 99.2909 //Skalierungsfaktoren laut Datenblatt
#define TDELTA 40.0
#define HFACTOR 163.83
unsigned int traw;
unsigned int hraw;
double temp;
double hum;
int i;
unsigned char buffer[4];
Wire.beginTransmission(HYT939_ADDR);
Wire.endTransmission();
delay(100); //100ms warten
Wire.requestFrom(HYT939_ADDR, 4,true); //4 Bytes vom Sensor lesen
i=0;
while(Wire.available()) {
char c = Wire.read();
buffer[i]=c;
i++;
}
traw=buffer[2]*256+buffer[3]; //Rohdaten aus Puffer lesen
hraw=buffer[0]*256+buffer[1];
traw&=0xfffc;
hraw&=0x3fff; //Daten laut Datenblatt maskieren
traw>>=2;
/*
//Rohdaten ausgeben, zur eventuellen Fehlersuche
Serial.print("\r\nTemp Raw:");
Serial.println(traw);
Serial.print("Hum Raw:");
Serial.println(hraw);
*/
//Rohdaten Umrechnen
temp=(double)traw/TFACTOR;
temp=temp-TDELTA;
hum=(double)hraw/HFACTOR;
float tempout = temp;
radio.write(&temp, sizeof(temp));
float humout = hum;
radio.write(&hum, sizeof(hum));
delay(50);
}
Mega:
#include <nRF24L01.h>
#include <RF24.h>
#include <SPI.h>
RF24 radio(6, 7); // CNS, CE
const byte address[6] = "00001";
void setup() {
Serial.begin(9000);
radio.begin();
radio.openReadingPipe(0, address);
radio.setPALevel(RF24_PA_HIGH);
radio.startListening();
}
void loop() {
float got_tempout;
if (radio.available()) {
radio.read(&got_tempout, sizeof(got_tempout));
}
Serial.print(got_tempout);
//Serial.print("\t");
float got_humout;
if (radio.available()) {
radio.read(&got_humout, sizeof(got_humout));
}
Serial.print(got_humout);
//Serial.print("");
delay (1000);
}
LG Flo