(My message was too long ...)
But this program doesn't work's :
#include <Adafruit_GPS.h>
#include <SoftwareSerial.h>
#include <math.h>
#include <SD.h>
//-------------------------------VARIABLES------------------------------------------------
double vitesseTemp = 0;
double vitesseMax = 0;
double vitesseTotale = 0;
double vitesseMoyenne = 0;
double distance = 0;
double temps = 0;
double heures1 = 0;
double minutes1 = 0;
double secondes1 = 0;
double heuresTot1 = 0;
double heures2 = 0;
double minutes2 = 0;
double secondes2 = 0;
double heuresTot2 = 0;
double m = 0;
double s = 0;
double lat = 0;
double latDm = 0;
double lon = 0;
double lonDm = 0;
int p = 1;
int H = 0;
int M = 0;
int S = 0;
int k = 0;
int startMap = 0;
int latEnt = 0;
int lonEnt = 0;
//--------------------------------------------------------------------------------------
const int chipSelect = 4;
SoftwareSerial mySerial(8, 7);
Adafruit_GPS GPS(&mySerial);
#define GPSECHO false
boolean usingInterrupt = false;
void useInterrupt(boolean);
void setup()//---------------------------VOID-SETUP-------------------------------------
{
Serial.begin(115200);
GPS.begin(9600);
pinMode(10, OUTPUT);
GPS.sendCommand(PMTK_SET_NMEA_OUTPUT_RMCGGA);
GPS.sendCommand(PMTK_SET_NMEA_UPDATE_10HZ);
GPS.sendCommand(PGCMD_ANTENNA);
useInterrupt(true);
delay(1000);
mySerial.println(PMTK_Q_RELEASE);
}
SIGNAL(TIMER0_COMPA_vect) {
char c = GPS.read();
#ifdef UDR0
if (GPSECHO)
if (c) UDR0 = c;
#endif
}
void useInterrupt(boolean v) {
if (v) {
OCR0A = 0xAF;
TIMSK0 |= _BV(OCIE0A);
usingInterrupt = true;
} else {
TIMSK0 &= ~_BV(OCIE0A);
usingInterrupt = false;
}
if (!SD.begin(chipSelect)) {
Serial.println("Card failed, or not present");
// don't do anything more:
return;
}
Serial.println("card initialized.");
}
uint32_t timer = millis();
void loop()//-------------------------------VOID-LOOP--------------------------------------
{
if (! usingInterrupt) {
char c = GPS.read();
if (GPSECHO)
if (c) Serial.print(c);
}
if (GPS.newNMEAreceived()) {
if (!GPS.parse(GPS.lastNMEA()))
return;
}
if (timer > millis()) timer = millis();
if (millis() - timer > 3000) {
timer = millis();
//------------------------IF-FIX-------------------------------------------------------------
if (GPS.fix) {
//-------------------------DDD---------------------------------------------------------------
lat = GPS.latitude;
lat = lat/100;
latEnt = floor(lat);
latDm = lat - latEnt;
latDm = latDm * 1000;
latDm = latDm/6;
latDm = latDm/100;
lat = latEnt + latDm;
lon = GPS.longitude;
lon = lon/100;
lonEnt = floor(lon);
lonDm = lon - lonEnt;
lonDm = lonDm * 1000;
lonDm = lonDm/6;
lonDm = lonDm/100;
lon = lonEnt + lonDm;
//---------------------------VITESSE---------------------------------------------------------------------
vitesseTemp = GPS.speed*1.85;
if(vitesseMax < vitesseTemp)
{
vitesseMax = vitesseTemp;
}
vitesseTotale = vitesseTotale + vitesseTemp;
vitesseMoyenne = vitesseTotale / p;
p++;
//---------------------------HEURES----------------------------------------------------------------------
if(heuresTot1 == 0)
{
heures1 = GPS.hour;
minutes1 = GPS.minute;
secondes1 = GPS.seconds;
heuresTot1 = heures1 + minutes1/60 + secondes1/3600;
}
heures2 = GPS.hour;
minutes2 = GPS.minute;
secondes2 = GPS.seconds;
heuresTot2 = heures2 + minutes2/60 + secondes2/3600;
//-----------------------------------DUREE----------------------------------------------------------------
temps = heuresTot2 - heuresTot1;
H = floor(temps);
m = temps - H;
m = m * 60;
M = floor(m);
s = m - M;
s = s * 60;
S = floor(s);
//----------------------------------DISTANCE--------------------------------------------------------------
distance = vitesseMoyenne * temps;
}
}
}
File dataFile = SD.open("map.htm", FILE_WRITE);
dataFile.print("var myLatlng");dataFile.print(k); dataFile.print("= new google.maps.LatLng("); dataFile.print(lat, 6);dataFile.print(" , "); dataFile.print(lon, 6); dataFile.println(");");
dataFile.print("var marker"); dataFile.print(k); dataFile.println("= new google.maps.Marker({");
dataFile.print("position: myLatlng"); dataFile.print(k); dataFile.println(',');
dataFile.println("map: map,");
dataFile.print("title:"); dataFile.print("\""); dataFile.print(vitesseTemp); dataFile.println("\"});");
k++;
dataFile.close();
}
}
}
Library Adafruit_GPS : GitHub - adafruit/Adafruit_GPS: An interrupt-based GPS Arduino library for no-parsing-required use
Please help me, i have a big project tommorrow ...
Thank's for read my post !