buenas tardes, antes que nada, me presento soy nuevo en esto de la programación de Arduino y e visto varios códigos parecidos y probe hacer este para un proyecto.
El problema que tengo es que el código si me aguarda los datos, pero me los aguada demasiado separados los datos como se ve en la foto.
y después de varios datos me lo vuelve a grabar y lo que quiero es que me aguarde los datos cada segundo si es posible y aver si me pudieran orientar si es que m falta parte del codigo o alguna otra cosa.
adjunto el codigo
#include <TinyGPS.h> //libreria gps
TinyGPS gps;
#include <SoftwareSerial.h>
SoftwareSerial serialgps(11,10); //entradas de arduino mega
#include <SPI.h> //librerias sd
#include <SD.h> // librerias sd
const int chipSelect = 53; // pin usado mega 53
int year;
byte month, day, hour, minute, second, hundredths; //variables para dias
unsigned long chars;
unsigned short sentences, failed_checksum;
void setup()
{
// abrimos serial de comunicaciones
Serial.begin(9600);
serialgps.begin(9600);
pinMode(chipSelect, OUTPUT);
Serial.print("Inicializando SD...");
// ver si la tarjeta se esta inicializando
if (!SD.begin(chipSelect)) {
Serial.println("Fallo o tarjeta no presente");
//si no pasa eso
return;
}
Serial.println("Tarjeta SD OK");
}
void loop()
{
String dataString = ""; // vacia la cadena para evitar incovenientes
// imprime los datos del gps
Datosgps();
String gpsString = "";
// Abre el archivo DATOSGPS.txt
//Solo puede haber un archivo abierto a la vez,
//por lo que hay que cerrar este si queremos utilizar otro //printDate
File dataFile = SD.open("DATOSGPS.txt", FILE_WRITE);
while(serialgps.available())
{
int c = serialgps.read();
if(gps.encode(c))
{
float latitude, longitude;
gps.f_get_position(&latitude, &longitude);
gpsString += String("Latitud: ")+String(latitude,5) + String(" ");
gpsString += String("Longitud: ")+String(longitude,5) + String(" ");
gpsString += String("Velocidad en km/hr: ")+String(gps.f_speed_kmph()) + String(" ");
gpsString += String("Satelites encontrados: ")+String(gps.satellites()) + String(" ");
gps.crack_datetime(&year,&month,&day,&hour,&minute,&second,&hundredths);
gpsString += String("DIA: ")+String(day, DEC) + String(" ");
gpsString += String("MES: ")+String(month, DEC) + String(" ");
gpsString += String("AÑO: ")+String(year, DEC) + String(" ");
gps.stats(&chars, &sentences, &failed_checksum);
}}
// Si el archivo existe, escribimos en el.
if (dataFile) {
dataFile.print( (millis()/1000) );
dataFile.print(",");
dataFile.println(dataString);
dataFile.println(gpsString);
dataFile.close();
// Imprimimos dataString por el Serial para ver la medida.
Serial.println(dataString);
}
// Si el archivo no se abre imprimir:
else {
Serial.println("Error abriendo DATOSGPS.txt");
}
}
void Datosgps()
{
// imprimir variables pedidas
while(serialgps.available())
{
int c = serialgps.read();
if(gps.encode(c))
{// comienza la accion
float latitude, longitude;
gps.f_get_position(&latitude, &longitude);
Serial.print("Latitud: "); Serial.println(latitude,5);
Serial.print("Longitud: "); Serial.println(longitude,5);
Serial.print("velocidad en km/hr: "); Serial.println(gps.f_speed_kmph());
gps.crack_datetime(&year,&month,&day,&hour,&minute,&second,&hundredths);
Serial.print("dia: "); Serial.println(day, DEC);
Serial.print("mes: "); Serial.println(month, DEC);
Serial.print("año: "); Serial.println(year, DEC);
Serial.print("Satelites encontrados: "); Serial.println(gps.satellites());
Serial.println();
gps.stats(&chars, &sentences, &failed_checksum);
}
}}