Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "ESP8266WiFi.h"
- #include <TinyGPS++.h>
- #include <SoftwareSerial.h>
- #include <SPI.h>
- #include <SD.h>
- File myFile;
- static const int RXPin = D1, TXPin = D2;
- static const uint32_t GPSBaud = 9600;
- double TimeStart = 0;
- int counter = 0;
- int ledPin =D0; ;
- // The TinyGPS++ object
- TinyGPSPlus gps;
- // The serial connection to the GPS device
- SoftwareSerial ss(RXPin, TXPin);
- void setup()
- {
- ///////////////////MINDEN AMI NEM GPS/SD/////////////////
- Serial.begin(9600);
- pinMode(ledPin, OUTPUT);
- ////////////////////////SD START/////////////////////////
- while (!Serial) {
- ; // wait for serial port to connect. Needed for native USB port only
- }
- if (!SD.begin(4)) {
- Serial.println("initialization failed!");
- return;
- }
- SD.remove("test.txt");
- myFile = SD.open("test.txt", FILE_WRITE);
- //////////////////////////////GPS START////////////////////////
- ss.begin(GPSBaud);
- if (myFile) {
- myFile.print("Testing TinyGPS++"); Serial.print("Testing TinyGPS++");
- myFile.println(); Serial.println();
- Serial.println("Sats Latitude Longitude Fix Date Time Date Alt Course Speed Card Distance Course Card Chars Sentences Checksum");
- myFile.println("Sats Latitude Longitude Fix Date Time Date Alt Course Speed Card Distance Course Card Chars Sentences Checksum");
- Serial.println(" (deg) (deg) Age Age (m) --- from GPS ---- ---- to London ---- RX RX Fail");
- myFile.println(" (deg) (deg) Age Age (m) --- from GPS ---- ---- to London ---- RX RX Fail");
- Serial.println("----------------------------------------------------------------------------------------------------------------------------------------");
- myFile.println("----------------------------------------------------------------------------------------------------------------------------------------");
- myFile.close();
- } else Serial.println("Valami rossz.");
- delay (200);
- digitalWrite(ledPin, HIGH);
- delay (500);
- digitalWrite(ledPin, LOW);
- delay(200);
- }
- void loop()
- {
- if (analogRead (A0) > 800){
- myFile = SD.open ("test.txt", FILE_WRITE);
- Serial.print("Ertekkel rendelkezo meresek száma: "); Serial.println(counter); myFile.print("Ertekkel rendelkezo meresek szama: "); myFile.println(counter);
- Serial.print("Program futott "); Serial.print(TimeStart/10); Serial.println (" masodpercig."); myFile.print("Program futott "); myFile.print(TimeStart/10); myFile.println("masodpercig.");
- Serial.println("Huzd ki az sdkaryat"); myFile.println("Huzd ki az sdkartyat");
- delay(30);
- myFile.close();
- while(true){digitalWrite (ledPin, 1); delay(200); digitalWrite (ledPin, 0); delay(200);}
- delay(31556926000); //egy éved van
- }
- else {
- static const double LONDON_LAT = 51.508131, LONDON_LON = -0.128002;
- printInt(gps.satellites.value(), gps.satellites.isValid(), 5);
- printFloat(gps.location.lat(), gps.location.isValid(), 11, 6);
- printFloat(gps.location.lng(), gps.location.isValid(), 12, 6);
- printInt(gps.location.age(), gps.location.isValid(), 5);
- printDateTime(gps.date, gps.time);
- printFloat(gps.altitude.meters(), gps.altitude.isValid(), 7, 2);
- printFloat(gps.course.deg(), gps.course.isValid(), 7, 2);
- printFloat(gps.speed.kmph(), gps.speed.isValid(), 6, 2);
- printStr(gps.course.isValid() ? TinyGPSPlus::cardinal(gps.course.deg()) : "*** ", 6);
- unsigned long distanceKmToLondon =
- (unsigned long)TinyGPSPlus::distanceBetween(
- gps.location.lat(),
- gps.location.lng(),
- LONDON_LAT,
- LONDON_LON) / 1000;
- printInt(distanceKmToLondon, gps.location.isValid(), 9);
- double courseToLondon =
- TinyGPSPlus::courseTo(
- gps.location.lat(),
- gps.location.lng(),
- LONDON_LAT,
- LONDON_LON);
- printFloat(courseToLondon, gps.location.isValid(), 7, 2);
- const char *cardinalToLondon = TinyGPSPlus::cardinal(courseToLondon);
- printStr(gps.location.isValid() ? cardinalToLondon : "*** ", 6);
- printInt(gps.charsProcessed(), true, 6);
- printInt(gps.sentencesWithFix(), true, 10);
- printInt(gps.failedChecksum(), true, 9);
- TimeStart = TimeStart+5;
- TimeStart = TimeStart/10;
- myFile = SD.open ("test.txt", FILE_WRITE);
- if(myFile){
- digitalWrite(LED_BUILTIN, HIGH);
- Serial.print ("Program fut "); Serial.print (TimeStart); Serial.print (" másodperce.");
- myFile.print ("Program fut "); myFile.print (TimeStart); myFile.print (" másodperce.");
- Serial.println();
- myFile.println();
- myFile.close();
- } else digitalWrite(LED_BUILTIN, LOW);
- TimeStart = TimeStart*10;
- smartDelay(500);
- if (millis() > 5000 && gps.charsProcessed() < 10)
- Serial.println(F("No GPS data received: check wiring"));
- }
- }
- // This custom version of delay() ensures that the gps object
- // is being "fed".
- static void smartDelay(unsigned long ms)
- {
- unsigned long start = millis();
- do
- {
- while (ss.available())
- gps.encode(ss.read());
- } while (millis() - start < ms);
- }
- static void printFloat(float val, bool valid, int len, int prec)
- {
- myFile = SD.open("test.txt", FILE_WRITE);
- if (myFile) {
- digitalWrite(LED_BUILTIN, HIGH);
- if (!valid)
- {
- while (len-- > 1)
- Serial.print('*'); myFile.print('*');
- Serial.print(' '); myFile.print(' ');
- digitalWrite(ledPin, LOW);
- }
- else
- {
- digitalWrite(ledPin, HIGH);
- counter++;
- Serial.print(val, prec); myFile.print(val, prec);
- int vi = abs((int)val);
- int flen = prec + (val < 0.0 ? 2 : 1); // . and -
- flen += vi >= 1000 ? 4 : vi >= 100 ? 3 : vi >= 10 ? 2 : 1;
- for (int i=flen; i<len; ++i)
- Serial.print(' '); myFile.print(' ');
- }
- smartDelay(0);
- myFile.close();
- }
- else digitalWrite(LED_BUILTIN, LOW);
- }
- static void printInt(unsigned long val, bool valid, int len)
- {
- myFile = SD.open("test.txt", FILE_WRITE);
- if (myFile) {
- digitalWrite(LED_BUILTIN, HIGH);
- char sz[32] = "*****************";
- if (valid)
- sprintf(sz, "%ld", val);
- sz[len] = 0;
- for (int i=strlen(sz); i<len; ++i)
- sz[i] = ' ';
- if (len > 0)
- sz[len-1] = ' ';
- Serial.print(sz); myFile.print(sz);
- smartDelay(0);
- myFile.close();
- }
- else digitalWrite(LED_BUILTIN, LOW);
- }
- static void printDateTime(TinyGPSDate &d, TinyGPSTime &t)
- {
- myFile = SD.open("test.txt", FILE_WRITE);
- if (myFile) {
- digitalWrite(LED_BUILTIN, HIGH);
- if (!d.isValid())
- {
- Serial.print(F("********** ")); myFile.print("********** ");
- }
- else
- {
- char sz[32];
- sprintf(sz, "%02d/%02d/%02d ", d.month(), d.day(), d.year());
- Serial.print(sz);
- sprintf(sz, "%02d/%02d/%02d ", d.month(), d.day(), d.year());
- myFile.print(sz);
- }
- if (!t.isValid())
- {
- Serial.print(F("******** ")); myFile.print("******** ");
- }
- else
- {
- char sz[32];
- sprintf(sz, "%02d:%02d:%02d ", t.hour(), t.minute(), t.second());
- Serial.print(sz);
- sprintf(sz, "%02d:%02d:%02d ", t.hour(), t.minute(), t.second());
- myFile.print(sz);
- }
- printInt(d.age(), d.isValid(), 5);
- smartDelay(0);
- myFile.close();
- }
- else digitalWrite(LED_BUILTIN, LOW);
- }
- static void printStr(const char *str, int len)
- {
- myFile = SD.open("test.txt", FILE_WRITE);
- if (myFile) {
- digitalWrite(LED_BUILTIN, HIGH);
- int slen = strlen(str);
- for (int i=0; i<len; ++i)
- smartDelay(0);
- myFile.close();
- }
- else digitalWrite(LED_BUILTIN, LOW);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement