Hallo zusammen,
es funktioniert soweit recht gut!
Aber folgende probleme:
- was muss ich da noch dazu schreiben muss um kmh zu haben?
void draw(float lat, float lon, unsigned long l_date, unsigned long l_time, float f_alt)
(ich habe bei KM/H jetzt einfach nur als "platzhalter" den höhen wert hingeschrieben)
-
Bei uhr steht nur : AM mehr nicht.....
-
wie bekomme ich stat 2 nach koma stellen 4 bei längen und breiten grad?
#include <SoftwareSerial.h>
#include <TinyGPS.h>
#include <U8glib.h>
#include <Wire.h>
#include <TimeLib.h>
U8GLIB_ST7920_128X64 u8g(13, 11, 10, U8G_PIN_NONE);
SoftwareSerial mySerial(0, 1);
TinyGPS gps;
static const uint32_t GPSBaud = 9600;
void gpsdump(TinyGPS &gps);
void printFloat(double f, int digits = 2);
void setup()
{
Serial.begin(9600);
// set the data rate for the SerialPort(use SoftwareSerial port on Arduino UNO)
delay(1000);
u8g.setFont(u8g_font_unifont);
u8g.firstPage();
do {
u8g.setPrintPos(35, 20);
u8g.print("Welcome ");
u8g.setPrintPos(55, 40);
u8g.print("to");
u8g.setPrintPos(15, 60);
u8g.print("your journey");
} while ( u8g.nextPage() );
}
//This function converts a unix time to a String in the format HH:MM PM
String time_to_string(unsigned long int t) {
String buf;
if (hour(t) > 12) {
buf = two_digit(hour(t)-12) + ":" + two_digit(minute(t)) + " PM";
}
else{
buf = two_digit(hour(t)) + ":" + two_digit(minute(t)) + " AM";
}
return buf;
}
//returns string from int with preceding 0 if the integer is only one digit long
String two_digit(int digits) {
if (digits < 10) {
return "0" + digits;
}
else {
return digits + "";
}
}
void draw(float lat, float lon, unsigned long l_date, unsigned long l_time, float f_alt) {
u8g.setFont(u8g_font_6x10);
u8g.firstPage();
do {
u8g.setPrintPos(0, 32);
u8g.print("Lat: ");
u8g.print(lat); // latitude
u8g.setPrintPos(0, 42);
u8g.print("Long: ");
u8g.print(lon); // longitude
u8g.setPrintPos(0, 10);
u8g.print("Datum: ");
u8g.print(l_date); // date(ddmmyy, UTC 0)
u8g.setPrintPos(0, 22);
u8g.print("Uhr: ");
u8g.print(time_to_string(l_time+9.5*3600));
u8g.setPrintPos(0, 62);
u8g.print("Alt: ");
u8g.print(f_alt); // altitude(m)
u8g.setPrintPos(0, 52);
u8g.print("KM/H: ");
u8g.print(f_alt); // altitude(m)
} while ( u8g.nextPage() );
}
void loop() // run over and over
{
bool newdata = false;
unsigned long start = millis();
float flat, flon, falt;
unsigned long date, time, age;
// Every 2 seconds we print an update
while (millis() - start < 5000) {
if (Serial.available() && gps.encode(Serial.read())) {
newdata = true;
// break; // uncomment to print new data immediately!
}
}
if (newdata) {
gps.f_get_position(&flat, &flon, &age);
gps.get_datetime(&date, &time, &age);
falt = gps.f_altitude();
draw(flat, flon, date, time, falt);
}
}