Solar-Nachführung

Max
Beiträge: 78
Registriert: Di 27. Sep 2022, 17:37
Kontaktdaten:

Re: Solar-Nachführung

Beitrag von Max »

Hallo Franz,

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();

}
Schönes Wochenende
Gruß
Max
Benutzeravatar
Admin
Administrator
Beiträge: 1197
Registriert: Mo 20. Apr 2020, 09:47
Wohnort: 82441 Ohlstadt
Kontaktdaten:

Re: Solar-Nachführung

Beitrag von Admin »

Hey Max.
Heute hatten wir viel Besuch, weil die Tochter Geburtstag hatte. Aber morgen schaue ich mir das mal an.

Servus
Franz
Benutzeravatar
Admin
Administrator
Beiträge: 1197
Registriert: Mo 20. Apr 2020, 09:47
Wohnort: 82441 Ohlstadt
Kontaktdaten:

Re: Solar-Nachführung

Beitrag von Admin »

Hey Max.

Mal zur Info für mich.
1. Du holst dir laufend in jedem Loopdurchgang die Uhrzeit von GPS ?
2. Du fährst jede Stunde 7-8 Sekunden weiter in Sonnenverlaufs-Richtung ?
3. Du fängts um 08:00 Uhr morgens damit an ?
4. Du gehts um 19:00 Uhr in die Morgenstellung ?
5. Und GPS geht nicht, mit der Erweiterung von mir ?

Habe ich das mal soweit kappiert ? Oder ist irgend was von de 5 Punkten, die ich hier schreibe, nicht richtig ?

Franz
Benutzeravatar
Admin
Administrator
Beiträge: 1197
Registriert: Mo 20. Apr 2020, 09:47
Wohnort: 82441 Ohlstadt
Kontaktdaten:

Re: Solar-Nachführung

Beitrag von Admin »

if (gps.time.hour() == 016 + 3 && gps.time.minute() == 02 && gps.time.second() == 00)
{
Morgenstellung();
}

Du springst eine Sekunde lang aus dem Loop in die "Morgenstellung" und dann ist es vorbei. Der Motor kann also nie in die Morgenstellung laufen. So wie ich das Programm jetzt überblicke. Das Programm "Morgenstellung" muss so lange immer wieder aus dem Loop angesprungen werden, bis alles abgefahren wurde. Also bis die 1,5 Min. abgelaufen sind und bis danach auch noch die 3 Sekunden Motor rechts gelaufen sind.

Franz
Benutzeravatar
Admin
Administrator
Beiträge: 1197
Registriert: Mo 20. Apr 2020, 09:47
Wohnort: 82441 Ohlstadt
Kontaktdaten:

Re: Solar-Nachführung

Beitrag von Admin »

Ich bin mir nicht sicher, weil ich es nicht testen kann. Habe die <TinyGPSPlus.h> Lib nicht. Aber kannst ja das hier mal testen.

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; // 1,5 Minuten
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 = 0;
//-----------------------------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 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) {
    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 (MotorLinks, HIGH);
    MotorL = 1;
    MotorStart = 2;
    pausestartzeit01 = aktuellezeit; // Eine Minute Abschaltung starten
  }
  //---------------------------------------------------------------------------
  //------------------------Endschalter Kontrolle------------------------------
  Ende = digitalRead(Endschalter);
  if (Ende == 0)
  {
    digitalWrite (MotorLinks, LOW);
    MotorL = 0;
    digitalWrite (MotorRechts, HIGH);
    MotorR = 1;
    pausestartzeit02 = aktuellezeit; // Drei Sekunden Abschaltung starten
  }
  //------------------60000 Aktion---------------------------------------------
  if (aktuellezeit - pausestartzeit01 >= pausezeit01) // Eine Minute abgelaufen??
  {
    digitalWrite (MotorRechts, LOW);
    MotorR = 0;
    digitalWrite (MotorLinks, LOW);
    MotorL = 0;
    Motorstart = 0;
  }
  //-----------------------------------------------------------------------------
  //------------------3000 Aktion----------------------------------------------
  if (aktuellezeit - pausestartzeit02 >= pausezeit02) // Drei Sekunden abgelaufen??
  {
    digitalWrite (MotorRechts, LOW);
    MotorR = 0;
    Motorstart = 0;
  }
  //-----------------------------------------------------------------------------
}

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();

}
Max
Beiträge: 78
Registriert: Di 27. Sep 2022, 17:37
Kontaktdaten:

Re: Solar-Nachführung

Beitrag von Max »

Hallo Franz,

danke für deine Mühen.

Falls ich morgen dazu komme (habe grad viele Termine) werde ich das Programm
in meiner Testanlage aufspielen und testen.
Ich dachte, wenn ich ein Unterprogramm "Morgenstellung" aufrufe, dann wird das
abgefahren aber das funktioniert bei Millis wohl nicht so? ;)
Naja, ist halt doch etwas komplizierter als ich dachte :roll:

Grüße aus dem Allgäu
Max
Benutzeravatar
Admin
Administrator
Beiträge: 1197
Registriert: Mo 20. Apr 2020, 09:47
Wohnort: 82441 Ohlstadt
Kontaktdaten:

Re: Solar-Nachführung

Beitrag von Admin »

