Agyvérzés kerülget, nem jövök rá, hogy hogy kellene megoldanom.
A feladat: adott ideig egy kimenet magas, majd alacsony, ha kell akkor még 1x-2x-ugyan ez, majd egy adott idő letelte után egy másik kimenet kell, hogy magas, majd alacsony szinten legyen. Delay()-el már megoldottam, de nem jó, mert a köztes kimenetek befolyásolják a másik kimenet kezdő időpontját. Valami olyasmire gondoltam, hogy megy folyamatosan a loop, vagy egy do{}while(); de nem sikerült. Nekem az lenne fontos, hogy a kezdés, és az expoDelay közötti időben bárhol tudjak egy-kettő adott ideig tartó magas kimenetet generálni. Nem tudom, hogy jól, értetően tudtam -e elmondani. Talán a mostani kód(részlet) segít egy picit. Nem kérek kész kódot, csak iránymutatást. A segítséget előre is köszönöm. Üdv.: Roland
Kód: Egész kijelölése
expoDelay = round(sqrt(tmpMath1) * 1000) + drop1size - drop2delay - drop2size - drop3delay - drop3size + expoCorrection;
void loop() {
server.handleClient();
button.update();
if ( button.pressed() ) {
server.stop();
delay(1000);
digitalWrite(ledPin, LOW);
Serial.println("Server stopped");
//start dropping
//drop1
digitalWrite(valvePin, HIGH);
delay(drop1size);
digitalWrite(valvePin, LOW);
//GAP for drop2
if (drop2delay > 0) {
delay(drop2delay);
}
//drop2
if (drop2size > 0) {
digitalWrite(valvePin, HIGH);
delay(drop2size);
digitalWrite(valvePin, LOW);
}
//GAP for drop3
if (drop3delay > 0) {
delay(drop3delay);
}
//drop3
if (drop3size > 0) {
digitalWrite(valvePin, HIGH);
delay(drop3size);
digitalWrite(valvePin, LOW);
}
delay(expoDelay);
digitalWrite(expoPin, HIGH);
delay(500);
digitalWrite(expoPin, LOW);
digitalWrite(ledPin, HIGH);
server.begin();
Serial.println("Server started");
}
}