hallo zusammen...
habe mir diesen: http://eckstein-shop.de/DS1302-Real-Time-Clock-Module-CP14001-C83
geholt...
nun folgendes Problem:
Zeit wird soweit angezeigt, allerdings wechselt er in etwa alle 20 sec von 08:..... auf 04:....
Die 08: Uhrzeit stimmt soweit...
und dann will ich eigentlich ein relay bei einer bestimmten Zeit schalten.
Relay ist noch nciht angeschlossen, habe es aber mit einer RGB versucht...
Geht aber iwie auch nicht...
wo ist der Fehler?
#include <OneWire.h>
#include <AFMotor.h>
#include <DallasTemperature.h>
#include <Wire.h>
#include <LCD.h>
#include <LiquidCrystal_I2C.h>
#include <DS1302.h>
#define ONE_WIRE_BUS 52
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
// DS1302: CE pin -> Arduino Digital 31
// I/O pin -> Arduino Digital 33
// SCLK pin -> Arduino Digital 35
DS1302 rtc(31, 33, 35);
Time t;
DeviceAddress Probe02 = { 0x28, 0xFF, 0x1B, 0x4B, 0x2E, 0x04, 0x00, 0x6B }; //1
DeviceAddress Probe01 = { 0x28, 0xFF, 0x1F, 0x76, 0x2B, 0x04, 0x00, 0x94 }; //2
//DeviceAddress Probe03 = { 0x28, 0x9A, 0x80, 0x40, 0x04, 0x00, 0x00, 0xD5 }; //3
//DeviceAddress Probe04 = { 0x28, 0x10, 0xA4, 0x57, 0x04, 0x00, 0x00, 0xA9 };//4
int rgb1r=30; // Hier die richtigen Pins eintragen
int rgb1g=32;
int rgb1b=34;
int rgb2r=36;
int rgb2g=38;
int rgb2b=40;
int relay1=37;
int relay2=39;
int relay3=41;
float Temperatur = 24.0;
long previousMillis = 2000;
long interval = 2000;
AF_DCMotor Fan1(1, MOTOR12_64KHZ);
AF_DCMotor Fan2(2, MOTOR12_64KHZ);
void setup()
{
Fan1.setSpeed(255);
Fan2.setSpeed(200);
sensors.begin();
sensors.setResolution(Probe01, 10);
sensors.setResolution(Probe02, 10);
// sensors.setResolution(Probe03, 10);
// sensors.setResolution(Probe04, 10);
rtc.halt(false);
rtc.writeProtect(false);
// The following lines can be commented out to use the values already stored in the DS1302
rtc.setDOW(FRIDAY); // Set Day-of-Week to FRIDAY
rtc.setTime(07, 59, 50); // Set the time to 12:00:00 (24hr format)
rtc.setDate(25, 8, 2014); // Set the date to August 6th, 2010
pinMode(rgb1r, OUTPUT);
pinMode(rgb1g, OUTPUT);
pinMode(rgb1b, OUTPUT);
pinMode(rgb2r, OUTPUT);
pinMode(rgb2g, OUTPUT);
pinMode(rgb2b, OUTPUT);
pinMode(relay1, OUTPUT);
pinMode(relay2, OUTPUT);
pinMode(relay3, OUTPUT);
lcd.begin (20,4);
lcd.backlight();
}
void loop()
{
sensors.requestTemperatures();
t = rtc.getTime();
if(sensors.getTempC(Probe01)>Temperatur+1){
Fan1.run(FORWARD);
digitalWrite(relay1,LOW);
digitalWrite(rgb1r,HIGH);
digitalWrite(rgb1g,LOW);
digitalWrite(rgb1b,LOW);
}else if(sensors.getTempC(Probe01)<Temperatur-4){
digitalWrite(relay1,HIGH);
digitalWrite(rgb1b,HIGH);
digitalWrite(rgb1g,LOW);
digitalWrite(rgb1r,LOW);
}else if(sensors.getTempC(Probe01)==Temperatur){
Fan1.run(RELEASE);
digitalWrite(relay1,LOW);
digitalWrite(rgb1b,LOW);
digitalWrite(rgb1g,HIGH);
digitalWrite(rgb1r,LOW);
}else{
digitalWrite(relay1,LOW);
digitalWrite(rgb1g,HIGH);
digitalWrite(rgb1r,LOW);
digitalWrite(rgb1b,LOW);
}
if(sensors.getTempC(Probe02)>Temperatur+1){
Fan2.run(FORWARD);
digitalWrite(relay2,LOW);
digitalWrite(rgb2r,HIGH);
digitalWrite(rgb2g,LOW);
digitalWrite(rgb2b,LOW);
}else if(sensors.getTempC(Probe02)<Temperatur-4){
Fan2.run(RELEASE);
digitalWrite(relay2,HIGH);
digitalWrite(rgb2b,HIGH);
digitalWrite(rgb2g,LOW);
digitalWrite(rgb2r,LOW);
}else if(sensors.getTempC(Probe01)==Temperatur){
Fan1.run(RELEASE);
digitalWrite(relay2,LOW);
digitalWrite(rgb1b,LOW);
digitalWrite(rgb1g,HIGH);
digitalWrite(rgb1r,LOW);
}else{
digitalWrite(relay2,LOW);
digitalWrite(rgb2g,HIGH);
digitalWrite(rgb2r,LOW);
digitalWrite(rgb2b,LOW);
}
if(t.hour, DEC==8){
digitalWrite(relay3,HIGH);
digitalWrite(rgb2r,HIGH);
}else if(t.hour, DEC==13){
digitalWrite(relay3,LOW);
}else if(t.hour, DEC==15){
digitalWrite(relay3,HIGH);
}else if(t.hour, DEC==20){
digitalWrite(relay3,LOW);
}
unsigned long currentMillis = millis();
if(currentMillis - previousMillis > interval) {
previousMillis = currentMillis;
lcd.clear();
lcd.home();
lcd.backlight();
lcd.setCursor(0,0);
lcd.print(F("Becken1: "));
displayTemperature(Probe01);
lcd.setCursor(0,1);
lcd.print(F("Becken2: "));
displayTemperature(Probe02);
lcd.setCursor(0,4);
lcd.print(rtc.getTimeStr());
// lcd.setCursor(0,2);
// lcd.print("3: ");
// displayTemperature(Probe03);
// lcd.setCursor(0,3);
// lcd.print("4: ");
// displayTemperature(Probe04);
}
}
void displayTemperature(DeviceAddress deviceAddress)
{
float tempC = sensors.getTempC(deviceAddress);
if (tempC == -127.00)
{
lcd.print("Temperature Error");
}
else
{
lcd.print("C=");
lcd.print(tempC);
}
}