das Panel ist unterwegs.

Die DS3231 habe ich bestellt, die sind ja kompatibel
zum RTC1303.
Ich glaube, dass ich damit besser fahre als mit GPS.
Gruß
Max
Forum zur gegenseitigen Hilfe für Hobby´s, Spass und Technik, im Raum Penzberg, Garmisch, Bad Tölz, Seeshaupt
Code: Alles auswählen
// Programm zur Solarsteuerung mit DS 3231 Modul
#include "RTClib.h"
RTC_DS3231 rtc;
int mot1 = 5;
int mot2 = 6;
int schalter = 4;
int pwm = 9;
int buttonState = 0;
void setup () {
Serial.begin(9600);
pinMode (mot1, OUTPUT);
pinMode (mot2, OUTPUT);
pinMode(schalter, INPUT_PULLUP);
digitalWrite(pwm,HIGH); //
buttonState = digitalRead(schalter);
#ifndef ESP8266
while (!Serial); // wait for serial port to connect. Needed for native USB
#endif
if (! rtc.begin()) {
Serial.println("Couldn't find RTC");
Serial.flush();
abort();
}
Serial.println("Setting the time...");
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
}
void stopp(){
if (digitalRead(schalter) == 0){
digitalWrite(mot2, LOW);
Serial.println("Endschalter");
}
}
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
if (now.hour()== 19 && now.minute()== 0 && now.second()== 0) {digitalWrite(mot2, HIGH);} // Zurueck
stopp();
}
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) // 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) // Drei Sekunden abgelaufen??
{
digitalWrite (mot1, LOW);
MotorR = 0;
MotorStart = 0; // 3 Sekunden abgelaufen, startbereit für nächsten Rücklauf
}
//-----------------------------------------------------------------------------
}
Mitglieder in diesem Forum: 0 Mitglieder und 4 Gäste