Max hat geschrieben: Mo 28. Nov 2022, 16:43 Ich dachte, wenn ich ein Unterprogramm "Morgenstellung" aufrufe, dann wird das
abgefahren aber das funktioniert bei Millis wohl nicht so? ;)
Hi Max.
Kein Problem. Das ist ja der Grund für das Forum.
Ja, bei Millis muss es in jedem Loopdurchgang immer wieder angefahren werden, weil es eben nicht blockiert. "Nicht blockierend" heißt dass das Programm nicht gestoppt wird, bis alles abgearbeiet ist, sondern es wird immer wieder durchfahrern, macht da ein paar Tackte seine Arbeit, und der Loop läuft unten wieder raus, um andere Dinge im Loop tun zu können. Es wird alles nur "im vorbeigehen" gemacht. Es wird nicht gewartet, bis die Zeit abgelaufen ist, sondern es wir bei jedem Durchlauf (also alle paar Millisekunden) kontrolliert, ob die Zeit abgelaufen ist, oder ob ein Schalter betätigt wurde, oder sonst was. Wenn das so ist, löst es die Reaktion darauf aus, dann läuft das Programm schon wieder unten raus. Das könnten wir mal besprechen, wenn du mal Zeit hast. Es ist immer gut, wenn man weiß was da wie laufen muss. Es gibt zwei Möglichkeiten für solche Programmteile. Entweder es ist im Loop, oder man hat einen Zeiger im Loop, der in jedem Loopdurchlauf kontrolliert wird, ob das Programm angesprungen werden soll.

Franz

PS: Das kleine Programmchen mit der Morgenstellung, was wir da gemacht haben, ist eigentlich idial um mal jede Stufe durchzusprechen, im Programm zu sehen, so dass man dann genau weiß was da abläuft und warum. Dann kann man auch größere Zusammenhänge locker aufbauen. Wenn mans mal kappiert hat, ist es plötzlich total Easy und man kann damit locker umgehen.
Max
Beiträge: 78
Registriert: Di 27. Sep 2022, 17:37
Kontaktdaten:

Re: Solar-Nachführung

Beitrag von Max »

Servus Franz,

der erste Test hat schon mal nicht funktioniert,
das Programm springt gleich zu Beginn in den Rückfahrmodus, also
in Richtung "Morgenstellung"aber ignoriert den Reedkontakt.
Komisch nur, im Einzelprogramm ohne Einbindung in "Solarsteuerung_GPS"
funktioniert alles optimal.
Weitere Versuche habe ich nun nicht mehr unternommen, ich muß
in meinem 12V System grad stromsparen, keine Sonne und kein Wind.
Vielleicht sollte ich
" Ende = digitalRead(stopp);
if (Ende == 0)"
auf Ende ==1) umstellen aber eigentlich sollte ja das GPS Modul zuerst starten. :xx:
Eigentlich kein Grund zum Aufregen, die Programme in den produzierenden Anlagen
funktionieren ja. Es war ja nur ein Versuch mit Millis.
Gruß
Max
Benutzeravatar
Admin
Administrator
Beiträge: 1197
Registriert: Mo 20. Apr 2020, 09:47
Wohnort: 82441 Ohlstadt
Kontaktdaten:

Re: Solar-Nachführung

Beitrag von Admin »

Max hat geschrieben: Do 1. Dez 2022, 18:31 der erste Test hat schon mal nicht funktioniert,
das Programm springt gleich zu Beginn in den Rückfahrmodus, also
in Richtung "Morgenstellung"aber ignoriert den Reedkontakt.
Hi Max.
OK, dann schaue ich mir das nochmal an. Warte mal so lange. Und hast du genau das Programm verwendet das ich hier reingestellt haben? Ohne was zu ändern?

Danke
Franz
Max hat geschrieben: Do 1. Dez 2022, 18:31 .... aber eigentlich sollte ja das GPS Modul zuerst starten. :xx:
Ja, so ist es. Muß ich mal anschauen.
Benutzeravatar
Admin
Administrator
Beiträge: 1197
Registriert: Mo 20. Apr 2020, 09:47
Wohnort: 82441 Ohlstadt
Kontaktdaten:

Re: Solar-Nachführung

Beitrag von Admin »

Also ein Punkt ist oben in der Deklaration.

Code: Alles auswählen

//-----------------------------Merker Deklarieren------------------------------
byte MotorR = 0;
byte MotorL = 0;
byte Ende = 0;
byte MotorStart = 0;
Da steht in deinem Programm noch MotorStart = 1;
Das musst du ändern auf MotorStart = 0;

Diese Eins habe ich im Testprogramm gebraucht, weil ich ja den Auslöser der bei dir im GPS auf "16 + 3" steht, nicht hatte. Aber dass es auf den Schalter nicht reagiert wundert mich :eek: Ich kann mir nur vorstellen dass dein Schalter keinen Minus auf den Pin.4 Schaltet, sondern einen Plus, der da nichts hilft. Also auf jeden Fall "MotorStart = 0; ändern, sonst läuft der Motor sofort nach Programmstart los!

Ich habe dein Schaltung mal abgeändert, wie es sein muss:
.
Max_Schalter_aenderung.jpg
Max_Schalter_aenderung.jpg (461.68 KiB) 623 mal betrachtet
Antworten

Zurück zu „Hardware / Schaltungstechnik“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste