Hallo zusammen,
ich habe ein kleines Problem, bei dem ich Eure Hilfe bräuchte.
An meinem kleinen Modell-Garagentor ist eine LED angebracht, die 2,5 Sek. bevor das Tor
aufgeht anschaltet.
Auf Knopfdruck (IR-FB) geht das Tor auf (dauert ein paar Sekunden).
Danach sollte die LED noch ein paar Sekunden weiter leuchten und wieder aus gehen.
Leider komme ich beim "Weiterleuchten und ausgehen" nicht weiter.
Folgenden Code habe ich verwendet (funktioniert mit LED an -> Motor starten) ohne Probleme.
Nur das folgende "Weiterleuchten und Ausgehen" will nicht klappen:
case 0xFF629D: // UP button pressed
digitalWrite(led1, HIGH); // LED geht an
delay(2500);
for (pos = 84.5; pos >= 14.2; pos -= 1)
{
servogarage.write(pos); // Servo öffnet Garage
delay(100);
}
break;
So nur umgekehrt beginnt dann auch das Tor schließen...
Vielen Dank erstmal,
Chris
Hi
Mir düngt, Das ist nicht der ganze Code - nun denn.
-
delay() ist böse
-
Was hält Dich davon ab, hinter dem delay(100); eine weitere Wartezeit einzusetzen, damit die LED noch Nachleuchtet, um Diese dann auszuschalten?
-
Der umgekehrte Weg dann für die andere Fahrtrichtung.
Davon ab: Was soll's eigentlich werden und wie soll's funktionieren?
Vll. ergeben sich 'bessere' Möglichkeiten, Das umzusetzen.
MfG
Schau dir doch einmal Blinck without delay an. Danach sollte schon einiges verständlicher sein.
Was spricht denn gegen ein
case 0xFF629D: // UP button pressed
digitalWrite(led1, HIGH); // LED geht an
delay(2500);
for (pos = 84.5; pos >= 14.2; pos -= 1)
{
servogarage.write(pos); // Servo öffnet Garage
delay(100);
}
delay(2000); // noch 2 Sekunden weiter leuchten
digitalWrite(led1,LOW); jetzt LED ausschalten
break;
Das ist zumindest die einfache Lösung. Es muss meiner Meinung nach nicht immer das BlinkWithoutDelay sein, wenn der Sketch nur eine einzige Aufgabe hat.
Klar ist das dann universeller einsetzbar, aber wenn es ein einfaches Problem ist, darf es auch mal eine einfache Lösung sein.
Als Erweiterung wäre aber z.B. denkbar das die LED 2,5 Sekunden vor dem Tor öffnen anfängt zu blinken, während das Tor geöffnet (oder auch geschlossen wird) weiter blinkt und noch 2 Sekunden nach dem Öffnen / Schliessen blinkt, ehe auch die LED ausgeht. Das wäre nachdem der erste Teil funktioniert eine schöne Aufgabe sich mit den Nebenläufigkeiten zu beschäftigen.
Mario.
Hallo
bei dem was wir das sehen passiert ja folgendes
Du erkennst die Taste der Fernbedienung
Led einschalten
2,5 sekunden nix machen der Uno macht pause und auch dein übriges programm geht nicht mehr
den Servo langsam von 85 auf 14 grad fahren
wie soll dann wann die LED wieder ausgehen du must sie schon irgendwann auch wieder ausschalten
Es ist ja schon angesprochen worden schau dir das Beispiel Blink without delay an und verwende für deine Wartezeiten besser millis()
Hi
Nebenher gefragt: Was machen die Komma-Grade in der FOR?
Was denkst Du, kommt am Servo davon an?
MfG
PS: persönlich wäre ich auch für eine Lösung ohne delay ... aber Jedem, wie Er will.