Hi, ich möchte einen Datenlogger mit einem Arduino Micro bauen und hätte folgende Frage: Der Datenlogger soll nur Daten aufzeichnen, so lange ein Taster gedrückt ist. Ich hab mir jetzt schon einige Tutorials durchgelesen, wollte aber euch fragen, was ihr für die elegantere Methode haltet: - Interruptgesteuert Problem dabei: Ich möchte die Daten in einem Intervall von 1s aufzeichnen. In sind meines Wissens jedoch die Funktionen delay() und millis() nicht verfügbar... Gibt es hier andere Möglichkeiten? - Ständige Abfrage im void loop() Ich würde durch eine Abfrage "if (state == HIGH)" immer Abfragen ob der Taster gerade gedrückt ist. (und natürlich wie der Status im vorigen Zeitschritt war). Was haltet ihr davon? Gibt es bessere Ansätze? Danke für eure Hilfe! lg
programmiere einen timerinterrupt so, dass er 1x pro sekunde auslöst. in der ISR fragst du den taster ab. wenn ungedrückt, nichts machen. wenn gedrückt, messen und loggen.
Joe F. schrieb: > programmiere einen timerinterrupt so, dass er 1x pro sekunde > auslöst. > dann fragst du den taster ab. wenn ungedrückt, nichts machen. wenn > gedrückt, messen und loggen. Danke, das finde ich sehr elegant!
du hast dann halt bis zu 1s verzögerung von tastendruck bis messung. wenn das stört, programmierst du den timer isr z.b auf 100x pro sek. in der isr zählst du einen counter hoch, aber nur wenn taster gedrückt. bei counter==1: messen & loggen. wenn taster nicht gedrückt, oder counter==100: counter auf 0 setzen. das delay von tasterdruck zu 1. messung ist dann max. 1/100s
Wobei mir gerade einfällt: delay() wird doch eigentlich durch den Timer des ATmega32U4 erzeugt. Also eigentlich ist ein "richtiger" Timerinterrupt doch gleichbedeutend wie wenn ich das Programm mit delay() pausiere, oder?
wenn die 1s nicht exakt 1s sein muss geht auch delay(). die zeit fürs messen und loggen macht den zyklus entsprechend länger.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.