Hallo Zusammen,
bisher habe ich nur ganz simple sachen mit delay gesteuert, aber ich will eigentlich dass ich zyklen mit eigenen zeiten unabhängig voneinander laufen lassen kann. Ich habs mal mit chat gpt versucht aber das was der mit gibt, haut nicht hin, obwohl es sich erstmal logisch liest. Was ist denn falsch daran? Wäre dankbar für eine einfache und schnelle lösung für eine eigentlich einfache aufgabe.
(alternativ habe ich halt immer recht lange dinger mit delays geschrieben, wobei ich halt immer die einzelnen schaltkreise zerstückelt habe und zwischenrein wieder den anderen geschalten habe, aber das ist so umständlich. (Also zb. 1ein, 2ein 1aus, 3ein, 4ein, 2aus, 1ein, 3aus, 1aus, 4aus, 1ein, 2ein....))
// Pin-Definitionen
int relais1Pin = 9;
int relais2Pin = 8;
// Schaltzeiten für Relais 1
const int relais1EinZeit = 1000; // Zeit in ms, während das Relais eingeschaltet ist
const int relais1AusZeit = 1000; // Zeit in ms, während das Relais ausgeschaltet bleibt
// Schaltzeiten für Relais 2
const int relais2EinZeit = 1000; // Zeit in ms, während das Relais eingeschaltet ist
const int relais2AusZeit = 2000; // Zeit in ms, während das Relais ausgeschaltet bleibt
// Variablen zur Speicherung der Zeiten
unsigned long relais1EinStartzeit = 0;
unsigned long relais1AusStartzeit = 0;
unsigned long relais2EinStartzeit = 0;
unsigned long relais2AusStartzeit = 0;
void setup() {
// Pin-Modi setzen
pinMode(relais1Pin, OUTPUT);
pinMode(relais2Pin, OUTPUT);
}
void loop() {
unsigned long jetzt = millis();
if (jetzt - relais1AusStartzeit >= relais1AusZeit) {
digitalWrite(relais1Pin, HIGH); // Relais einschalten
relais1EinStartzeit = jetzt; // Startzeit für Einschaltzeitpunkt setzen
}
// Schaltzyklus für Relais 1
if (jetzt - relais1EinStartzeit >= relais1EinZeit) {
digitalWrite(relais1Pin, LOW); // Relais ausschalten
relais1AusStartzeit = jetzt; // Startzeit für Ausschaltzeitpunkt setzen
}
// Schaltzyklus für Relais 2
if (jetzt - relais2EinStartzeit >= relais2EinZeit) {
digitalWrite(relais2Pin, LOW); // Relais ausschalten
relais2AusStartzeit = jetzt; // Startzeit für Ausschaltzeitpunkt setzen
}
if (jetzt - relais2AusStartzeit >= relais2AusZeit) {
digitalWrite(relais2Pin, HIGH); // Relais einschalten
relais2EinStartzeit = jetzt; // Startzeit für Einschaltzeitpunkt setzen
}
}