Arduino timer?

6 Antworten

Schau mal beim Arduino nach Interrupten und dem Timer1 nach.

Den Timer1 kannst Du z.B. auf 5 Sekunden Interrupte parametrieren. Dann zählst Du in der Interruptroutine die Interrupte.

Einmal machst Du da was nach 4 Interrupten, einmal nach 36 Interrupten. 

In der normalen Loop kannst Du dann ganz normale andere Dinge machen lassen. So was über eine Delay zu steuern ist möglich, aber ..........

Schau Dir auch mal das Beispiel Arduino Verkehrsampel an...

Schau dir in der Arduino IDE das blink without delay Beispiel an.

Wenn du meinst er soll eine Verzögerung haben, ist der Befehl
delay();
In die Klammer kommt die Zeit in Millisekunden

xdanix77  31.10.2017, 10:16

Dann steht er währenddessen aber komplett, kann also während den Zeiten nichts machen. Wenn es wirklich nur ums blinken geht kein Problem, sobald es aber etwas komplexer wird ist ein delay denkbar schlecht. 

0
Niknik2000  31.10.2017, 10:17

was meinst du mit “komplexer“?

0
xdanix77  31.10.2017, 10:22
@Niknik2000

Alles was über eine einfache Aufgabe raus geht, selbst einfachste Berechnungen, Sensorauswertungen oder mehrere "parallele"  Aufgaben. Während einem delay ist komplett Pause. 

0
Niknik2000  31.10.2017, 10:24

mach doch einen delay zwischen der Berechnung und dem Zeigen. Und in parallelen Aufgaben immer der gleiche delay bei allen zum gleichen Zeitpunkt

0
xdanix77  31.10.2017, 10:40
@Niknik2000

Dann verzögert sich nur die Ausgabe der Berechnung um den Wert. 

So funktioniert das nicht. Dann macht er eine Aufgabe nach der anderen und wartet dazwischen noch zusätzlich. 

0
Niknik2000  31.10.2017, 10:45

Und was genau willst du erreichen?

0
xdanix77  31.10.2017, 10:52
@Niknik2000

Ich garnichts, ich sage nur das die delay-Funktion bereits bei leicht komplexen Projekten nicht wirklich sinnvoll ist, vor allem wenn es um 3-Minuten-Pausen geht. In den 3 Minuten kann der Arduino nämlich absolut nichts anderes machen, außer man nutzt ein Interrupt. 

0

Ich würde auf die milis-Funktion zurückgreifen, dann kann der Arduino währenddessen noch andere Sachen machen. Google einfach mal nach "arduino milis timer", sollte alles erklären.