Hallo zusammen,
Ich bin neu, verzeiht Katastrophen! Ich will mir eine eigene Wetterstation bauen, die per 433mhz Daten an einen anderen Arduino sendet. Nach vielen Tagen Variablen Konvertierungs-frust habe ich gestern Abend das erste mal erfolgreich Temperaturdaten übertragen.
Verwendet wird ein DHT22 Sensor und Billig rf/tx Module. Jetzt wollte ich das Programm erweitern damit auch die Luftfeuchtigkeit übertragen wird, aber sobald die Zeile: dtostrf(h,4,2,h_data); ins Spiel kommt, dreht das ganze Program am Rad, jeh nach Position können entweder die Daten des Sensors nicht mehr gelesen werden, oder das Programm macht nur einen durchlauf oder es läuft ohne den delay Befehl zu beachten und gibt nur Müll in der Konsole aus.
Vielleicht konvertiere ich falsch? Kann mir jemand erklären wieso das ist? Oder wie man es besser macht?
Danke!!
Folgender Code funktioniert, aber sobald dtostrf(h,4,2,h_data); ins Spiel kommt, ist nichts mehr wie es sein soll ![]()
#include <VirtualWire.h>
#include <DHT.h>
#define DHTPIN 2 // what pin we're connected to
#define DHTTYPE DHT22 // DHT 22 (AM2302)
// Initialize DHT sensor for normal 16mhz Arduino
DHT dht(DHTPIN, DHTTYPE);
float h;
float t;
char t_data[5];
char *h_data;
int i;
void setup() {
Serial.begin(9600);
dht.begin();
Serial.println("start");
// Initialise the IO and ISR
vw_set_ptt_inverted(true); // Required for DR3100
vw_setup(2000); // Bits per sec
vw_set_tx_pin(10);
}
void loop() {
// Wait a few seconds between measurements.
delay(2000);
h = dht.readHumidity();
t = dht.readTemperature();
// Debug, anzeige der Daten in der Konsole
// Serial.print("Temperatur : ");
// Serial.println(t);
// Serial.print("Luftfeuchtigkeit: ");
// Serial.println(h);
// Umwandlung der Float Daten des DHT22 in char fuer die rf Uebertragung
dtostrf(t,4,2,t_data);
//dtostrf(h,4,2,h_data); // <---- BOESE ZEILE!
// Debug
Serial.print("Temperatur : ");
for (i=0; i<5;i++){
Serial.print(t_data[i]);
}
Serial.println("");
// Serial.print("Luftfeuchtigkeit: ");
// for (i=0;i<5;i++){
// Serial.print(h_data[i]);
// }
// Serial.println("");
vw_send((uint8_t *)t_data, strlen(t_data));
vw_wait_tx(); // Wait until the whole message is gone
}