Hallo liebe Freunde des Arduinos,
ich habe ein neues Projekt begonnen. Und zwar sollen Funksteckdosen Temperaturgesteuert an- bzw. ausgeschaltet werden. Als Temperatursensoren kommen DS18B20 zum Einsatz. Bei der Funksteckdose RCSwitch (alte HX2262 schaltung). Nun habe ich das Problem das nach dem meine if Abfrage erfüllt ist ständig gesendet wird. Dies soll allerdings nur einmal passieren. Ich würde euch bitten mein Problem einmal anzuschauen:
#include <OneWire.h>
#include <DallasTemperature.h>
#include <RCSwitch.h>
int tempsensor1Low = 26;
int tempsensor1High = 28;
int tempsensor2Low = 30;
int tempsensor2High = 32;
boolean steckdose1 = false;
boolean steckdose2 = false;
RCSwitch mySwitch = RCSwitch();
// Data wire is plugged into port 2 on the Arduino
#define ONE_WIRE_BUS 2
#define TEMPERATURE_PRECISION 9
// Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)
OneWire oneWire(ONE_WIRE_BUS);
// Pass our oneWire reference to Dallas Temperature.
DallasTemperature sensors(&oneWire);
//DeviceAddress Sensor1, Sensor2;
DeviceAddress sensor1 = { 0x28, 0xFF, 0x74, 0x93, 0x15, 0x15, 0x01, 0x61 };
DeviceAddress sensor2 = { 0x28, 0xFF, 0x35, 0x98, 0x15, 0x15, 0x01, 0xD1 };
void setup()
{
// Transmitter is connected to Arduino Pin #10
mySwitch.enableTransmit(10);
// start serial port
//Serial.begin(9600);
// Start up the library
sensors.begin();
// set the sensor resolution
sensors.setResolution(sensor1, TEMPERATURE_PRECISION);
sensors.setResolution(sensor2, TEMPERATURE_PRECISION);
mySwitch.switchOff("11111", "10000");
mySwitch.switchOff("11111", "01000");
}
void loop()
{
sensors.requestTemperatures();
float sensor1temp = sensors.getTempC(sensor1);
float sensor2temp = sensors.getTempC(sensor2);
Serial.print ("Sensor1: ");
Serial.print(sensor1temp);
Serial.print (" Sensor2: ");
Serial.print(sensor2temp);
Serial.println();
//erster Sensor , erste Steckdose
if ((sensor1temp <= tempsensor1Low) && (sensor1temp < tempsensor1High) && (steckdose1 == false) )
{
mySwitch.switchOn("11111", "10000");
steckdose1 = true;
}
if ((sensor1temp >= tempsensor1High)&& (steckdose1 = true) )
{
mySwitch.switchOff("11111", "10000");
steckdose1 = false;
}
//zweiter Sensor , Zweite Steckdose
if ((sensor2temp <= tempsensor2Low) && (sensor2temp < tempsensor2High) && (steckdose2 == false) )
{
mySwitch.switchOn("11111", "01000");
steckdose2 = true;
}
if ((sensor2temp >= tempsensor1High)&& (steckdose2 = true) )
{
mySwitch.switchOff("11111", "01000");
steckdose2 = false;
}
// delay(1000);
}
Vielen Dank und Viele Grüße,
DaHu