Advertisement
Guest User

Untitled

a guest
Jan 9th, 2018
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.97 KB | None | 0 0
  1. #include <SoftwareSerial.h>
  2. #include <TinyGPS.h>
  3. #include <SPI.h>
  4. #include <SD.h>
  5.  
  6. /* This sample code demonstrates the normal use of a TinyGPS object.
  7.    It requires the use of SoftwareSerial, and assumes that you have a
  8.    4800-baud serial GPS device hooked up on pins 3(rx) and 4(tx).
  9. */
  10.  
  11. TinyGPS gps;
  12. SoftwareSerial nss(3, 4);
  13. File Plik;
  14.  
  15. static void gpsdump(TinyGPS &gps);
  16. static bool feedgps();
  17. static void print_float(float val, float invalid, int len, int prec);
  18. static void print_int(unsigned long val, unsigned long invalid, int len);
  19. static void print_date(TinyGPS &gps);
  20. static void print_str(const char *str, int len);
  21. static void zapis(char abc);
  22. float a;
  23. float b;
  24. void setup()
  25. {
  26.   Serial.begin(115200);
  27.   nss.begin(9600);
  28.  
  29.   Serial.print("Sizeof(gpsobject) = "); Serial.println(sizeof(TinyGPS));
  30.   Serial.println();
  31.   Serial.println(" Latitude Longitude   Date       Time  ");
  32.   Serial.println(" (deg)    (deg)                        ");
  33.   Serial.println("---------------------------------------");
  34. }
  35.  
  36. void loop()
  37. {
  38.   bool newdata = false;
  39.   unsigned long start = millis();
  40.  
  41.   // Every second we print an update
  42.   while (millis() - start < 1000)
  43.   {
  44.     if (feedgps())
  45.       newdata = true;
  46.   }
  47.  
  48.   gpsdump(gps);
  49. }
  50.  
  51. static void gpsdump(TinyGPS &gps)
  52. {
  53.   float flat, flon;
  54.   unsigned long age, date, time, chars = 0;
  55.   unsigned short sentences = 0, failed = 0;
  56.   static const float LONDON_LAT = 53.75490, LONDON_LON = 20.45582;
  57. //  Plik = SD.open("test.txt", FILE_WRITE);
  58.   gps.f_get_position(&flat, &flon, &age);
  59.   print_float(flat, TinyGPS::GPS_INVALID_F_ANGLE, 9, 5);
  60.   print_float(flon, TinyGPS::GPS_INVALID_F_ANGLE, 10, 5);
  61.   print_date(gps);
  62.   //Serial.begin(4800);
  63. //a= print_float(flat, TinyGPS::GPS_INVALID_F_ANGLE, 9, 5);
  64. //b=(flon, TinyGPS::GPS_INVALID_F_ANGLE);
  65.  Serial.println("nasza");
  66.   Serial.print(a);
  67.   Serial.print("   loool   ");  
  68.   Serial.println(b);
  69.   //Plik.print(float(flat, TinyGPS::GPS_INVALID_F_ANGLE, 9, 5),float(flon, TinyGPS::GPS_INVALID_F_ANGLE, 10, 5));
  70.   Plik.close();
  71.   Serial.println();
  72.   delay(300);
  73.  
  74. }
  75.  
  76. static void print_int(unsigned long val, unsigned long invalid, int len)
  77. {
  78.   char sz[32];
  79.   if (val == invalid)
  80.     strcpy(sz, "*******");
  81.   else
  82.     sprintf(sz, "%ld", val);
  83.   sz[len] = 0;
  84.   for (int i=strlen(sz); i<len; ++i)
  85.     sz[i] = ' ';
  86.   if (len > 0)
  87.     sz[len-1] = ' ';
  88.   Serial.print(sz);
  89.   feedgps();
  90. }
  91.  
  92. static void print_float(float val, float invalid, int len, int prec)
  93. {
  94.  
  95.   char sz[32];
  96.   if (val == invalid)
  97.   {
  98.     strcpy(sz, "*******");
  99.     sz[len] = 0;
  100.         if (len > 0)
  101.           sz[len-1] = ' ';
  102.     for (int i=7; i<len; ++i)
  103.         sz[i] = ' ';
  104.     Serial.print(sz);
  105.   }
  106.   else
  107.   {
  108.     Plik = SD.open("test.txt", FILE_WRITE);
  109.     Plik.print(val, prec);
  110.     a=val;
  111.     b=prec;
  112.     Serial.print(a);
  113.      Serial.print("a");
  114.    
  115.      Serial.print(" ");
  116.    
  117.     Serial.print(val, prec);
  118.    // Serial.print("kupa");
  119.     int vi = abs((int)val);
  120.     int flen = prec + (val < 0.0 ? 2 : 1);
  121.     flen += vi >= 1000 ? 4 : vi >= 100 ? 3 : vi >= 10 ? 2 : 1;
  122.     for (int i=flen; i<len; ++i)
  123.       Serial.print(" ");
  124.       Plik.close();
  125.      
  126.   }
  127.   feedgps();
  128. }
  129.  
  130. static void print_date(TinyGPS &gps)
  131. {
  132.   int year;
  133.   byte month, day, hour, minute, second, hundredths;
  134.   unsigned long age;
  135.   gps.crack_datetime(&year, &month, &day, &hour, &minute, &second, &hundredths, &age);
  136.   if (age == TinyGPS::GPS_INVALID_AGE)
  137.     Serial.print("*******    *******    ");
  138.   else
  139.   {
  140.     char sz[32];
  141.     sprintf(sz, "%02d/%02d/%02d %02d:%02d:%02d   ",
  142.         month, day, year, hour+1, minute, second);
  143.     Serial.print(sz);
  144.   }
  145.   feedgps();
  146. }
  147.  
  148. static void print_str(const char *str, int len)
  149. {
  150.   int slen = strlen(str);
  151.   for (int i=0; i<len; ++i)
  152.     Serial.print(i<slen ? str[i] : ' ');
  153.   feedgps();
  154. }
  155.  
  156. static bool feedgps()
  157. {
  158.   while (nss.available())
  159.   {
  160.     if (gps.encode(nss.read()))
  161.       return true;
  162.   }
  163.   return false;
  164. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement