Solar-Nachführung

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

Re: Solar-Nachführung

Beitrag von Max »

Hallo Franz,

entschuldige aber ich wusste es nicht, dass das Teil defekt ist,
habe versäumt vorher zu messen.
Dir auch schöne und BIT-freie Weihnachten.
Gruß
Max
Benutzeravatar
Admin
Administrator
Beiträge: 1199
Registriert: Mo 20. Apr 2020, 09:47
Wohnort: 82441 Ohlstadt
Kontaktdaten:

Re: Solar-Nachführung

Beitrag von Admin »

Kein Problem. Auch beim Spannung messen denkt man ja noch es ist in Ordnung. Da misst man 20 Volt. Nur bei aller kleinster Belastung gehts runter bis Null. :)

Aber OK. so habe ich mir jetzt wenigstens einen Schubs gegeben und ein Panel bestellt :(oo):

Hast du dein Programm getestet?

Schöne Weihnachten
Franz :(V):
Benutzeravatar
Admin
Administrator
Beiträge: 1199
Registriert: Mo 20. Apr 2020, 09:47
Wohnort: 82441 Ohlstadt
Kontaktdaten:

Re: Solar-Nachführung

Beitrag von Admin »

Wie schauts aus`Weihnachten gut verbracht und Neujahr in Angriff genommen?

Grüße
Franz

PS: Und klappts mit dem Programm, oder ist noch was anzupassen?
Max
Beiträge: 78
Registriert: Di 27. Sep 2022, 17:37
Kontaktdaten:

Re: Solar-Nachführung

Beitrag von Max »

Hallo Franz,

Dir wünsche ich noch ein gutes und gesundes
neues Jahr und viel Erfolg.

Das mit dem Solarprogramm mit Millis
habe ich leider nicht hinbekommen, die Ports haben
nicht durchgeschalten und die Steuerzeiten passten nicht.
Nun verwende ich das Programm

Code: Alles auswählen

// Programm zur Solarsteuerung mit DS 3231 Modul

#include "RTClib.h"
#define DS3231_I2C_ADDRESS 0x68
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__))); // nur bei Uhr stellen verwenden!!
  }
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();
}
Damit läuft grad meine Testanlage bisher Fehlerfrei.
Wichtig ist nur, dass nach der Zeitjustierung dieser Satz rausgenommen wird.
// rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); // nur bei Uhr stellen verwenden!!
Grüße aus dem Allgäu
Max
Benutzeravatar
Admin
Administrator
Beiträge: 1199
Registriert: Mo 20. Apr 2020, 09:47
Wohnort: 82441 Ohlstadt
Kontaktdaten:

Re: Solar-Nachführung

Beitrag von Admin »

Einen schönen Guten Tag im neuen Jahr :(V):

OK, seltsam. Das Programm läuft bei mir am Nano mit der DS3231 nach deinen Vorgaben. Die Ports sind bei mir natürlich nur mit LEDs beschalten, und der Endkontakt ist bei mir ein Taster. Aber alles ist so, dass du das Programm nur aufspielst und es läuft.

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

Re: Solar-Nachführung

Beitrag von Admin »

Kannt du bitte mal ganz genau beschreiben was falsch läuft und wie es richtig laufen müßte.

Wir reden offenbar irgendwie total aneinander vorbei :O:
Max
Beiträge: 78
Registriert: Di 27. Sep 2022, 17:37
Kontaktdaten:

Re: Solar-Nachführung

Beitrag von Max »

Hallo,

zur Zeit habe ich alle meine Zeitmodule im Einsatz, sodass ich deinen
Programmvorschlag nicht weiter testen kann.
Letztin beim Testen haben die Motorports nicht durchgeschalten, sodass
sich der Motor nicht bewegte. Die LED's haben zwar leicht geleuchtet aber
der L298N hat nicht durchgeschalten.
Nun habe ich festgestellt, dass ich das Freifahren vom Endschalter mit dem DS3231 Modul
komischer Weise nicht benötige. Das heißt, dass auch keine Verweilzeiten benötigt werden.
Ich vermute, dass bei der GPS gesteuerten Anlage die Pausenzeiten in der
#include <TinyGPSPlus.h> das Problem des Endschalter überfahrens waren.
Dein Vorschlag mit dem DS3231 Modul zu arbeiten hat mir sehr weitergeholfen. :idea:
Damit läuft gerade eine meiner beiden Solaranlagen und meine Testanlage mit dem
von mir zuletzt geposteten Programm.

Gruß
Max
Benutzeravatar
Admin
Administrator
Beiträge: 1199
Registriert: Mo 20. Apr 2020, 09:47
Wohnort: 82441 Ohlstadt
Kontaktdaten:

Re: Solar-Nachführung

Beitrag von Admin »

Max hat geschrieben: Di 3. Jan 2023, 18:11 Letztin beim Testen haben die Motorports nicht durchgeschalten, sodass
sich der Motor nicht bewegte. Die LED's haben zwar leicht geleuchtet aber
der L298N hat nicht durchgeschalten.
Hey Max.
OK, heißt das, dass auch bei der normalen Zeitsteuerung am Tag nicht weitergedreht wurde? .... oder nur beim Rücklauf am Abend?

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

Re: Solar-Nachführung

Beitrag von Admin »

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. :(o): :(o): Die Led´s haben nur leicht geleuchtet, weil dein Programm den Motor eingeschalten hat, und mein Zusatz den Motor sofort wieder ausgeschalten hat. :(o): :(o): 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
  }
  //-----------------------------------------------------------------------------
}
Max
Beiträge: 78
Registriert: Di 27. Sep 2022, 17:37
Kontaktdaten:

Re: Solar-Nachführung

Beitrag von Max »

Servus Franz,

jetzt glaube ich hab ich's.
Zunächst habe ich die 2. Millis-Pause und den 3 Sek. Freilauf rausgenommen
und dann nach der Endschalterbetätigung alles auf LOW gesetzt.
Jetzt stoppt beim Rücklauf bei einer fehlerhaften Endschalter- Betätigung nach der
eingegebenen Zeit (60 sec) der Rücklauf, sodass der Motor nicht unkontrolliert weiterläuft.

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;

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, LOW);
    MotorR = 0;
  }
  //------------------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
  }
  //-----------------------------------------------------------------------------
 
}
Nun muß ich das Programm in meiner Testanlage noch eingehend testen (mit und ohne Endschalter)
und auch noch die nötige Überlaufzeit messen und im Programm ändern.
Danke Dir für deine Mühen mit mir.
Gruß
Max
Antworten

Zurück zu „Hardware / Schaltungstechnik“

Wer ist online?

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