Frage zu Millis im Loop - ESP32
|
21.11.2020, 14:03
(Dieser Beitrag wurde zuletzt bearbeitet: 21.11.2020 14:04 von Stargazer.)
Beitrag #1
|
|||
|
|||
![]()
Hallo Zusammen,
ich sitze immer mal wieder an einem Problem, was wahrscheinlich keines ist. Der limitierende Faktor sitzt wahrscheinlich wieder vor dem Bildschirm. Darum wollte ich mein Problem hier einmal posten. Und zwar hatte ich mit dem ESP32 und dem BLEScan - Beispiel etwas rumgespielt und dort eine Anwesenheitserkennung mit einem G-Tag gebastelt. Dieser wird per MAC erkannt und gibt derzeit nur einen Text im seriellen Monitor aus. Später soll das vielleicht mal einen Garagentoröffner ergeben ![]() Nun habe ich das ganze so im loop geregelt, dass er alles über die Millis - Funktion abhandelt. Ein delay kommt da nicht gut, da er später eine einfache Website anzeigen soll. Doch diese wird dann nicht mehr ordentlich aufgebaut. Darum bleibe ich bei millis. Soweit so gut. Nun soll er, wenn er die MAC erkannt hat, eine millis - Schleife auch erst dann starten. Aber...da bin ich anscheinend zu doof zu. Hier mal der Code, worum es geht: Code: if (Pausenzeit == 1) Die variable Pausenzeit wird mit dem erkennen des G-Tags auf 1 geschaltet. Dann soll das ganze Geraffel starten. Aber nur dann. Mein Problem liegt mit dem Hauptaugenmerk auf der Pausenzeit = 0;. Diese deaktiviert die Schleife dann wieder, das ist mir bewusst. da habe ich schon irgendwie alles durchprobiert. Entweder läuft die Schleife dann normal mit und das permanent. Oder aber nur einmal..und dann nie wieder, obwohl die variable auf 1 steht. Die variable "Hilfsschalter" ist nur für das "wieder scharf schalten" vorgesehen. Kann mir jemand eine Säge zu meinem Brett vor dem Kopf reichen ? Vielen Dank an euch... |
|||
21.11.2020, 15:27
Beitrag #2
|
|||
|
|||
RE: Frage zu Millis im Loop - ESP32
Ohne die Deklaration der Variablen zu kennen, kann man nur raten.
Sind die beteiligten Variablen alle unsigned long? Warum machst Du erst eine Pause, wenn Du die Pausenzeit setzen willst? Ich verstehe Deine Logik nicht. Gruß Tommy "Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt) |
|||
21.11.2020, 16:04
Beitrag #3
|
|||
|
|||
RE: Frage zu Millis im Loop - ESP32
Ich könnte mir vorstellen, dass die Variable, in der du die MAC zwischenspeicherst, nicht gelöscht wird und deswegen die Pausenzeit immer wieder direkt auf 1 setzt...
Gruß Jan |
|||
21.11.2020, 16:20
Beitrag #4
|
|||
|
|||
RE: Frage zu Millis im Loop - ESP32
Hi,
also... Die variablen der Pausenzeit und der Schaltpause sind beide int. currentMillis is eine unsigned long. Die MAC wird zuverlässig nur einmal erkannt und auch in keiner variable übernommen. Ich müsste eigentlich nur sehen, dass er die millis - Schleife nur einmal abarbeitet. Nämlich so lange wie Pausenzeit = 1 ist. So die Vorstellung. Ist dann die millis - Schleife abgearbeitet, setzt sie die Pausenzeit wieder auf 0 und würde dann warten, bis die Pausenzeit wieder 1 wird. Das wäre genau das, was ich bräuchte. |
|||
21.11.2020, 16:58
(Dieser Beitrag wurde zuletzt bearbeitet: 21.11.2020 17:01 von MicroBahner.)
Beitrag #5
|
|||
|
|||
RE: Frage zu Millis im Loop - ESP32
(21.11.2020 16:20)Stargazer schrieb: Ich müsste eigentlich nur sehen, dass er die millis - Schleife nur einmal abarbeitet. Nämlich so lange wie Pausenzeit = 1 ist.Wo ist da eine millis Schleife? Ich sehe nur ein if. Und wenn das einmal abgearbeitet wird, wird auch 'Pausenzeit' wieder auf 0 gesetzt, und das wars dann. Solange Du nur dieses Fragement zeigst, kann man da gar nichts weiter sagen. Gruß, Franz-Peter |
|||
27.12.2020, 06:41
(Dieser Beitrag wurde zuletzt bearbeitet: 27.12.2020 06:44 von N1d45.)
Beitrag #6
|
|||
|
|||
RE: Frage zu Millis im Loop - ESP32
(21.11.2020 14:03)Stargazer schrieb: ... Wie von anderen schon angemerkt, ist dein Code Beispiel keine Schleife. Es besteht nur aus zwei IF, also WENN -> DANN. Vermutlich meinst du mit Schleife den gesamten LOOP Teil. Wenn die Variable Pausenzeit den Wert 1 hat, ist die Erste Bedingung erfüllt, und der darin folgende Code wird ausgeführt. Die Zweite Bedingung arbeitet mit einem Größenvergleich von millis und Schaltpause. Das nicht ausführen dieser Bedingung, bedeutet das dieser Codeabschnitt entweder nie erreicht wird, da du evtl. Irgendwo anders im Code in einer Schleife hängen bleibst, oder der Vergleich der Bedingung nie wahr wird. Daher ist der komplette Code wichtig, um nachvollziehen zu können, welchen Wert die anderen Variablen haben. Und um zu erkennen, warum du evtl. diesen Code Abschnitt nie erreichst. Edit: Sorry, hab jetzt erst das Datum gesehen. Wollte keine Toten wecken. |
|||
|
|
Möglicherweise verwandte Themen... | |||||
Thema: | Verfasser | Antworten: | Ansichten: | Letzter Beitrag | |
ESP32 Lora Wetterdaten | 4711engel | 27 | 1.053 |
Heute 20:14 Letzter Beitrag: Bitklopfer |
|
Fehler beim Kompilieren für das Board ESP32 Dev Module. | FoxFactoy | 5 | 167 |
Gestern 23:38 Letzter Beitrag: Bernd666 |
|
ESP32 / DeepSleep / Akkulaufzeit ? | Steinspiel | 23 | 593 |
27.02.2021 20:20 Letzter Beitrag: Steinspiel |
|
ESP32 über OTA | luemar | 67 | 3.353 |
23.02.2021 22:55 Letzter Beitrag: hotsystems |
|
ESP32 und HC05 | gk_1 | 5 | 698 |
22.02.2021 10:53 Letzter Beitrag: gk_1 |
|
![]() |
esp32 Cam Blynk | Busterflex | 1 | 203 |
21.02.2021 02:15 Letzter Beitrag: rev.antun |
ESP32: Sensor via GPIO deaktivieren | DivingJoe | 21 | 982 |
18.02.2021 22:15 Letzter Beitrag: hotsystems |
|
Erfahrungen mit ESP32 und WLAN/MQTT oder was ich beobachtet habe... | Arduino4Fun | 22 | 2.247 |
08.02.2021 15:34 Letzter Beitrag: ardu_arne |
|
ESP32 BT Master | MarcelN | 1 | 1.038 |
08.02.2021 01:34 Letzter Beitrag: Corvus |
|
ESP32 Mail Client | stefan.hild@t-online.de | 20 | 1.179 |
06.02.2021 22:16 Letzter Beitrag: Corvus |
Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste