Hallo liebes Forum,
Im letzten Beitrag hatte ich versucht gehabt Temperatur/Luftfeuchtigkeitsdaten drahtlos an den Arduino mega zu übermitteln, Was mit Hilfestellung auch Wunderbar funktionierte.
Alerdings werden die Empfangenden Daten wie folgt angezeigt:
22.40
60.20
22.40
60.20
und so weiter...
nun will ich das es wie folgt dargestellt wird in der Seriellen Ausgabe des Empfänger Arduinos:
Outdoor: 22.80 °C
Outdoor: 59.30 %RH
Da wäre meine frage ob man das am Sender oder am Empfänger Arduino einstellt und wie ich da vorangehen soll.
Vielen dank im vorraus
Der Sketch zum Senden:
#include <RH_ASK.h>
#include <SPI.h> // Nicht wirklich benötigt, wird jedoch für die Kompilierung benötigt
RH_ASK driver(2000, 11, 12, 0); // Empfänger an Pin 3 und Sender an Pin 4
#include <INTERVAL.h> // Die INTERVAL-Bibliothek ist mir nicht bekannt, möglicherweise benötigen Sie eine andere oder keine zusätzliche Bibliothek
#include "DHT.h"
#define DHTPIN 10 // Sensor am Pin 2 anschließen
#define DHTTYPE DHT22 // Typ des Sensors: DHT22
DHT dht(DHTPIN, DHTTYPE); // Sensor wird mit „dth“ angesprochen
void setup()
{
dht.begin(); // DHT22-Sensor starten
Serial.begin(9600); // Debugging nur für serielle Ausgabe
if (!driver.init())
Serial.println("RadioHead Initialisierung fehlgeschlagen");
}
void loop()
{
INTERVAL(180000UL) // 20000ms
{
sendeTemperatur();
delay(10);
sendeLuftfeuchtigkeit();
}
}
void sendeTemperatur()
{
float Temperatur = dht.readTemperature(); // Temperatur auslesen und in "Temperatur" speichern
if (!isnan(Temperatur)) // Überprüfen, ob eine gültige Temperatur abgelesen wurde
{
char msg[8]; // Puffer groß genug für eine 7-stellige Fließkommazahl
dtostrf(Temperatur, 6, 2, msg); // In Zeichenkette konvertieren
driver.send((uint8_t *)msg, strlen(msg));
driver.waitPacketSent();
Serial.println("Outdoor: " + String(Temperatur) + " °C");
}
else
{
Serial.println("Fehler beim Lesen der Temperatur!");
}
}
void sendeLuftfeuchtigkeit()
{
float Luftfeuchtigkeit = dht.readHumidity(); // Luftfeuchtigkeit auslesen und in "Luftfeuchtigkeit" speichern
if (!isnan(Luftfeuchtigkeit)) // Überprüfen, ob eine gültige Luftfeuchtigkeit abgelesen wurde
{
char msg[8]; // Puffer groß genug für eine 7-stellige Fließkommazahl
dtostrf(Luftfeuchtigkeit, 6, 2, msg); // In Zeichenkette konvertieren
driver.send((uint8_t *)msg, strlen(msg));
driver.waitPacketSent();
Serial.println("Outdoor: " + String(Luftfeuchtigkeit) + " %""RH");
}
else
{
Serial.println(" }
else
{
Serial.println("Fehler beim Lesen der Luftfeuchtigkeit!");
}
}
Der Sketch zum Empfangen:
#include <RH_ASK.h>
#include <SPI.h> // Not actualy used but needed to compile
RH_ASK driver(2000, 11, 12, 0); //Empfänger an 3 und Sender an 4
void setup()
{
Serial.begin(9600); // Debugging only
if (!driver.init()) Serial.println("init failed");
else Serial.println("Alles OK");
}
void loop()
{
uint8_t buf[RH_ASK_MAX_MESSAGE_LEN];
uint8_t buflen = sizeof(buf);
static char StringReceived[15];
if (driver.recv(buf, &buflen)) // Non-blocking
{
int i;
//driver.printBuffer("Got:", buf, buflen);
for (i = 0; i < buflen; i++)
{
StringReceived[i] = char(buf[i]);
}
Serial.println(StringReceived);
}
}