Advertisement
Guest User

Untitled

a guest
Mar 20th, 2018
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 7.68 KB | None | 0 0
  1. #include "ESP8266WiFi.h"
  2. #include <TinyGPS++.h>
  3. #include <SoftwareSerial.h>
  4. #include <SPI.h>
  5. #include <SD.h>
  6. File myFile;
  7.  
  8. static const int RXPin = D1, TXPin = D2;
  9. static const uint32_t GPSBaud = 9600;
  10. double TimeStart = 0;
  11. int counter = 0;
  12. int ledPin =D0;                                                                                                                      ;
  13.  
  14.  
  15. // The TinyGPS++ object
  16. TinyGPSPlus gps;
  17.  
  18. // The serial connection to the GPS device
  19. SoftwareSerial ss(RXPin, TXPin);
  20.  
  21. void setup()
  22. {
  23. ///////////////////MINDEN AMI NEM GPS/SD/////////////////
  24.   Serial.begin(9600);
  25.   pinMode(ledPin, OUTPUT);
  26.  
  27.  
  28. ////////////////////////SD START/////////////////////////
  29.   while (!Serial) {
  30.     ; // wait for serial port to connect. Needed for native USB port only
  31.   }
  32.  
  33.   if (!SD.begin(4)) {
  34.     Serial.println("initialization failed!");
  35.     return;
  36.   }
  37.   SD.remove("test.txt");
  38.   myFile = SD.open("test.txt", FILE_WRITE);
  39.  
  40. //////////////////////////////GPS START////////////////////////
  41.   ss.begin(GPSBaud);
  42.  
  43. if (myFile) {
  44.   myFile.print("Testing TinyGPS++"); Serial.print("Testing TinyGPS++");
  45.   myFile.println(); Serial.println();
  46.   Serial.println("Sats  Latitude   Longitude   Fix  Date       Time     Date Alt    Course Speed Card  Distance Course Card  Chars Sentences Checksum");
  47.   myFile.println("Sats  Latitude   Longitude   Fix  Date       Time     Date Alt    Course Speed Card  Distance Course Card  Chars Sentences Checksum");
  48.   Serial.println("           (deg)      (deg)       Age                      Age  (m)    --- from GPS ----  ---- to London  ----  RX    RX        Fail");
  49.   myFile.println("           (deg)      (deg)       Age                      Age  (m)    --- from GPS ----  ---- to London  ----  RX    RX        Fail");
  50.   Serial.println("----------------------------------------------------------------------------------------------------------------------------------------");
  51.   myFile.println("----------------------------------------------------------------------------------------------------------------------------------------");
  52.   myFile.close();
  53.   } else Serial.println("Valami rossz.");
  54.  delay (200);
  55.  digitalWrite(ledPin, HIGH);
  56.  delay (500);
  57.  digitalWrite(ledPin, LOW);
  58.  delay(200);                                                                                                              
  59. }
  60.  
  61. void loop()
  62. {
  63. if (analogRead (A0) > 800){
  64.   myFile = SD.open ("test.txt", FILE_WRITE);
  65.   Serial.print("Ertekkel rendelkezo meresek száma: "); Serial.println(counter); myFile.print("Ertekkel rendelkezo meresek szama: "); myFile.println(counter);
  66.   Serial.print("Program futott "); Serial.print(TimeStart/10); Serial.println (" masodpercig."); myFile.print("Program futott "); myFile.print(TimeStart/10); myFile.println("masodpercig.");
  67.   Serial.println("Huzd ki az sdkaryat"); myFile.println("Huzd ki az sdkartyat");
  68.   delay(30);
  69.   myFile.close();
  70.   while(true){digitalWrite (ledPin, 1); delay(200); digitalWrite (ledPin, 0); delay(200);}
  71.   delay(31556926000); //egy éved van
  72.   }
  73.  
  74.   else {
  75.   static const double LONDON_LAT = 51.508131, LONDON_LON = -0.128002;
  76.   printInt(gps.satellites.value(), gps.satellites.isValid(), 5);
  77.   printFloat(gps.location.lat(), gps.location.isValid(), 11, 6);
  78.   printFloat(gps.location.lng(), gps.location.isValid(), 12, 6);
  79.   printInt(gps.location.age(), gps.location.isValid(), 5);
  80.   printDateTime(gps.date, gps.time);
  81.   printFloat(gps.altitude.meters(), gps.altitude.isValid(), 7, 2);
  82.   printFloat(gps.course.deg(), gps.course.isValid(), 7, 2);
  83.   printFloat(gps.speed.kmph(), gps.speed.isValid(), 6, 2);
  84.   printStr(gps.course.isValid() ? TinyGPSPlus::cardinal(gps.course.deg()) : "*** ", 6);
  85.  
  86.   unsigned long distanceKmToLondon =
  87.     (unsigned long)TinyGPSPlus::distanceBetween(
  88.       gps.location.lat(),
  89.       gps.location.lng(),
  90.       LONDON_LAT,
  91.       LONDON_LON) / 1000;
  92.   printInt(distanceKmToLondon, gps.location.isValid(), 9);
  93.  
  94.   double courseToLondon =
  95.     TinyGPSPlus::courseTo(
  96.       gps.location.lat(),
  97.       gps.location.lng(),
  98.       LONDON_LAT,
  99.       LONDON_LON);
  100.  
  101.   printFloat(courseToLondon, gps.location.isValid(), 7, 2);
  102.  
  103.   const char *cardinalToLondon = TinyGPSPlus::cardinal(courseToLondon);
  104.  
  105.   printStr(gps.location.isValid() ? cardinalToLondon : "*** ", 6);
  106.  
  107.   printInt(gps.charsProcessed(), true, 6);
  108.   printInt(gps.sentencesWithFix(), true, 10);
  109.   printInt(gps.failedChecksum(), true, 9);
  110.  
  111.   TimeStart = TimeStart+5;
  112.   TimeStart = TimeStart/10;
  113.   myFile = SD.open ("test.txt", FILE_WRITE);
  114.   if(myFile){
  115.   digitalWrite(LED_BUILTIN, HIGH);
  116.   Serial.print ("Program fut "); Serial.print (TimeStart); Serial.print (" másodperce.");
  117.   myFile.print ("Program fut "); myFile.print (TimeStart); myFile.print (" másodperce.");
  118.   Serial.println();
  119.   myFile.println();
  120.   myFile.close();
  121.   } else digitalWrite(LED_BUILTIN, LOW);
  122.   TimeStart = TimeStart*10;
  123.  
  124.  
  125.   smartDelay(500);
  126.  
  127.  
  128.   if (millis() > 5000 && gps.charsProcessed() < 10)
  129.     Serial.println(F("No GPS data received: check wiring"));
  130.  }
  131. }
  132.  
  133. // This custom version of delay() ensures that the gps object
  134. // is being "fed".
  135. static void smartDelay(unsigned long ms)
  136. {
  137.   unsigned long start = millis();
  138.   do
  139.   {
  140.     while (ss.available())
  141.       gps.encode(ss.read());
  142.   } while (millis() - start < ms);
  143. }
  144.  
  145. static void printFloat(float val, bool valid, int len, int prec)
  146. {
  147.  myFile = SD.open("test.txt", FILE_WRITE);
  148.  if (myFile) {
  149.   digitalWrite(LED_BUILTIN, HIGH);
  150.   if (!valid)
  151.   {
  152.     while (len-- > 1)
  153.       Serial.print('*'); myFile.print('*');
  154.     Serial.print(' '); myFile.print(' ');
  155.     digitalWrite(ledPin, LOW);
  156.   }
  157.   else
  158.   {
  159.     digitalWrite(ledPin, HIGH);
  160.     counter++;
  161.     Serial.print(val, prec); myFile.print(val, prec);
  162.     int vi = abs((int)val);
  163.     int flen = prec + (val < 0.0 ? 2 : 1); // . and -
  164.     flen += vi >= 1000 ? 4 : vi >= 100 ? 3 : vi >= 10 ? 2 : 1;
  165.     for (int i=flen; i<len; ++i)
  166.       Serial.print(' '); myFile.print(' ');
  167.   }
  168.   smartDelay(0);
  169.  myFile.close();
  170.  }
  171.  else digitalWrite(LED_BUILTIN, LOW);
  172. }
  173.  
  174. static void printInt(unsigned long val, bool valid, int len)
  175. {
  176.  myFile = SD.open("test.txt", FILE_WRITE);
  177.  if (myFile) {
  178.   digitalWrite(LED_BUILTIN, HIGH);
  179.   char sz[32] = "*****************";
  180.   if (valid)
  181.     sprintf(sz, "%ld", val);
  182.   sz[len] = 0;
  183.   for (int i=strlen(sz); i<len; ++i)
  184.     sz[i] = ' ';
  185.   if (len > 0)
  186.     sz[len-1] = ' ';
  187.   Serial.print(sz); myFile.print(sz);
  188.   smartDelay(0);
  189.  myFile.close();
  190.  }
  191.  else digitalWrite(LED_BUILTIN, LOW);
  192. }
  193.  
  194. static void printDateTime(TinyGPSDate &d, TinyGPSTime &t)
  195. {
  196.  myFile = SD.open("test.txt", FILE_WRITE);
  197.  if (myFile) {
  198.   digitalWrite(LED_BUILTIN, HIGH);
  199.   if (!d.isValid())
  200.   {
  201.     Serial.print(F("********** ")); myFile.print("********** ");
  202.    
  203.   }
  204.   else
  205.   {
  206.     char sz[32];
  207.     sprintf(sz, "%02d/%02d/%02d ", d.month(), d.day(), d.year());
  208.     Serial.print(sz);
  209.     sprintf(sz, "%02d/%02d/%02d ", d.month(), d.day(), d.year());
  210.     myFile.print(sz);
  211.   }
  212.  
  213.   if (!t.isValid())
  214.   {
  215.     Serial.print(F("******** ")); myFile.print("******** ");
  216.   }
  217.   else
  218.   {
  219.     char sz[32];
  220.     sprintf(sz, "%02d:%02d:%02d ", t.hour(), t.minute(), t.second());
  221.     Serial.print(sz);
  222.     sprintf(sz, "%02d:%02d:%02d ", t.hour(), t.minute(), t.second());
  223.     myFile.print(sz);
  224.   }
  225.  
  226.   printInt(d.age(), d.isValid(), 5);
  227.   smartDelay(0);
  228.  myFile.close();
  229.  }
  230.  else digitalWrite(LED_BUILTIN, LOW);
  231. }
  232.  
  233. static void printStr(const char *str, int len)
  234. {
  235.  myFile = SD.open("test.txt", FILE_WRITE);
  236.  if (myFile) {
  237.   digitalWrite(LED_BUILTIN, HIGH);
  238.   int slen = strlen(str);
  239.   for (int i=0; i<len; ++i)
  240.    
  241.   smartDelay(0);
  242.  myFile.close();
  243.  }
  244.  else digitalWrite(LED_BUILTIN, LOW);
  245. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement