Ich hoffe ich hab hier den richtigen Bereich erwischt, sonst bitte verschieben.
Hallo,
ich bin neu hier und gerade erst wieder in das Programmieren eingestiegen, habe zwar schon in der Schule mal mit TP6 und Basic gearbeitet und wollte mir jetzt mal an einem Arduino versuchen, nachdem die ganzen standardübungen wunderbar geklappt haben hab ich mir den LS20031 bestellt. Wenn ich den empfänger direkt an Pin 0 und Pin 1 (RX => TX / TX => RX) hänge habe ich mit GPS Fox oder Mini GPS auch sofort eine Verbindung, da 57600 jedoch etwas schnell war habe ich mit einem FTDI Breakout Board alle Sätze bis auf den GPRMC und den GPGGA geaktiviert, Frequenz auf 1Hz und Baud 4800 gesetzt. Seit der Änderung spuckt er gelegentlich komische Daten aus wenn RX und TX angeschlossen sind, ohne RX sind die Ausgabesätze alle ok.
Bei RX und TX waren die Zeilen teilweise nicht richtig getrennt (mehrer Sätze in einer Zeile und zwischen den Sätzen irgendwelche Zeichen, als würde die Baudrate nicht passen.Zitat von Nur TX
Mit dem Beispielprogramm und der Bibliothek TinyGPS hat er jedoch absolut keine Ausgabe von Daten, das zeigt er mir jedoch:
(nur TX GPS => RX Arduino), langsam bin ich am verzweifeln da ich jetzt schon 2 Wochen am probieren bin und keine Idee mehr habe woran es liegen könnte.Testing TinyGPS library v. 10
by Mikal Hart
Sizeof(gpsobject) = 103
Das LSM303DLH ( 3 Achs Kompass/ Beschleunigungssensorboard) habe ich zum Laufen bekommen indem ich statt dem Mega ADK in der Entwicklungsumgebung das Mega 2560 ausgewählt hab da gab es jedoch nur beim Kompilieren Fehler beim GPS brachte das keine Änderung.
Gruß ArneCode:#include <TinyGPS.h> #include <NewSoftSerial.h> /* This sample code demonstrates the normal use of a TinyGPS object. It requires the use of NewSoftSerial, and assumes that you have a 4800-baud serial GPS device hooked up on pins 2(rx) and 3(tx). */ TinyGPS gps; NewSoftSerial nss(2, 3); void gpsdump(TinyGPS &gps); bool feedgps(); void printFloat(double f, int digits = 2); void setup() { Serial.begin(9600); nss.begin(4800); Serial.print("Testing TinyGPS library v. "); Serial.println(TinyGPS::library_version()); Serial.println("by Mikal Hart"); Serial.println(); Serial.print("Sizeof(gpsobject) = "); Serial.println(sizeof(TinyGPS)); Serial.println(); } void loop() { bool newdata = false; unsigned long start = millis(); // Every 5 seconds we print an update while (millis() - start < 5000) { if (feedgps()) newdata = true; } if (newdata) { Serial.println("Acquired Data"); Serial.println("-------------"); gpsdump(gps); Serial.println("-------------"); Serial.println(); } } void printFloat(double number, int digits) { // Handle negative numbers if (number < 0.0) { Serial.print('-'); number = -number; } // Round correctly so that print(1.999, 2) prints as "2.00" double rounding = 0.5; for (uint8_t i=0; i<digits; ++i) rounding /= 10.0; number += rounding; // Extract the integer part of the number and print it unsigned long int_part = (unsigned long)number; double remainder = number - (double)int_part; Serial.print(int_part); // Print the decimal point, but only if there are digits beyond if (digits > 0) Serial.print("."); // Extract digits from the remainder one at a time while (digits-- > 0) { remainder *= 10.0; int toPrint = int(remainder); Serial.print(toPrint); remainder -= toPrint; } } void gpsdump(TinyGPS &gps) { long lat, lon; float flat, flon; unsigned long age, date, time, chars; int year; byte month, day, hour, minute, second, hundredths; unsigned short sentences, failed; gps.get_position(&lat, &lon, &age); Serial.print("Lat/Long(10^-5 deg): "); Serial.print(lat); Serial.print(", "); Serial.print(lon); Serial.print(" Fix age: "); Serial.print(age); Serial.println("ms."); feedgps(); // If we don't feed the gps during this long routine, we may drop characters and get checksum errors gps.f_get_position(&flat, &flon, &age); Serial.print("Lat/Long(float): "); printFloat(flat, 5); Serial.print(", "); printFloat(flon, 5); Serial.print(" Fix age: "); Serial.print(age); Serial.println("ms."); feedgps(); gps.get_datetime(&date, &time, &age); Serial.print("Date(ddmmyy): "); Serial.print(date); Serial.print(" Time(hhmmsscc): "); Serial.print(time); Serial.print(" Fix age: "); Serial.print(age); Serial.println("ms."); feedgps(); gps.crack_datetime(&year, &month, &day, &hour, &minute, &second, &hundredths, &age); Serial.print("Date: "); Serial.print(static_cast<int>(month)); Serial.print("/"); Serial.print(static_cast<int>(day)); Serial.print("/"); Serial.print(year); Serial.print(" Time: "); Serial.print(static_cast<int>(hour)); Serial.print(":"); Serial.print(static_cast<int>(minute)); Serial.print(":"); Serial.print(static_cast<int>(second)); Serial.print("."); Serial.print(static_cast<int>(hundredths)); Serial.print(" Fix age: "); Serial.print(age); Serial.println("ms."); feedgps(); Serial.print("Alt(cm): "); Serial.print(gps.altitude()); Serial.print(" Course(10^-2 deg): "); Serial.print(gps.course()); Serial.print(" Speed(10^-2 knots): "); Serial.println(gps.speed()); Serial.print("Alt(float): "); printFloat(gps.f_altitude()); Serial.print(" Course(float): "); printFloat(gps.f_course()); Serial.println(); Serial.print("Speed(knots): "); printFloat(gps.f_speed_knots()); Serial.print(" (mph): "); printFloat(gps.f_speed_mph()); Serial.print(" (mps): "); printFloat(gps.f_speed_mps()); Serial.print(" (kmph): "); printFloat(gps.f_speed_kmph()); Serial.println(); feedgps(); gps.stats(&chars, &sentences, &failed); Serial.print("Stats: characters: "); Serial.print(chars); Serial.print(" sentences: "); Serial.print(sentences); Serial.print(" failed checksum: "); Serial.println(failed); } bool feedgps() { while (nss.available()) { if (gps.encode(nss.read())) return true; } return false; }
Lesezeichen