Hallo,
ich versuche mich gerade an der µC Programmierung mit einem Arduino Nano um mir eine Wetterstation zu basteln. Aktuell habe ich schon alle möglichen Messwerte, kämpfe aber noch mit dem Wind:
Habe einen Windsensor der Mittels Reed-Kontakt durchschaltet, hier zähle ich die Umdrehungen, anhand der Umdrehungen kann ich die Windgeschwindigkeit umrechnen - würde mir aber auch gerne die Böen anzeigen lassen.
Habe dazu auch ein Code-Beispiel gefunden, leider blicke ich hier nicht durch (umschreiben und kopieren würde wahrscheinlich schon klappen, möchte aber den größten Teil selbst schreiben und auch den Gedankengang dazu, speziell zu dieser Funktion, verstehen).
Quelle bzw. Auszug: blog.kkessler.com/2012/06/21/sparkfun-weather-station/
Wieso wird hier anem_min zwei mal ein Wert zugewiesen, und vor allem warum ein statischer? Wozu die Variable "time"?
Und auch aus dem Rückgabe-Wert werde ich nicht schlau... Auch hier wieder nur konstante Werte?
Irgendwie weiß ich nicht was ich übersehe - aber gut: Bin ja noch Anfänger...
Vielen Dank im Voraus für etwaige Hilfestellungen!
Edit: Mein persönlicher Ansatz wäre ja etwas wie: ein Array erstellen welches die Windgeschwindigkeit alle 12 Sekunden mitschreibt, 10 Werte lang.
Dort schleife ich mich einfach durch die einzelnen Positionen und kann somit erstens locker den Durchschnitt als auch den Maximal-Wert (der letzten zwei Minuten) bestimmen.
Ist zwar recht viel Code aber einfach(er) zu verstehen?
ich versuche mich gerade an der µC Programmierung mit einem Arduino Nano um mir eine Wetterstation zu basteln. Aktuell habe ich schon alle möglichen Messwerte, kämpfe aber noch mit dem Wind:
Habe einen Windsensor der Mittels Reed-Kontakt durchschaltet, hier zähle ich die Umdrehungen, anhand der Umdrehungen kann ich die Windgeschwindigkeit umrechnen - würde mir aber auch gerne die Böen anzeigen lassen.
Habe dazu auch ein Code-Beispiel gefunden, leider blicke ich hier nicht durch (umschreiben und kopieren würde wahrscheinlich schon klappen, möchte aber den größten Teil selbst schreiben und auch den Gedankengang dazu, speziell zu dieser Funktion, verstehen).
Quellcode
- #define WIND_FACTOR 2.4
- #define TEST_PAUSE 60000
- volatile unsigned long anem_count=0;
- volatile unsigned long anem_last=0;
- volatile unsigned long anem_min=0xffffffff;
- double getGust()
- {
- unsigned long reading=anem_min;
- anem_min=0xffffffff;
- double time=reading/1000000.0;
- return (1/(reading/1000000.0))*WIND_FACTOR;
- }
Quelle bzw. Auszug: blog.kkessler.com/2012/06/21/sparkfun-weather-station/
Wieso wird hier anem_min zwei mal ein Wert zugewiesen, und vor allem warum ein statischer? Wozu die Variable "time"?
Und auch aus dem Rückgabe-Wert werde ich nicht schlau... Auch hier wieder nur konstante Werte?
Irgendwie weiß ich nicht was ich übersehe - aber gut: Bin ja noch Anfänger...
Vielen Dank im Voraus für etwaige Hilfestellungen!
Edit: Mein persönlicher Ansatz wäre ja etwas wie: ein Array erstellen welches die Windgeschwindigkeit alle 12 Sekunden mitschreibt, 10 Werte lang.
Dort schleife ich mich einfach durch die einzelnen Positionen und kann somit erstens locker den Durchschnitt als auch den Maximal-Wert (der letzten zwei Minuten) bestimmen.
Ist zwar recht viel Code aber einfach(er) zu verstehen?
Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „ery“ ()