Ein einfacher Sender:
#include <Streaming.h>
#include <SoftwareSerial.h>
enum Comand {
Temperatur = 1,
Feuchtigkeit = 2
};
#define rxPin 3
#define txPin 4
SoftwareSerial btSerial(rxPin, txPin);
void setup()
{
btSerial.begin(9600);
}
void loop()
{
delay(3000);
btSerial << Temperatur << ',' << 18.6 << ';' << endl;
delay(3000);
btSerial << Feuchtigkeit << ',' << 54.77 << ';' << endl;
}
Dieser sendet schön abwechselnd 2 Kommandos:
1,18.6;
und
2,54.77;
Und ein Empfänger, welcher diese Daten auswertet:
#include <CmdMessenger.h>
#include <Streaming.h>
#include <SoftwareSerial.h>
enum Comand {
Temperatur = 1,
Feuchtigkeit = 2
};
#define rxPin 3
#define txPin 4
SoftwareSerial btSerial(rxPin, txPin);
CmdMessenger cmdMessenger {btSerial};
void setup()
{
Serial.begin(9600);
btSerial.begin(9600);
Serial << "Start: "<< __FILE__ << endl;
cmdMessenger.attach(Temperatur, [](){
float t = cmdMessenger.readFloatArg();
Serial << "Temperatur " << t << " C" << endl;
});
cmdMessenger.attach(Feuchtigkeit, [](){
float f = cmdMessenger.readFloatArg();
Serial << "Feuchtigkeit " << f << " %" << endl;
});
}
void loop()
{
cmdMessenger.feedinSerialData();
}
- Beides völlig ungetestet, da die Hardware nicht bereit steht *