das mit dem am Laufen ist so eine Sache

Nachdem ich das funktionierende Demo-Programm von dir in mein
"Solarsteuerung_GPS_Test" Programm integriert habe, ging leider nix
mehr. Das GPS-Modul funkte nicht mehr, auch half kein Tausch von TX und RX.
Zur Sicherheit habe ich für Programmtests eine extra Testanlage ohne Solarmodul aufgebaut.
Die Elektronik und Mechanik ist aber identisch mit den beiden Strom liefernden Anlagen, siehe Bilder.
Bei meinem Programm sollte zuerst das GPS-Modul starten, dann wird der DC-Motor zu den vorgegebenen Zeiten
im Stundentakt für einige Sekunden in der Zustellung gestartet usw. Ab 19Uhr käme dann zur
Rückfahrt in die Morgenstellung, dein Programm zum Einsatz.
Vielleicht kannst du mal drüberschauen, ob dir was auffällt. Es eilt aber nicht.
Code: Alles auswählen
// Solarsteuerung mit GPS Modul
// erstellt: 15.11.2022
// aufgespielt:
// aufgespielt: Anlage test
#include <TinyGPSPlus.h>
#include <SoftwareSerial.h>
// 2 Pin für serielle Ausgabe wählen (Pin 2=TX, Pin 3=RX)
unsigned long aktuellezeit = 0;
// ------millis Deklaration 01 -----
unsigned long pausestartzeit01 = 0; // Eine Minute
const unsigned long pausezeit01 = 90000; //Rückfahrzeit + Sicherheit, Morgenstellung
// ------millis Deklaration 02 -----
unsigned long pausestartzeit02 = 0; // Drei Sekunden
const unsigned long pausezeit02 = 3000;
//-------------------------------Eingänge und Ausgänge Deklarieren-------------
int RXPin = 3; //2
int TXPin = 2; //3
int mot1 = 5;
int mot2 = 6;
int pwm = 9;
int stopp = 4; //Endschalter Morgenstellung
//-----------------------------Merker Deklarieren------------------------------
byte MotorR = 0;
byte MotorL = 0;
byte Ende = 0;
byte MotorStart = 1;
//-----------------------------Baudrate fuer Serial Schnittstelle--------------
const int baudSerial = 9600;
// Create a TinyGPS++ object
TinyGPSPlus gps;
// Erstellen Sie einen seriellen Software-Port namens "gpsSerial"
SoftwareSerial gpsSerial(RXPin, TXPin);
void setup()
{
// Start the Arduino hardware serial port at 9600 baud
Serial.begin(9600);
pinMode(mot1, OUTPUT);
pinMode(mot2, OUTPUT);
digitalWrite(pwm,HIGH); // digitalWrite(ein, HIGH); PWM dauerhaft eingeschaltet
pinMode(stopp, INPUT_PULLUP);
// Serial Schnittstelle starten
Serial.begin(9600);
}
//________________________________________
void zustell(){
digitalWrite(mot1, HIGH);
digitalWrite(mot2, LOW);
}
void zurueck(){
digitalWrite(mot1, LOW);
digitalWrite(mot2, HIGH);}
void halt(){
digitalWrite(mot1, LOW);
digitalWrite(mot2, LOW);}
void Morgenstellung(){
//---------------------------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 = 0;
pausestartzeit01 = aktuellezeit; // Eine Minute Abschaltung starten
}
//------------------------Endschalter Kontrolle------------------------------
Ende = digitalRead(stopp);
if (Ende == 0)
{
digitalWrite (mot2, LOW);
MotorL = 0;
digitalWrite (mot1, HIGH);
MotorR = 1;
pausestartzeit02 = aktuellezeit; // Drei Sekunden Abschaltung starten
}
//------------------90000 Aktion---------------------------------------------
if (aktuellezeit - pausestartzeit01 >= pausezeit01) // Eine Sekunde abgelaufen??
{
digitalWrite (mot1, LOW);
MotorR = 0;
digitalWrite (mot2, LOW);
MotorL = 0;
}
//------------------3000 Aktion----------------------------------------------
if (aktuellezeit - pausestartzeit02 >= pausezeit02) // Zwei Sekunden abgelaufen??
{
digitalWrite (mot1, LOW);
MotorR = 0;
}
}
void loop() {
while (gpsSerial.available() > 0)
if (gps.encode(gpsSerial.read())){
displayInfo();}
// Wenn 5000 Millisekunden vergehen und keine Zeichen eingehen
// über den seriellen Anschluss der Software den Fehler "Kein GPS erkannt"
if (millis() > 5000 && gps.charsProcessed() < 10)
{
Serial.println("Kein GPS erkannt");
while(true);
}
// ab hour=10 bitte 010+0 schreiben, ab 17 Uhr bitte 016+1 schreiben usw.
// if (gps.time.hour()== 016+2 && gps.time.minute()== 56 && gps.time.second()== 00){zustell();} hier Zeit einstellen
if (gps.time.hour()== 8+0 && gps.time.minute()== 01 && gps.time.second()== 00){zustell();} //hier Zeit einstellen
if (gps.time.hour()== 8+0 && gps.time.minute()== 01 && gps.time.second()== 07){halt();}
if (gps.time.hour()== 9+0 && gps.time.minute()== 01 && gps.time.second()== 00){zustell();} //hier Zeit einstellen
if (gps.time.hour()== 9+0 && gps.time.minute()== 01 && gps.time.second()== 8){halt();}
if (gps.time.hour()== 010+0 && gps.time.minute()== 01 && gps.time.second()== 00){zustell();} //hier Zeit einstellen
if (gps.time.hour()== 010+0 && gps.time.minute()== 01 && gps.time.second()== 07){halt();}
if (gps.time.hour()== 011+0 && gps.time.minute()== 01 && gps.time.second()== 00){zustell();} //hier Zeit einstellen
if (gps.time.hour()== 011+0 && gps.time.minute()== 01 && gps.time.second()== 07){halt();}
if (gps.time.hour()== 012+0 && gps.time.minute()== 01 && gps.time.second()== 00){zustell();} //hier Zeit einstellen
if (gps.time.hour()== 012+0 && gps.time.minute()== 01 && gps.time.second()== 8){halt();}
if (gps.time.hour()== 013+0 && gps.time.minute()== 01 && gps.time.second()== 00){zustell();} //hier Zeit einstellen
if (gps.time.hour()== 013+0 && gps.time.minute()== 01 && gps.time.second()== 07){halt();}
if (gps.time.hour()== 014+0 && gps.time.minute()== 01 && gps.time.second()== 00){zustell();} //hier Zeit einstellen
if (gps.time.hour()== 014+0 && gps.time.minute()== 01 && gps.time.second()== 8){halt();}
if (gps.time.hour()== 015+0 && gps.time.minute()== 01 && gps.time.second()== 00){zustell();} //hier Zeit einstellen
if (gps.time.hour()== 015+0 && gps.time.minute()== 01 && gps.time.second()== 8){halt();}
if (gps.time.hour()== 016+0 && gps.time.minute()== 01 && gps.time.second()== 00){zustell();} //hier Zeit einstellen
if (gps.time.hour()== 016+0 && gps.time.minute()== 01 && gps.time.second()== 07){halt();}
if (gps.time.hour()== 016+1 && gps.time.minute()== 01 && gps.time.second()== 00){zustell();} //hier Zeit einstellen
if (gps.time.hour()== 016+1 && gps.time.minute()== 01 && gps.time.second()== 07){halt();}
if (gps.time.hour()== 016+2 && gps.time.minute()== 01 && gps.time.second()== 00){zustell();} //hier Zeit einstellen
if (gps.time.hour()== 016+2 && gps.time.minute()== 01 && gps.time.second()== 07){halt();}
if (gps.time.hour()== 016+3 && gps.time.minute()== 02 && gps.time.second()== 00){Morgenstellung();}
}
void displayInfo()
{
Serial.print("Date: ");
if (gps.date.isValid())
{
Serial.print(gps.date.day());
Serial.print(".");
Serial.print(gps.date.month());
Serial.print("/");
Serial.println(gps.date.year());
}
else
{
Serial.println("Nicht verfügbar");
}
Serial.print("Time: ");
if (gps.time.isValid())
{
if (gps.time.hour() < 10) Serial.print(F("0"));
Serial.print(gps.time.hour()+01);
Serial.print(":");
if (gps.time.minute() < 10) Serial.print(F("0"));
Serial.print(gps.time.minute());
Serial.print(":");
if (gps.time.second() < 10) Serial.print(F("0"));
Serial.print(gps.time.second());
}
else
{
Serial.println("Nicht verfügbar");
}
Serial.println();
Serial.println();
}
Gruß
Max