Guten Tag miteinander,
ich bin neu im Forum und auch bei Arduino. Ich habe die vergangenen Stunden versucht folgendes Problem für mich zu lösen:
Ich habe einen Sensor, dieser soll, wenn er den Gegenstand erkennt, einen Pneumatikzylinder zum ausfahren bewegen, ist er wieder unbelegt, soll dieser einfahren, soweit so einfach. Nun möchte ich aber gerne, dass dies zeitverzögert stattfindet:
Sensor erkennt Gegenstand -> Zeit vergeht (500-1000 ms/ variabel) -> Ventil an/ Zylinder fährt aus und bleibt ausgefahren
Wenn der Gegenstand entfernt wird, geht der Sensor aus -> Zeit vergeht (500-1000 ms/ variabel) -> Ventil aus/ Zylinder fährt ein
Mit delay ist das ganze kein Problem, leider will ich parallel noch weitere Signale auswerten, weshalb ich es mir nicht "leisten" kann, dass das Programm unterbrochen wird.
Im Forum bin ich bereits beim Blink without delay Tutorial gelandet, habe mir einige Varianten hier im Forum angesehen, ist allerdings alles nicht so ganz was ich will. Außerdem kann ich die Gleichung nicht nachvollziehen. Ich möchte besser verstehen, wie genau das mit millis funktioniert:
Aus folgendem Thread: Wie zeitliche Abläufe ohne delay() einfach gestalten? - Deutsch - Arduino Forum
void loop()
{
unsigned long currentMillis = millis();
if(ledState == HIGH && currentMillis - previousMillis > intervalon ) {
previousMillis = currentMillis;
ledState = LOW;
digitalWrite(ledPin, ledState);
}
da steht doch (angenommen current millis ist 10000 und intervalon 1000) 10000-0>1000 dadurch wäre das doch sofort erfüllt und der timmer sinnfrei? Wenn man immer nur hin und her blinken will mag das ja gehen, ab ich will ja das eine Funktion zeitverzögert einschalten, bzw ausschalten, wie muss ich den code ändern damit das geht? Müsste ich previousMillis dann davor schon = currentMillis setzen?
Für den Fall das meine Fragen dumm eirscheinen, ich hab irgendwie nen Knoten im Hirn, komme eigentlich aus der SPS Richtung und habe gerade erst mit C/C++ angefangen und bei ner SPS is dat mit der Zeit, zumindest mal für mich, auf den ersten Blick einfacher gelöst
Kann sein das ich dadurch aber auch vorprogrammiert bin und mir das umschalten schwer fällt.
Vielen Dank im vorraus für eure Hilfe 