Das mit der Zeitsteuerung die gar nicht funktioniert, war der Tipp den ich gebraucht habe. Ich dachte immer, dass nur der Rücklauf nicht funktioniert hat. Dein Programm hat den Motor zum weiterdrehen eingeschaltet, und mein Programm hat es wieder ausgeschalten, weil es auch in jedem Durchgang den Motor abschatet wenn die Minute abgelaufen ist, oder auch die 3 Sekunden abgelaufen sind. Das habe ich übersehen, dass das deinen normalen Lauf am Tag stören kann.

Die Led´s haben nur leicht geleuchtet, weil dein Programm den Motor eingeschalten hat, und mein Zusatz den Motor sofort wieder ausgeschalten hat.

Abwechselnd ein, aus, ein aus, ...... x-mal in der Sekunde. Deshalb die LED nur leicht leuchtend.
Ich bin mir sehr sicher, das Programm hier sollte jetzt funktionieren. Aber ich teste das vorher nochmal und gebe nochmal bescheid wenn es passt.
Code: Alles auswählen
// Programm zur Solarsteuerung mit DS 3231 Modul
#include "RTClib.h"
RTC_DS3231 rtc;
int mot1 = 5; // Motor Rechts
int mot2 = 6; // Motor Links
int schalter = 4; // Endschater
int pwm = 9;
unsigned long aktuellezeit = 0;
// ------millis Deklaration 01 -----------------------
unsigned long pausestartzeit01 = 0; // Eine Minute
const unsigned long pausezeit01 = 60000;
// ------millis Deklaration 02 -----------------------
unsigned long pausestartzeit02 = 0; // Drei Sekunden
const unsigned long pausezeit02 = 3000;
//-----------------------------Merker Deklarieren-----
byte MotorR = 0;
byte MotorL = 0;
byte Ende = 0;
byte MotorStart = 0;
//----------------------------------------------------
void setup () {
Serial.begin(9600);
pinMode (mot1, OUTPUT);
pinMode (mot2, OUTPUT);
pinMode(schalter, INPUT_PULLUP);
digitalWrite(pwm, HIGH);
#ifndef ESP8266
while (!Serial); // wait for serial port to connect. Needed for native USB
#endif
if (! rtc.begin()) {
Serial.println("Konnte RTC nicht finden");
Serial.flush();
abort();
}
Serial.println("Setting the time...");
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
}
void loop () {
DateTime now = rtc.now();
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.print(now.second(), DEC);
// Serial.print(rtc.getTemperature());
// Serial.println(" C");
Serial.println();
Serial.println();
if (now.hour() == 8 && now.minute() == 0 && now.second() == 0) {
digitalWrite(mot1, HIGH); // zustellen
}
if (now.hour() == 8 && now.minute() == 0 && now.second() == 14) {
digitalWrite(mot1, LOW); // Stopp
}
if (now.hour() == 9 && now.minute() == 0 && now.second() == 0) {
digitalWrite(mot1, HIGH); // zustellen
}
if (now.hour() == 9 && now.minute() == 0 && now.second() == 7) {
digitalWrite(mot1, LOW); // Stopp
}
if (now.hour() == 10 && now.minute() == 0 && now.second() == 0) {
digitalWrite(mot1, HIGH); // zustellen
}
if (now.hour() == 10 && now.minute() == 0 && now.second() == 7) {
digitalWrite(mot1, LOW); // Stopp
}
if (now.hour() == 11 && now.minute() == 0 && now.second() == 0) {
digitalWrite(mot1, HIGH); // zustellen
}
if (now.hour() == 11 && now.minute() == 0 && now.second() == 7) {
digitalWrite(mot1, LOW); // Stopp
}
if (now.hour() == 12 && now.minute() == 0 && now.second() == 0) {
digitalWrite(mot1, HIGH); // zustellen
}
if (now.hour() == 12 && now.minute() == 0 && now.second() == 7) {
digitalWrite(mot1, LOW); // Stopp
}
if (now.hour() == 13 && now.minute() == 0 && now.second() == 0) {
digitalWrite(mot1, HIGH); // zustellen
}
if (now.hour() == 13 && now.minute() == 0 && now.second() == 7) {
digitalWrite(mot1, LOW); // Stopp
}
if (now.hour() == 14 && now.minute() == 0 && now.second() == 0) {
digitalWrite(mot1, HIGH); // zustellen
}
if (now.hour() == 14 && now.minute() == 0 && now.second() == 7) {
digitalWrite(mot1, LOW); // Stopp
}
if (now.hour() == 15 && now.minute() == 0 && now.second() == 0) {
digitalWrite(mot1, HIGH); // zustellen
}
if (now.hour() == 15 && now.minute() == 0 && now.second() == 7) {
digitalWrite(mot1, LOW); // Stopp
}
if (now.hour() == 16 && now.minute() == 0 && now.second() == 0) {
digitalWrite(mot1, HIGH); // zustellen
}
if (now.hour() == 16 && now.minute() == 0 && now.second() == 7) {
digitalWrite(mot1, LOW); // Stopp
}
if (now.hour() == 17 && now.minute() == 0 && now.second() == 0) {
digitalWrite(mot1, HIGH); // zustellen
}
if (now.hour() == 17 && now.minute() == 0 && now.second() == 7) {
digitalWrite(mot1, LOW); // Stopp
}
if (now.hour() == 18 && now.minute() == 0 && now.second() == 0) {
digitalWrite(mot1, HIGH); // zustellen
}
if (now.hour() == 18 && now.minute() == 0 && now.second() == 7) {
digitalWrite(mot1, LOW); // Stopp
}
// Morgenstellung um 19 Uhr
if (now.hour() == 19 && now.minute() == 0 && now.second() == 0) {
if (MotorStart == 0)
{
MotorStart = 1;
}
}
//---------------------------Aktuelle Millis übergeben-----------------------
aktuellezeit = millis(); // Aktuelle Zeit für alle Millis Aktionen übergeben
//---------------------------------------------------------------------------
//---------------------------Motor Links Starten-----------------------------
if (MotorStart == 1)
{
digitalWrite (mot2, HIGH);
MotorL = 1;
MotorStart = 2;
pausestartzeit01 = aktuellezeit; // Eine Minute Abschaltung starten
}
//---------------------------------------------------------------------------
//------------------------Endschalter Kontrolle------------------------------
Ende = digitalRead(schalter);
if (Ende == 0)
{
digitalWrite (mot2, LOW);
MotorL = 0;
digitalWrite (mot1, HIGH);
MotorR = 1;
pausestartzeit02 = aktuellezeit; // Drei Sekunden Abschaltung starten
}
//------------------60000 Aktion---------------------------------------------
if ((aktuellezeit - pausestartzeit01 >= pausezeit01) && (MotorStart > 0)) // Eine Minute abgelaufen??
{
digitalWrite (mot1, LOW);
MotorR = 0;
digitalWrite (mot2, LOW);
MotorL = 0;
MotorStart = 0; // Eine Minute abgelaufen, startbereit für nächsten Rücklauf
}
//-----------------------------------------------------------------------------
//------------------3000 Aktion----------------------------------------------
if ((aktuellezeit - pausestartzeit02 >= pausezeit02) && (MotorStart > 0)) // Drei Sekunden abgelaufen??
{
digitalWrite (mot1, LOW);
MotorR = 0;
MotorStart = 0; // 3 Sekunden abgelaufen, startbereit für nächsten Rücklauf
}
//-----------------------------------------------------------------------------
}