Jortox:
wie würde das denn dann aussehen? Kan mir das nicht vorstellen und kan nix gescheites finden was gut aussieht. hast du vielleicht einen link zu deinem projekt?
Ich habe meine Beitrag zum Thema Servos auch nicht mehr gefunden. Hab Dir aber mal die Schrittkette rauskopiert. So wie das jetzt da steht sollte es aber laufen.
zwischen Case und break kommt dann das was Du machen willst. Messen Ventil auf zu hier wird halt immer nur für unterschiedliche Zeiten gewartet bis es weitergeht. Das ist ja aber bei Dir ähnlich .
Gruß Heinz
// Realisierung einer Schrittkette als Grundgerüst für eine Ablaufsteuerung
// Weiterschalt Bedingung next =TRUE
// in diesem Beispiel wird als Weiterschaltbedingung lediglich eine eine
// Wartezeit verwendet.Dazu gibts die function warte die
// TRUE zurückliefert wenn die Wartezeit abgelaufen ist.
boolean next; // Bedingung zum weiterschalten der Schrittkette
int schritt; // Schrittzähler
int maxschritt = 5 ; // Anzahl max Schritte
void setup() {
Serial.begin(9600);
next = true;
}
void loop() {
if (next) {
schritt++;
Serial.print("Schritt--"); Serial.print(schritt);
Serial.println();
if ( schritt > maxschritt) { // Reset fang wieder von vorne an
schritt = 0;
}
}
switch (schritt) { // Schrittkette auswerten
case 1:
next = warte(1000); // warte 1000ms
break;
case 2:
next = warte(2000);
break;
case 3:
next = warte(3000);
break;
case 4:
next = warte(4000);
break;
}
}// loop ende
// ==================Funktionen ================
// Warte Zeit / Pause
bool warte(uint16_t dt) {
unsigned long static alt_t;
bool static flag;
if (!flag) { // Flanke erkennen und Timer resetten
flag = true;
alt_t = millis();
}
if (millis() - alt_t > dt) { // abfrage auf Zeit abgelaufen
flag = false; // wenn abgelaufen flankenmerker zurück setzten und
return true; // Function mit true verlassen
}
else { // wenn noch nicht abgelaufen function mit false verlassen
return false;
}
}
Nachtrag
@postmaster
Danke für den Hinweis hab das geändert und wünschgemäß optimiert und kommentiert