Hallo agmue, dake für deine Gedanken.
Habe jetzt den Code von DrDiettrich direkt in meinen Loop außerhalb der if bedingungen eingefügt.
Jedoch bekomme ich jetzt eine fehlermeldung, dass ich das codewort für "HeizungEin" bestimmen soll.
Wie mache ich das am besten um es auch nachher in meiner If bedingung aufrufen zu können?
#include <ALib0.h>
#include <Wire.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#include <LiquidCrystal_I2C.h>
#define I2C_ADDR 0x27 // <<- Add your address here.
#define Rs_pin 0
#define Rw_pin 1
#define En_pin 2
#define BACKLIGHT_PIN 3
#define D4_pin 4
#define D5_pin 5
#define D6_pin 6
#define D7_pin 7
LiquidCrystal_I2C lcd(I2C_ADDR,En_pin,Rw_pin,Rs_pin,D4_pin,D5_pin,D6_pin,D7_pin);
int BLED = 2;
int GLED = 3;
int RLED = 4;
int heater1 = 9; // heatergroup 1 control pin
int heater2 = 10; // heatergroup 2 control pin
int heater3 = 11; // heatergroup 3 control pin
float boxtemp = 0.0;
// Data wire is plugged into pin 8 on the Arduino
#define ONE_WIRE_BUS 8
// Setup a oneWire instance to
//communicate with any OneWire devices
OneWire oneWire(ONE_WIRE_BUS);
// Pass our oneWire reference to Dallas Temperature.
DallasTemperature sensors(&oneWire);
// Assign the addresses of your 1-Wire temp sensors.
DeviceAddress boxThermometer = { 0x28, 0xFF, 0x8F, 0x64, 0x86, 0x16, 0x05, 0xB8 };
void setup(void)
{
// Start up the library
sensors.begin();
// set the resolution to 12 bit
sensors.setResolution(boxThermometer, 12);
pinMode(BLED, OUTPUT); // LED's
pinMode(GLED, OUTPUT);
pinMode(RLED, OUTPUT);
digitalWrite(BLED, HIGH); // set LED's off
digitalWrite(GLED, HIGH);
digitalWrite(RLED, HIGH);
lcd.begin(20,4);
// columns, rows. use 16,2 for a 16x2 LCD, etc.
// LCD Backlight ON
lcd.setBacklightPin(BACKLIGHT_PIN,POSITIVE);
lcd.setBacklight(HIGH);
lcd.print ("Thermobox");
lcd.print ("2017");
delay(4000);
lcd.clear();
pinMode(heater1, OUTPUT); // Box heatergroup 1
pinMode(heater2, OUTPUT); // Box heatergroup 2
pinMode(heater3, OUTPUT); // Box heatergroup 3
}
void printTemperature(DeviceAddress deviceAddress)
{
float tempC = sensors.getTempC(deviceAddress);
if (tempC == -127.00) {
lcd.print("Error");
} else {
lcd.print(tempC);
}
{ boxtemp = sensors.getTempC(deviceAddress);
}
}
void loop(void)
{
delay(500);
sensors.requestTemperatures();
lcd.setCursor(0,0);
lcd.print("*****Temperatur*****");
lcd.setCursor(0,1);
lcd.print("Ist: ");
printTemperature(boxThermometer);
lcd.print((char)223);
lcd.print("C");
lcd.setCursor(0,2);
lcd.print("Soll: 60");
lcd.print((char)223);
lcd.print("C");
if (boxtemp <= 25)
{
digitalWrite(BLED, LOW);
digitalWrite(GLED, HIGH);
digitalWrite(RLED, HIGH);
digitalWrite(heater1, HIGH);
digitalWrite(heater2, HIGH);
digitalWrite(heater3, HIGH);
}
else if (boxtemp >= 26)
{ digitalWrite(heater1, LOW);
digitalWrite(heater2, LOW);
digitalWrite(heater3, LOW);
digitalWrite(RLED, LOW);
digitalWrite(GLED, HIGH);
digitalWrite(BLED, HIGH);
}
else
{ digitalWrite(GLED, LOW);
digitalWrite(RLED, HIGH);
digitalWrite(BLED, HIGH);
}
lcd.setCursor(0,3);
if ((digitalRead(9)==HIGH) && (digitalRead(10)==HIGH) && (digitalRead(11)==HIGH))
{
lcd.print("Heizen EIN");
} else {
lcd.print("Heizen AUS"); }
{
taskBegin();
taskWaitFor(HeizungEin);
digitalWrite(heater1, HIGH);
taskDelay(1000);
digitalWrite(heater2, HIGH);
taskDelay(1000);
digitalWrite(heater3, HIGH);
//warten auf Ausschalten
taskWaitFor(!HeizungEin);
digitalWrite(heater1, LOW);
digitalWrite(heater2, LOW);
digitalWrite(heater3, LOW);
taskEnd();
}
delay(500);
}
Gruß