Go Down

Topic: Mehrere Funktionen gleichzeitig ansteuern (Threads)? (Read 2 times) previous topic - next topic

Aquarium


Beschreib doch mal, was Du vorhast. Dann kann man ev. Lösungswege vorschlagen.


Hi zusammen,

also ich möchte im ersten Schritt ein Aquarium ansteuern, und irgendwann ggf. sogar regeln....

Im ersten Schritt habe ich 2 Leuchtquellen und 4 Pumpen, die ich wie folgt starten will:

von 6.00 Uhr bis 6.30 Uhr läuft Leuchte 1
von 6.30 Uhr bis 18.00 Uhr läuft Leuchte 2
von 7.oo Uhr bis 17.00 Uhr läuft Leuchte 1 (zusätzlich)
von 18.00 Uhr bis 19.00 Uhr läuft Leuchte 1 (nochmal)

Zusätzlich soll im Rhythmus von 5 Stunden eine der 4 Pumpen über einen Zufallsgenerator starten.



Ich glaube, ich könnte auch die Millisekunden "counten" und dann mit "if-else" arbeiten und das permanent durchlaufen lassen...

uwefed

Muß da wirklich was GLEICHZEITIG gesteuert werden? Genügt da nicht eine Genauigkeit von einigen Sekunden / Minuten?

Zur Steuerung der Lampen/Pumpen:

Nimm eine RTC, wandle die Zeit (stunden, minuten sekunden) in Sekunden und steuere damit das einschalten bzw asschalten der einzenlen Leuchten / Pumpen.

Grüße Uwe

Aquarium

Ach, auf eine Sekunde, oder 2 kommt es nciht an.

Ich dachte, dass ich, wenn ich den ersten Befehl einschalte, warten muss, bis ich wieder ausschalte...


Was ist RTC ?

J3RE


uwefed


Ach, auf eine Sekunde, oder 2 kommt es nciht an.

Ich dachte, dass ich, wenn ich den ersten Befehl einschalte, warten muss, bis ich wieder ausschalte...


Was ist RTC ?

Es kann nur eine Funktion in einem bestimmten Zeitpunkt ausgeführt werden, der "Zeitpunkt" ist aber sehr kurz.
zB
Code: [Select]
loop ()
{
  if (time >lampe1an1 && time < lampe1aus1&&statuslampe1==0;)
   {
   digitalWrite(lampe1,HIGH);
   statuslampe1=1;
   }
  if (time > lampe1aus1&&statuslampe1==1;)
   {
   digitalWrite(lampe1,LOW);
   statuslampe1=0;
   }
...
}

braucht zur Ausführung weniger als 1mS und schaltet die Lampe 1 zur Zeit lampe1an ein und zur Zeit lampe1aus aus. Es können viele solcher if- Bedingungen im loop() stehen.

Grüße Uwe



Go Up