Herzlichen Dank. Es funktioniert sehr gut. Der Tipp hat mich zu folgender Lösung gebracht.
Ich freue mich, wenn ihr noch mal drüber schauen könntet, ob es sich um eine gute Lösung handelt.
Das ist mein Sender:
#include <Streaming.h> //Bibliothek zur BT Verbindung
#include <SoftwareSerial.h>
#include "DHT.h" //DHT Bibliothek laden
enum Comand {
Temperatur = 1,
Feuchtigkeit = 2
};
#define ledR 11
#define ledG 12
#define ledB 13
#define rxPin 3
#define txPin 4
#define DHTPIN 2
#define DHTTYPE DHT22 //Es handelt sich um den DHT22 Sensor
SoftwareSerial btSerial(rxPin, txPin);
DHT dht(DHTPIN, DHTTYPE); //Der Sensor wird ab jetzt mit "dht" angesprochen
void setup()
{
btSerial.begin(9600);
Serial.begin(9600);
dht.begin();
//Festlegen der Ein- und Ausgänge für die BL Verbindung
pinMode(11,OUTPUT);
pinMode(12,OUTPUT);
pinMode(13,OUTPUT);
analogWrite(ledB,255); //Blaue LED wird eingeschaltet
}
void loop()
{
//Bestätigung zur erfolgreichen Funkanmeldung
analogWrite(ledR,0);analogWrite(ledG, 255);analogWrite(ledB,0); //LED Grün an
float tempaussen = dht.readTemperature(); //Temperatur außen wird gemessen und gespeichert
float feuchteaussen = dht.readHumidity(); //Luftfeuchte außen wird gemessen und gespeichert
//Senden der Messwerte
delay(3000);
btSerial << Temperatur << ',' << tempaussen << ';' << endl;
delay(3000);
btSerial << Feuchtigkeit << ',' << feuchteaussen << ';' << endl;
/*****************************************/
//Löschen der Messwerte
feuchteaussen = 0; //Der Wert für Feuchte wird für die nächste Runde genullt
tempaussen = 0; //Der Wert für Temperatur wird genullt
analogWrite(ledR,255);analogWrite(ledG,0);analogWrite(ledB,0); //Rote LED an
}
Und das ist der Empfänger:
#include <CmdMessenger.h> //Bibliothek zur BT Verbindung
#include <Streaming.h> //Bibliothek zur BT Verbindung
#include <SoftwareSerial.h>
#include <LiquidCrystal_I2C.h> //LiquidCrystal_I2C Bibliothek einbinden
enum Comand {
Temperatur = 1,
Feuchtigkeit = 2
};
#define ledR 11
#define ledG 12
#define ledB 13
#define rxPin 3
#define txPin 4
float t = 0;
float f = 0;
LiquidCrystal_I2C lcd(0x27, 20, 4); //Hier wird festgelegt um welches Display es sich handelt
SoftwareSerial btSerial(rxPin, txPin);
CmdMessenger cmdMessenger {btSerial};
void setup()
{
Serial.begin(9600);
btSerial.begin(9600);
Serial << "Start: "<< __FILE__ << endl;
cmdMessenger.attach(Temperatur, [](){
t = cmdMessenger.readFloatArg();
Serial << "Temperatur " << t << " °C" << endl;
});
cmdMessenger.attach(Feuchtigkeit, [](){
f = cmdMessenger.readFloatArg();
Serial << "Feuchtigkeit " << f << " %" << endl;
});
pinMode(11,OUTPUT); //PIN 11 wird als Ausgang festgelegt
pinMode(12,OUTPUT); //PIN 12 wird als Ausgang festgelegt
pinMode(13,OUTPUT); //PIN 13 wird als Ausgang festgelegt
lcd.init(); //Im Setup wird der LCD gestartet
lcd.backlight(); //Hintergrundbeleuchtung einschalten
lcd.setCursor(0,0); //Cursor auf Poition 0,0 setzen
lcd.print("Start"); //Schreib Start auf das Display
analogWrite(ledR,0);analogWrite(ledG,0);analogWrite(ledB,255);//Blaue LED an
}
void loop()
{
analogWrite(ledR,0);analogWrite(ledG,255);analogWrite(ledB,0); //Grüne LED an
cmdMessenger.feedinSerialData();
lcd.setCursor(0, 0);
lcd.print(" ");
lcd.setCursor(0, 0);
lcd.print(t,1);
lcd.print(" C");
lcd.setCursor(0, 1);
lcd.print(" ");
lcd.setCursor(0, 1);
lcd.print(f,1);
lcd.print(" %");
delay(5000); //5 Sekunden Pause
analogWrite(ledR,255);analogWrite(ledG,0);analogWrite(ledB,0); //Rote LED an
}