Hallo,
ich habe aus dem Forum ein Sketch gefunden und etwas angepasst.
Ich will damit eine Relaiskarte benutzen um eine Lampe einzuschalten.
Hier der Sketch:
#include <Wire.h>
#include <DS1307new.h>
int light = 6;
int lighthour = 8;
int lightminute = 00;
int lightsecond = 0;
long lighttime = 43200;
long timenow = 0;
void setup()
{
pinMode(light, OUTPUT);
digitalWrite(light, HIGH);
}
void loop()
{
RTC.getTime();
// Start Lampen
if (int(RTC.hour) == lighthour && int(RTC.minute) == lightminute && int(RTC.second) == lightsecond)
{
digitalWrite(light, LOW);
timenow = RTC.time2000;
}
// Stop Lampen
if (RTC.time2000 - timenow == lighttime)
{
digitalWrite(light, HIGH);
}
delay(500);
}
Es funktioniert so weit ganz gut, aber wenn ich wärend der Beleuchtungszeit den Arduino UNO resetten muss, bleibt die Lampe aus.
Könnte mir eventuell jemand behilflich sein um den Fehler zu finden?
lerion:
Es funktioniert so weit ganz gut, aber wenn ich wärend der Beleuchtungszeit den Arduino UNO resetten muss, bleibt die Lampe aus.
Könnte mir eventuell jemand behilflich sein um den Fehler zu finden?
Schaltung einmal am Tag ein und einmal am Tag aus?
Dann einfach je eine long Variable mit der Ein- und Ausschaltzeit bilden, nach dem Schema Hours3600+Minutes60
Und dann nach der Logik
AktuelleZeit=RTC.hour3600L+RTC.minute60;
if (AktuelleZeit > Einschaltzeit && AktuelleZeit < Ausschaltzeit)
digitalWrite(light, LOW);
else
digitalWrite(light, HIGH);
Hängt am "light" Pin bei Dir ein Relais?
Gibt es da beim Anstöpseln des Stroms bzw. beim Reset nicht das Problem, dass das Relais einmal ganz kurz klackt und schaltet?
Warum musst du während der Laufzeit resetten?
Bist du sicher, das die Uhr (DS11307) dann noch läuft.
Ich kann dir nur einen Tipp aus eigener Erfahrung geben:NIE WIEDER Relais oder Relaiskarten.
Ich hab hier schon mehrfach geschrieben, das ich (und auch andere) immer wieder Probleme mit
Relais und dem Arduino hatte.
Ich habe bei mir mehrere Arduinos im Haus am Laufen, diese schalten Licht, Heizungspumpen, Wasserpumpen und
Magnetventile.
Hatte immer wieder Abstürze der Uhrmodule oder der LCD-Anzeigen.
Seit ich alles auf SSR umgebaut habe läuft alles einfach toll und problemlos, vorher hatte ich nur Probleme.
Gruß
ich hole den Therad mal wieder raus, weil ich gerade an dem gleichen Thema sitze. Ich habe 12 Relais zu schalten.
Meine Einschaltzeiten sind in den Arrys Anminuten und Anstunden im EEPROM gespeichert. Beim Start des Artuino wird der EEPROM ausgelesen und in die o.g. Variablen geschrieben.
Der funktioniert soweit ganz gut. Ich bin mir nur nicht sicher ob ich eine Bedingung vergessen habe und ob es wirklich der beste Weg ist.
Die Uhr soll einmal am Tag anschalten und einmal aus. Das Uhrsignal kommt vom RTC 1307.
Gegen die Time.Alarms habe ich mich entschieden, da es zu seltsamen Erscheinungen mit dem Alarm.delay gab. Es hat meinen sonstigen Programm Ablauf (Displaymenü mit Möglichkeiten zu Settings und Save Settings je Kanal) gestört.
Bitte gebt mir einen Tipp wie ich es richtig mache. Wenn ich das beispiel oben anwenden wollen würde, dann müsste ich auch eine Alarmzeiten in eine long-Variable umwandeln oder?