TinyGPS++, formatowanie danych? - Wersja do druku +- Arduino Polska Forum (https://forum.arduinopolska.pl) +-- Dział: Korzystanie z Arduino (https://forum.arduinopolska.pl/dzial-korzystanie-z-arduino) +--- Dział: Programowanie w Arduino (https://forum.arduinopolska.pl/dzial-programowanie-w-arduino) +--- Wątek: TinyGPS++, formatowanie danych? (/watek-tinygps-formatowanie-danych) |
TinyGPS++, formatowanie danych? - Piotrek - 18-02-2018 Witam, próbuję zrobić rejestrator GPS i potrzebuje wyciągnąć do zmiennej lattitude i longitude, używam biblioteki TinyGPS++. W przykładach znalazłem coś takiego: Serial.print(gps.location.lng(), 6); co wyświetla wartość "30.236640" czyli taką jaka mi odpowiada. Teraz moje pytanie jak zapisać powyższe do zmiennej, kiedy zapiszę tak i wyświetlę zmienną: gpsString = gps.location.lng(); otrzymuje tylko 2 miejsca po przecinku "30.24" a kiedy tak: gpsString = (gps.location.lng(), 6) zwraca mi 6. Zmienna jest stringiem. Ktoś pomoże? z programowaniem arduino dopiero zaczynam. RE: TinyGPS++, formatowanie danych? - error105 - 18-02-2018 Różne rodzaje zmiennych Komputery, a szczególnie małe kontrolery jak Arduino mają mało pamięci. Wymyślono więc różne rodzaje zmiennych liczbowych. Przechowują różne zakresy liczb, im mniejszy, tym mniej zajmuje pamięci. int - przechowuje liczby od -32768 do 32767, zajmuje 2 bajty pamięci word - przechowuje liczby od 0 do 65535, zajmuje 2 bajty pamięci byte - przechowuje liczby od 0 do 255, zajmuje 1 bajt pamięci char - przechowuje liczby od -128 do 127, zajmuje 1 bajt pamięci long - przechowuje liczby od -2 miliardów do 2 miliardów, zajmuje 4 bajty pamięci unsigned long - przechowuje liczby od 0 do 4 miliardów, zajmuje 4 bajty pamięci Są też dodatkowe rodzaje zmiennych do liczb ułamkowych: float - zapamiętuje ułamki z dokładnością do 7 cyfr po przecinku, zajmuje 4 bajty double - zapamiętuje ułamki z dokładnością do 15 cyfr po przecinku, zajmuje 8 bajtów RE: TinyGPS++, formatowanie danych? - kaczakat - 21-02-2018 Nie wiem z czym walczysz. Może ja za mało kawy dzisiaj wypiłem, może piszesz niejasno. Tu przykład konwersji liczb ułomnych do napisów. Kod: float liczbafloat= 15.5555555555555; A czemu należy unikać liczb zmiennoprzecinkowych zauważysz po chwili oglądania wydruków. Możesz też się domyśleć dlaczego komputer/telefon trzeba restartować co jakiś czas. Czemu należy unikać String,String() to też inny temat. W każdym bądź razie najlepiej te wyniki zamieniać na liczbę int//uint/uint16_t/uint32_t w zależności jakie na nich chcesz robić operacje i jaki jest wymagany zakres, pamiętać że jest ona x100, x1000000, na takich liczba wykonywać obliczenia/porównania i zapisywać do tablicy znaków zamiast do String. |