"Bobbycar LED" - 2 Fragen (Mehrere Taster: Unterprog. Abbrechen / Einfacher "Code" ?)
|
07.03.2020, 13:58
Beitrag #9
|
|||
|
|||
RE: "Bobbycar LED" - 2 Fragen
(07.03.2020 09:44)KlausGuenther schrieb: Nur jetzt wäre ja Denkbar, z.B. die Funktion für das Warnblinken sehr sehr lange zu machen und aber die Möglichkeit zu haben, dann durch einen Tastendruck in eine andere Funktion zu wechseln. Hi KlausGuenter, mal so von Anfänger zu Anfänger - du verstehst anscheinend noch nicht, wie ein ESP(&co) arbeitet. Das sind sehr schnelle und dumme yC. Die Intelligenz sitzt vor dem Monitor. Wenn du einen Sketch schreibst wird der von Anfang bis Ende abgearbeitet. Oben deklarierst du was alles benutzt wird. Der Block "void setup() " wird einmal beim Start abgearbeitet. Der Block "void loop" wird danach immer wieder im Kreislauf abgearbeitet. Böse Falle: delay(1000) = im Klartext "stell dich(ESP) für 1 sec tot! Du als Programmierer must jetzt dem ESP "Intelligenz" bei bringen. Wenn du einen Taster deklariert & initialisiert hast - dann kannst du in loop die Abfrage "Taster gedrückt" benutzen um einen neuen Block z.B. "void taster1gedrueckt()" anzuspringen. Dieser Block wird dann abgearbeitet, zum Punkt des Absprungs zurückgekehrt und mit der nächsten Codezeile weiter gemacht. Zu "Böse Falle": wenn du Signale verarbeitest, dann stell dir vor am Ende von void loop() steht delay(10000) = spiel 10 sec tot. Wenn in dieser Zeit ein Signal (Taster?) herein bekommst dann merkt der ESP das überhaupt nicht! - Anfang delay(10000) - nach 0,5 sec Signal "Taster gedrückt" - nach 2,8 sec Signal "Taster los gelassen" - nach 10 sec macht er mit der nächsten Anweisung weiter Um programmieren zu können musst du schon dein menschliches "was will ich" in computerisch übersetzen können. Denk dran "dumm aber schnell". Diesen Text könnte man evtl. als "anmaßend" verstehen. Ist aber garantiert nicht so gemeint! Ich hoffe das bringt dir ein bisschen Verständnis WIE ein ESP(&co) arbeitet. ESP32 Anfänger mit Migrations-Hintergrund (komme von RasPi & Python) ![]() Gruß aus Franken Dietmar |
|||
10.03.2020, 21:30
Beitrag #10
|
|||
|
|||
RE: "Bobbycar LED" - 2 Fragen
(07.03.2020 13:58)db91595 schrieb: Diesen Text könnte man evtl. als "anmaßend" verstehen. Doch, habe ich alles genau so verstanden, Du nur offensichtlicht nicht wo mein Problem liegt. Mir stellen sich gerade als Anfänger nur sehr sehr viele Fragen, aber das Netzt ist mal wie so oft keine schnell einfache Hilfe sondern das gegenteil. Nachdem ich das Nachtwächter bespiel mal einfach so just for fun durchgearbeitet habe und die LED´s hier munter vor sich hin beblinkt haben, stehe ich nach wie vor vor dem Problem, dass ich zum Beispiel einen Sketch A schreiben kann, bei dem die LED´s langsam blinken (in Rot) und einen Sketch bei bei dem dann alles schnell in Blau blinkt. Der Loop läuft auch anstandslos durch, wenn also eine Blinksequenz durchgelaufen ist, kann ich anstandslos eine andere starten. Nur halt nicht von der einen in die andere springen. Und das mit OHNE delay(). Es scheint also noch andere Dinge zu geben, die verhindern, dass man mal eben so auf einen Tasterdruck reagieren kann obwohl es noch "blinkt". Und by the way, der Text ist anmaßend. |
|||
10.03.2020, 22:03
(Dieser Beitrag wurde zuletzt bearbeitet: 10.03.2020 22:04 von Tommy56.)
Beitrag #11
|
|||
|
|||
RE: "Bobbycar LED" - 2 Fragen
Wenn Du die Hinweise von db91595 schon als anmaßend empfindest, mag ich Dir ja fast keine Hinweise mehr geben.
Ich versuche es mal trotzdem, wenn es Dir nicht gefällt, kann ich es auch nicht ändern. Dein Ansatz "Eine Funktion auf Tastendruck zu beenden" ist grundlegend falsch. Jede Deiner Funktion muss gleich am Anfang prüfen, ob sie etwas zu tun hat. Wenn nicht zurückkehren. Wenn ja dann schnell ohne irgendwelche Blockierungen die Aktion durchführen (z.B. LED umschalten) und raus. Damit kann immer im loop auf Eingaben reagiert werden, weil der loop im Millisekundenabstand immer wieder abläuft. Das ist die Basis, in die Du umdenken musst. Gruß Tommy "Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt) |
|||
10.03.2020, 22:16
(Dieser Beitrag wurde zuletzt bearbeitet: 10.03.2020 22:20 von db91595.)
Beitrag #12
|
|||
|
|||
RE: "Bobbycar LED" - 2 Fragen
Danke Tommy, du warst (wieder mal) schneller.
(10.03.2020 21:30)KlausGuenther schrieb: Mir stellen sich gerade als Anfänger nur sehr sehr viele Fragen, aber das Netzt ist mal wie so oft keine schnell einfache Hilfe sondern das gegenteil. Dazu verweise ich auf die Signatur von Tommy. Das ist NUR ein Spruch - aber absolut treffend. Edit: JEDER, der hier Antworten auf Fragen gibt - macht das unentgeltlich und freiwillig. ESP32 Anfänger mit Migrations-Hintergrund (komme von RasPi & Python) ![]() Gruß aus Franken Dietmar |
|||
19.03.2020, 13:57
Beitrag #13
|
|||
|
|||
RE: "Bobbycar LED" - 2 Fragen
(10.03.2020 22:16)db91595 schrieb: Dazu verweise ich auf die Signatur von Tommy. Ich habe mich gefragt ob ich darauf Antworten möchte. Das Zitat ist meiner Meinung nach so falsch das nicht mal das gegenteil stimmt. hotsystems hat mich letzten Ende auf die richtige Spur gebracht, dazu herzlichen Dank! Es läuft! Sollte darüber hinaus jemand noch Gedanken teilen möchte wie man Dinge vereinfachen kann...ich baue das gerne ein und stelle den Sketch dann noch mal ein. Ich habe jetzt noch nicht alles durchprogrammiert, aber Lichthupe, Wanrblinklicht und Blaulicht funktionieren, damit sollte jeder eine Basis haben, die erst mal für jeden LED/Streifen/Platine funktioniert. Evtl. muss man hier und da noch Anzahl der LED´s anpassen, aber das sollte ja kein Thema sein. Der sketch schaltet also erst mal Licht ein (Vorne Weiss, hinten rot), ermöglicht eine Lichthupe, Warnblinklicht (alle Orange) und Blaulicht (alle Blau). Das ganze auf Basis der ClickButton.h und Adafruit_Neopixel.h Bibliothek. Verwendet habe ich zur Steuerung einen nodeMCU ESP32, 2 Stück Adafruit NeoPixel Jewel RGBW und 2 Stück RGB. Man kommt also vom "Licht" in den Warnblinkmodus oder Blaulicht oder quer durcheinander, wie man mag. Code: #include "ClickButton.h" |
|||
19.03.2020, 14:09
Beitrag #14
|
|||
|
|||
RE: "Bobbycar LED" - 2 Fragen
(19.03.2020 13:57)KlausGuenther schrieb: Ich habe mich gefragt ob ich darauf Antworten möchte. Das Zitat ist meiner Meinung nach so falsch das nicht mal das gegenteil stimmt.Seltsame Art der Beweisführung, aber wenn es Dich glücklich macht ... Du verwendest für alle Lichtarten ein gemeinsames previousMillis. Ist das bewußt so realisiert? Gruß Tommy "Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt) |
|||
|
|
Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste