Nur wenn etwas nicht stimmt soll er blinken.
Du kannst die if Bedingung auch komplizierter formulieren, wenn nötig.
&& ist z.B. ein logisches UND
Nur wenn etwas nicht stimmt soll er blinken.
Du kannst die if Bedingung auch komplizierter formulieren, wenn nötig.
&& ist z.B. ein logisches UND
Biber1983:
Warum ist das so und lässt sich das ohne delay überhaupt lösen???
Natürlich läßt sich das ohne delay lösen. Mit millis().
Schau Dir das Beispiel (IDE->Beispiele->Digital->BlinkWithoutDelay) mal an, wenn Du eine größere If Verzweigung machst könnte das evtl soausschauen:
loop() {
if(sensor > wert1) {
}
else if(sensor < wert2 && wasAuchImmer == true) {
}
// usw...
else { // Wenn kein if zutrifft, soll es ja blinken.
if (millis() - previousMillis >= interval) {
// siehe BlinkWithoutDelay
}
}
}
Für den Anfang... Du kannst ja gerne noch fragen wenn etwas unklar ist.
Grüße,
Donny
ok also erst mal danke, inzwischen raucht mein Kopf.
eine Frage hätte ich noch, wie kriege ich jetzt am einfachsten hin das es nur blinkt wenn keine der vorherigen Anweisungen zutrifft?
Das mit dem BlinkWhitoutDelay würde mir ja da auch nicht weiterhelfen, oder?
Biber1983:
eine Frage hätte ich noch, wie kriege ich jetzt am einfachsten hin das es nur blinkt wenn keine der vorherigen Anweisungen zutrifft?Das mit dem BlinkWhitoutDelay würde mir ja da auch nicht weiterhelfen, oder?
Oja, Du kannst zwar eine LED mit delay() blinken lassen aber nicht wenn nebenbei noch etwas wie einen Taster abfragen willst!
Mit delay() wird das Programm fast komplett unterbrochen, das bedeutet im Grunde das der Code an der Stelle steht und nichts weiter passiert bis die Zeit abgelaufen ist. Es gibt kein Multitasking bzw. muss man sich das selber stricken.
Grüße,
Donny
Das sind 2 Fragen.
BlinkWithoutDelay ist die Antwort auf "Eingänge lesen während es blinkt".
Und millis() ist nur ein Teil der Antwort. Sketch komplett anders denken: die Zeilen von loop beschrieben nicht den zeitlichen Ablauf nacheinander, sondern alle möglichen Reaktionen für jeden Moment.
Die andere Frage beantwortet sich mit
void loop () {
// Sensoren und Kontakte erfassen
// Klappe fahren.
if ( alleBedingungenGruen) {
// Led grün an, rot aus
}
else if ( alleBedingungenRot) {
// Led rot an, grün aus
}
else if ( alleBedingungenAus ) {
// beide Led aus
}
else {
// Blinken
}
"Klappe fahren " könnte eine ähnliche Logik haben.
Hallo,
@Bieber
ist Dir die Aufgabenstellung eigendlich noch ganz klar. ? Mir nicht nicht mehr so ganz. Ich denke Du must das einfach noch mal auch gedanklich grob gliedern. Zudem müsstes Du den stepper Motor irgendwie anhalten können wenn er oben bzw. unten ankommt. Na ja wenn mechanisch nichts kaputt gehen kann kann er ja auch einfach mechanisch block fahen und seine Schritte im Stillstand abtackern.
Eigendlich sind das doch zwei verschiedene Aufgabe einmal Motor steuern und zum Anderen die LED , ich würde das auch nicht miteinander vermischen und unabhängig voneinander betrachten. Man kann das dann in zwei Programm-Blöcken oder eigenen Funktione unterbrignen. Damit wird das dann schön überschaubar. Das hat zudem den Vorteil das Du Dir mit einer Änderung in einem Pogrammteil nicht zusätzlich einen Fehler in dem anderen einfängst.
es ist hell und ES-Taster oben ist nicht betätigt dann hoch fahren.
es ist dunkel und ES-Taster unten ist nicht betätigt dann runter fahren
ES-Taster oben betätigt und es ist hell grüne LED an ( eindeutig richtig)
ES-Taster unten betätigt und es ist dunkel grüne LED aus (eindeutig richtig)
sonst grün blinken Fehlstellung oder Klappe ist dazwischen
ES-Taster unten betätigt und es ist dunkel rote LED an (eindeutig richtig )
ES-Taster oben betäigt und es ist hell rote LED aus (eindeutig richtg)
sonst rote LED blinken Fehlstellung oder Klappe ist dazwischen
ok, ich werde mich jetzt einfach mal hinsetzen und alle Vorschläge durchgehen.
Das war jetzt fast ein bisschien viel. ;D Mein Kopf raucht schon.
Auf jeden Fall mal ein herzliches Danke für eure Hilfe.
Ich geb Feedback wenn ich mich entschieden habe.