Messwerte übertragen
Nachdem jetzt die Übertragung von simulierten Messwerten funktioniert (siehe Senderprogramm, Senderprogr. f. Attiny und Empfangsprogramm) geht es weiter mit der Übertragung von "echten" Messwerten. Dazu sind am Beispiel eines I2C-Temperatursensors MCP9808 nur mehr die nachfolgenden Ergänzungen im Senderprogramm notwendig. Zur Abfrage des Sensors bediene ich mich meiner Library MyMCP9808, die das Vorhandensein des Sensors überprüft (My9808.isReady()), wenn vorhanden, den Temperaturwert abfragt (My9808.readTemp()) und das Ergebnis der Sendervariablen "Messwert[0]" zuweist.
Die Library kann von hier heruntergeladen werden: Temp.sensor MCP9808
Ergänzungen im Senderprogramm:
(Ergänzungen Fett)
Im Deklarationsteil:
#include <MyMCP9808.h>
#include <Metro.h>
#include <VirtualWire.h>
//Temperatursensor MCP9808
MyMCP9808 My9808(0x18);
float Temp9808;
In Loop():
//Ermittlung der Messwerte
if (Zyklus1Metro.check() == 1)
{
//Temperaturfuehler MCP9808
if (My9808.isReady()) Temp9808 = My9808.readTemp();
//Hier können weitere Sensoren eingebunden werden
}
//Kopieren der Messergebnisse zu "Messwert1-5"
Messwert[0] = Temp9808; //Messwert 1
Messwert[1] = 0;
Messwert[2] = 0;
Messwert[3] = 0;
Messwert[4] = 0;
Zum Testen der Übertragung von Messwerten verwende ich, entsprechend meinem Testaufbau, mit Sender 1 (Atmega328) den oben genannten Temperatursensor MCP9808 und mit Sender 2 (Attiny85) einen Luftdruck- und Temperatursensor BMP180 (siehe: Luftdrucksensor BMP180).
Der Serielle Monitor des Empfängers zeigt die empfangenen Telegramme Sender 1 und Sender 2 und den Inhalt der Messwertspeicher: