millis statt delay (deutsch)

Поделиться
HTML-код
  • Опубликовано: 1 фев 2025

Комментарии • 20

  • @osobaopeyemi2915
    @osobaopeyemi2915 3 года назад

    sehr gut erklärt!!! Danke für die Visualisierung

  • @CNCPRINTBLOGSPOT
    @CNCPRINTBLOGSPOT Год назад

    Sehr gut erklärt, thx. Baue das direkt in meinen automatischen fensteröffner ein 🙂

  • @holgerseltmann4644
    @holgerseltmann4644 2 года назад

    Sehr gut erklärt, Danke

  • @darioblazevic2904
    @darioblazevic2904 3 года назад

    Perfekt erklärt!

  • @tablebraker4167
    @tablebraker4167 2 года назад

    Nice ! Vielen Dank!

  • @kasekuchentv7869
    @kasekuchentv7869 2 года назад

    Dadurch, dass die LED immer umgeschaltet wird, könnte es zu einer Verschiebung kommen, falls durch andere Vorgänge im Hintergrund mal mehr als eine halbe Periode übergangen wird. Natürlich ist die LED nur ein Beispiel für eine Anwendung, aber um etwas blinken zu lassen, ist es einfacher, mit dem Modulo Operator zu arbeiten: if(millis() % periodendauer > halbePeriodendauer) {} else {}.
    Um die Modulo Operation zu vermeiden, kann man auch eine Bitweise Operation verwenden. Das begrenzt natürlich die realisierbaren Frequenzen auf Zweierpotenzen, jedoch beschleunigt es den Code enorm: if(millis() & (1

  • @atrox3d511
    @atrox3d511 3 года назад

    Super erklärt.

  • @MrBlade83
    @MrBlade83 3 года назад

    sehr gut! danke!

  • @wolfgangh.7027
    @wolfgangh.7027 2 года назад

    Unsigned long Rechenoperationen sind schon recht "Arbeitsintensiv" für den Prozessor. Mit jedem Vergleich wird in diesem Beispiel zusätzlich eine -Subtraktion durchgeführt. Wenn ich einmal den Vergleichswert ausrechnen lasse, dann nur noch vergleichen lasse (in der if-Abrage), ist dann die Belastung des Prozessors nicht geringer? Bei sehr rechenintensiven Aufgaben könnte das eine Rolle spielen, denke ich.

    • @Klimafutzi
      @Klimafutzi Год назад

      Integer Operationen (plus minus ==) sind NICHT arbeitsintensiv, auch nicht bei "Long". Multiplikation und besonders Division dagegen schon mehr.
      Solange du nicht mit Zeiten im einstelligen Mikrosekunden Bereich zu tun hast, spielt das keine Rolle.
      Wenn du wie vorgeschlagen die Differenz nur einmalig ausrechnen lässt, funktioniert die Wartefunktion nicht, da du ja du dann ja nicht mehr die vergangenen Millisekunden mitbekommst.

  • @DoubleDee2000
    @DoubleDee2000 2 года назад

    Wie kann man mit der Methode eine LED in unterschiedlichen Längen blinken lassen. Z.B eine Sekunde an zwei Sekunden aus 3 Sekunden an und eine Sekunde aus?

    • @Klimafutzi
      @Klimafutzi Год назад +1

      Die Antwort von mir, kommt ein wenig spät, aber vielleicht ist sie ja trotzdem zumindest noch interessant.
      Also, um unterschiedliche Wartezeiten zu realisieren, kann man z.B. die Variable "Intervall" durch ein Array austauschen und über einen weiteren Zähler die jeweils gewünschte Wartezeit einstellen. D.h. in der if Abfrage würdest du abhängig vom aktuellen Zustand nach dem Umschalten auf die jeweils gewünschte nächste Wartezeit umstellen.
      Stelle dir Beispielsweise eine Ampel vor, in der du 3 verschiedene LEDs schaltest (Rot, Gelb, Grün, Rot + Gelb). Du hast in dem Fall 4 Takte (siehe Klammer).
      Dann kannst du ein Array "Wartezeit" anlegen in dem du die Wartezeit pro Takt einträgst und in der Variablen "Takt" zählst du die Takte hoch (von 0 bis 3). Bei jedem Umschaltvorgang erhöhst du "Takt" um eins und wenn Takt == 4 ist, setzt du Takt auf 0 zurück. Abhängig von "Takt" schaltest du die entsprechende LED ein, bzw. in Takt 3 schaltest du die LEDs Rot und Gelb ein.

  • @ReX_PL_DE
    @ReX_PL_DE 3 года назад +1

    Ein Video mit zwei Sensoren und millis wäre super.

    • @jonathankremer9229
      @jonathankremer9229 3 года назад

      Das wäre für mich auch hilfreich. Ich habe 6 Sensoren Pumpe und Displays die versorgt werden müssen. Ich hoffe das ich mit millis machbar.

    • @ReX_PL_DE
      @ReX_PL_DE 3 года назад

      @@jonathankremer9229 Ich hab lange probiert. Habe jetzt so um die acht Sensoren und die laufen mit millis. Meine Lösung ist: "über Setup" kommt
      long timer = 0;
      und
      unsigned long myTime;
      in void loop() { kommt:
      if(millis() - timer > 1000){
      Hier kannst Du die 1000 ändern. Das sind die Millisekunden. Ganz am ende des Code kommt das hier:
      //Millis Timer
      Serial.print("Time: ");
      myTime = millis();
      Serial.println(myTime);
      Serial.println("");

      timer = millis();

      delay(1000);
      }
      }
      So kannst Du auch sehen ob der Timer von Arduino Start weiter läuft oder neu startet nach loop.

  • @j.ybeats9673
    @j.ybeats9673 3 года назад

    Danke Gert was mir nicht ganz klar ist warum negierst du denn wert von 1 auf 0 ?

    • @kling0n3
      @kling0n3 3 года назад

      Ich nehme einfach mal an, dass _statusLED_ gemeint ist.
      Dadurch wird erreicht, dass immer der gegenteilige Zustand an der LED ausgegeben wird:
      statusLED = true → ausschalten;
      statusLED = false → einschalten.
      Dadurch wird einfach ermöglicht, dass die LED blinkt.
      Mit der Nutzung der millis()-Funktion hat das übrigens nichts zu tun.

  • @ernestomodi561
    @ernestomodi561 Год назад

    ich arbeite mit dem arduino uno; statusLed muss initialisiert werden; boolean statusLed=0;"unsigned long int" kennt mein arduino nicht; "unsigned long" kennt mein arduino. nach diesen Veränderungen funktioniert dieses Programm, danke

  • @drohneyde4989
    @drohneyde4989 3 года назад

    gut erklärt ...
    Aber geh nächstes mal dichter an dein Mikrophone.
    Das Video war sehr leise.
    Mfg.

  • @jandemir2157
    @jandemir2157 3 года назад

    schlecht erklärt !!!