Hallo,
Ich würde gerne Temperaturwerte von 2 Transmittern an einen Receiver senden und per Knopfdruck( 2 Knöpfe) zwischen den Werten von Transmitter 1 und Transmitter 2 wechseln.
Ich habe mir soweit ein bisschen Code zusammen gebastelt und es funktioniert alles mit einem Transmitter.
Der Empfänger funktioniert auch wunderbar. Nur weiss ich einfach nicht wie ich das mit 2 Transmittern anstellen soll.
Vielleicht könnte mir ja jemand helfen oder ein paar Ideen geben.
hier der Code vom Sender:
#include <DHT.h>
#include <VirtualWire.h>
#include <Adafruit_BMP085.h>
#define DHTPIN 2
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
Adafruit_BMP085 bmp;
const char msg0[] = {","};
char msg1[10];
char msg2[10];
char msg3[10];
int tem = 0;
int hum = 0;
int druck = 0;
void setup() {
Serial.begin(9600);
dht.begin();
bmp.begin();
vw_setup(2000);
vw_set_tx_pin(12);
}
void loop() {
Read_Sensor1();
Read_Sensor2();
Read_Sensor3();
Send_Data();
delay(1000);
}
void Read_Sensor1() {
tem = dht.readTemperature();
itoa(tem, msg1, 10);
}
void Read_Sensor2() {
hum = dht.readHumidity();
itoa(hum, msg2, 10);
}
void Read_Sensor3() {
druck = bmp.readPressure()/100;
itoa(druck, msg3, 10);
}
void Send_Data() {
strcat(msg1, msg0);
strcat(msg1, msg2);
strcat(msg1, msg0);
strcat(msg1, msg3);
Serial.println(msg1);
vw_send((uint8_t *)msg1, strlen(msg1));
vw_wait_tx();
delay(5000);
}
und Empfänger:
#include <LiquidCrystal.h>
#include <VirtualWire.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
byte degreesymbol[8] = {
B01100,
B10010,
B10010,
B01100,
B00000,
B00000,
B00000,
B00000
};
void setup()
{
Serial.begin(9600);
lcd.begin(16,2);
lcd.createChar(1, degreesymbol);
vw_set_rx_pin(13);
vw_setup(2000);
vw_rx_start();
lcd.clear();
}
void loop()
{
uint8_t buf[VW_MAX_MESSAGE_LEN];
uint8_t buflen = VW_MAX_MESSAGE_LEN;
buflen = VW_MAX_MESSAGE_LEN;
lcd.setCursor(0,0);
if (vw_get_message(buf, &buflen))
{
int i;
lcd.print("Garten: ");
for (i=0;i<2;i++)
{
lcd.write(buf[i]);
}
lcd.write(1);
lcd.print("C");
lcd.setCursor(0,1);
for (i=2;i<3;i++){}
for (i=3;i<5;i++)
{
lcd.write(buf[i]);
}
lcd.print("% rF ");
for (i=5;i<6;i++){
}
for (i=6;i<9;i++)
{
lcd.write(buf[i]);
}
lcd.print(" hPa");
}
}
Ich habe mir überlegt diese Stelle zu ändern, zu msg2
Serial.println(msg1);
vw_send((uint8_t *)msg1, strlen(msg1));
vw_wait_tx();
Jedoch habe ich momentan keinen Platz mehr auf meiner Platine um dies zu testen.