ESP32: Warum ist es sinnvoll, auf "delay()" zu verzichten und "millis()" anzuwenden?

2 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet

Mit millis kann man währenddessen noch andere Dinge machen, bei Delay kann man nur eine Sache gleichzeitig machen, weil das Programm angehalten wird, aber mit millis kann man zb in einem Timer oder Intervall noch andere Dinge ins Programm schreiben, die gleichzeitig passieren

Woher ich das weiß:eigene Erfahrung – Spieler.

Die Verwendung von millis() ist sinnvoll, da delay() den gesamten Programmablauf blockiert. Wenn der delay() aktiv ist, pausiert der Mikrocontroller alle anderen Funktionen, wodurch keine parallelen Aufgaben ausgeführt werden können. Wenn gleichzeitig Sensoren ausgelesen, Eingaben verarbeitet oder andere zeitkritische Aufgaben erledigt werden müssen, kann dies problematisch sein. Im Gegensatz dazu ist millis() nicht-blockierend. Es ermöglicht, die verstrichene Zeit seit Programmstart zu messen, ohne den Programmfluss zu unterbrechen. Dies erlaubt die Implementierung von Aufgaben wie das Blinken einer LED in einem Zeitintervall, während andere Prozesse weiterlaufen. Beispielsweise könnte eine LED alle 500 ms blinken, während gleichzeitig ein Temperatursensor ausgelesen und eine serielle Kommunikation verarbeitet wird. millis() ermöglichen Multitasking-fähige Programme Flexibilität und Effizienz an. Bei Projekten mit mehreren parallelen Aufgaben ist millis() am geeignetsten.