Hallo Martin,
ich habe erst heute Deine Nachricht gelesen.
Ich nutze das GPS-Modul in meinem Wetterstations-Programm insbesondere,
um den Regensensor um Mitternacht wieder zurückzusetzen.
Die Frage dabei ist ja immer, wieviel Regen ist am Tag gefallen.
Ich habe Dir mal einen Auszug aus meinem Stationsprogramm beigelegt,
allerdings nur die GPS-betreffenden Zeilen.
Es war anfangs auch für mich etwas schwierig, den GPS-Empfang zu verarbeiten.
Mit meinen im Beispiel gegebenen Programmzeilen ging es dann ohne Probleme.
Zusätzlich habe ich zur Umschaltung Sommer-Winterzeit ein Unterprogramm
geschrieben, das im beiliegenden Programmcode als Kommentar aufgerufen wird,
aber nicht beiliegt.
Vielleicht hilft Dir mein Beispiel weiter oder Du hast inzwischen eine
eigene Lösung gefunden.
Gruß, Raimund
Hier mein Programm-Auszug:
// GPS_aus_Wetter_AKT.ino
// ## ----- GPS -----
// Sensor-Type: u-blox CAM-M8Q (mit Stuetzbatterie)
// Anschluss: I2C
//
#include <TinyGPS++.h> // GPS (I2C)
#include <SenseBoxMCU.h> // SenseBox-Main-Control-Unit
// ===== Variablen-Vorbesetzungen ==============
// ----- G P S ----------------------------------
// GPS wird insbesondere zur Mess-Zeitraum-Festlegung
// fuer Regensensor genutzt:
GPS gps_Empfaenger; // GPS-Empfaenger
int GPS_Jahr = 0;
int GPS_Monat = 0;
int Monat_alt = 0;
int GPS_Tag = 0;
int GPS_Stunde = 0;
int So_Wi_Stunde = 0;
int GPS_Minute = 0;
int GPS_Sekunde = 0;
int Sekunde_vorher = 0;
// ===== Ende Variablen-Vorbesetzungen =========
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// +++++ S E T U P +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
void setup ()
{
// GPS
gps_Empfaenger.begin ();
}
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// +++++ L O O P +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
void loop ()
{
// ########## G P S #########
// Start-Bedingung zum erstmaligen GPS-Empfang
GPS_Tag = 0;
while ( GPS_Tag == 0 )
{
gps_Empfaenger.getGPS();
GPS_Tag = gps_Empfaenger.getDay ();
}
// Sekunde zum nächst-maligen Empfang von GPS-Daten
while ( GPS_Sekunde == Sekunde_vorher )
{
gps_Empfaenger.getGPS();
GPS_Sekunde = gps_Empfaenger.getSecond ();
}
Sekunde_vorher = GPS_Sekunde;
// restliche Zeit-Daten
GPS_Minute = gps_Empfaenger.getMinute ();
GPS_Stunde = gps_Empfaenger.getHour ();
//Datum
GPS_Tag = gps_Empfaenger.getDay ();
GPS_Jahr = gps_Empfaenger.getYear ();
GPS_Stunde = gps_Empfaenger.getHour ();
// bisherigen Monat festhalten
Monat_alt = GPS_Monat;
// aktuellen Monat holen
GPS_Monat = gps_Empfaenger.getMonth ();
/*
// Sommer- und Winterzeit mit 00:00 Uhr
// ==> bei 0:00 MEZ / MESZ: Zeitintervall Regenmessung neu starten (WippAnz = 0)
So_Wi_Stunde = Sommer_Winterzeit_WippAnzReset ( GPS_Monat,
GPS_Minute,
GPS_Sekunde );
*/
Serial.print ( GPS_Tag ); Serial.print ( "." );
Serial.print ( GPS_Monat ); Serial.print ( "." );
Serial.print ( GPS_Jahr );
Serial.print ( " --- " );
Serial.print ( GPS_Stunde ); Serial.print ( ":" );
Serial.print ( GPS_Minute ); Serial.print ( ":" );
Serial.print ( GPS_Sekunde );
//Serial.print ( " +++ SoWi h = " ); Serial.println ( So_Wi_Stunde );
// ########## G P S #########
// =========================================================
// ===== Info-Seite #0 - Datum =============================
// =========================================================
// Datum auf Display anzeigen
Datum_Zeit_anzeigen ( GPS_Jahr,
GPS_Monat,
GPS_Tag,
So_Wi_Stunde,
GPS_Minute );
}
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// +++++ UNTERPROGRAMME +++++++++++++++++++++++++++++++++++
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
void Datum_Zeit_anzeigen ( int par_Jahr,
int par_Monat,
int par_Tag,
int par_Stunde,
int par_Minute)
{
Serial.println ( "##### Datum_Zeit_anzeigen #####" );
Serial.print ( par_Tag ); Serial.print ( "." );
Serial.print ( par_Monat ); Serial.print ( "." );
Serial.print ( par_Jahr );
Serial.print ( " --- " );
Serial.print ( par_Stunde ); Serial.print ( " : " );
Serial.println ( par_Minute );
//warten ( millis (), 700 );
}