Blinken per Interrupt hat den Vorteil, dass die Blinkfrequenz absolut stabil ist und nicht vom übrigen Sketch beeinflusst wird. Das ist manchmal schon wichtig, aber sowas einem Neuling zu empfehlen, ...
Bin aber auch auf die Erklärung unseres Neumitglieds canique gespannt.
ElEspanol:
Blinken per Interrupt hat den Vorteil, dass die Blinkfrequenz absolut stabil ist und nicht vom übrigen Sketch beeinflusst wird. Das ist manchmal schon wichtig, aber sowas einem Neuling zu empfehlen, ...
Bin aber auch auf die Erklärung unseres Neumitglieds canique gespannt.
Das kann ich erst mal nicht nachvollziehen.
Das erforder somit einen externen Taktgeber.
Aber das macht hier in diesem Fall absolut keinen Sinn.
Ersten, weil Neuling, zweitens weil nur Beispiel ohne jegliche Anforderung an Genauigkeit.
Ich habe allerdings das Gefühl, der Einwurf kommt von einem Teilnehmer, der sich nicht den kompletten Thread durchlesen will.
Einfach nur mal was reinwerfen.
HotSystems:
Das erforder somit einen externen Taktgeber.
Ich dachte eigentlich an einen Timer Interrupt. aber als externen Taktgeber könnte man ja einen Mega nehmen, der per delay den Takt für den Pin Interrupt erstellt.
ElEspanol:
Ich dachte eigentlich an einen Timer Interrupt. aber als externen Taktgeber könnte man ja einen Mega nehmen, der per delay den Takt für den Pin Interrupt erstellt.
Es gib aber noch genauere Taktgeber, die würde ich dann nehmen.
Aber ok, ich weiß bisher noch nicht, warum BLINKEN so genau sein muss.
Das hatte ich als Antwort von canique erwartet.
Ein Delay verbraucht immer Strom weil der Microcontroller dabei vollständig aktiv ist.
Mit einem Interrupt hingegen kann man ggf. in den Schlafmodus wechseln und nur zum Ändern des Blinkstatus aufwachen. Man braucht nicht allzu kompliziert denken in Richtung externer Taktgeber etc. - Arduinos haben ja Timer - die sind für solcher Timer Interrupts gedacht.
Auch die Blinkrate wird durch Nutzen des Timers verbessert - wenn man dazwischen etwas rechenintensives macht, setzt das Blinken aus, wenn mit Delay gearbeitet wird.
Für einen Neuling ist es sicher anspruchsvoll - keine Frage. Aber es ist gut im Hinterkopf zu wissen, dass es bessere Varianten gibt zu blinken. Selbst wenn man es nicht gleich anwendet.
Ein Delay verbraucht immer Strom weil der Microcontroller dabei vollständig aktiv ist.
Mit einem Interrupt hingegen kann man ggf. in den Schlafmodus wechseln und nur zum Ändern des Blinkstatus aufwachen. Man braucht nicht allzu kompliziert denken in Richtung externer Taktgeber etc. - Arduinos haben ja Timer - die sind für solcher Timer Interrupts gedacht.
Auch die Blinkrate wird durch Nutzen des Timers verbessert - wenn man dazwischen etwas rechenintensives macht, setzt das Blinken aus, wenn mit Delay gearbeitet wird.
Für einen Neuling ist es sicher anspruchsvoll - keine Frage. Aber es ist gut im Hinterkopf zu wissen, dass es bessere Varianten gibt zu blinken. Selbst wenn man es nicht gleich anwendet.
sowas einem Neuling vorzuschlagen, der seine Probleme mit Funktionen hat ist böse. So bringst Du unseren Neuling nur durcheinander.
Auf dem Arduino ist soviel Elektronik daß sleepmodus sich nicht auszahlt. Des weiteren gilt das in 1 gesagte. also Doppelböse.
3)[IRONIE] timer; auch etwas vom einfachsten für Anfänger [/IRONIE] das ist die Nächste Bosheit.
Bevor ich einen Neuling von Delay() wegbringen will erklähre ich ihm die Verwendung von millis() und werfe nicht mit sleep, timer und Interrupt herum.
Du solltest vieleicht mal mit Basisgrundlagen von C anfangen.
Einfach nach tutorial C suchen da findest Du zB:
In C ist main() die Startfunktion mit der die Abarbeitung beginnt.
Bei Arduino ist main() versteckt und ruft einmal setup() auf und dann immer wieder loop() auf.
Auch includiert Arduino automatisch viele Bibliotheken und darum braucht es bei einfachen Sketches kein #include