Offline
Newbie
Karma: 0
Posts: 43
|
 |
« on: September 26, 2012, 05:29:49 am » |
Hola! os cuento mi problema a ver si alguien me puede ayudar. Dispongo de un archivo en una SD, el cual abro y visualizo los datos que tiene, es de la siguiente forma:
,45.78634,5.674225,65, ,67.34577,4.652546,48, ,23.42675,3.678456,23,
Cada valor entre comas le doy un nombre: latitud,longitud,cantidad, Lo que quiero hacer ahora es pasar la cadena de caracteres a real y a entero, y que a su vez lo imprima. El error viene cuando en vez de salirme el número convertido me salen ceros: 0.0000,0.0000 Os pongo el programa, a ver si veis cual es mi fallo.
GRACIAS.
#include <SD.h> const int chipSelect = 53; // en Mega, 53 es el pin CS (en la mayoria 10) //------------------------------------ int campo=0; char dato; char latitud[10]; char longitud[10]; char cantidad[10]; int pos; float lat; float lon; int cant;
void setup(){ Serial.begin(9600); Serial.print("Initializing SD card..."); pinMode(53, OUTPUT); // se debe configurar como salida pq sino la libreria SD no funcionará if (!SD.begin(chipSelect)) { //comprueba si la tarjeta está presente y puede ser inicializada Serial.println("Card failed, or not present"); //si entra es que la tarjeta no se inicializa return; // no se hace nada más } Serial.println("card initialized."); File dataFile = SD.open("llc.txt"); // se abre el archivo(sólo se puede abrir uno al mismo tiempo) if (dataFile) { //si el archivo esta abierto, se escribe en el while (dataFile.available()) { Serial.write(dataFile.read()); } dataFile.close(); } else { Serial.println("error opening gps.txt"); //si no se ha abierto el archivo da error } //------------------------------------- while (dataFile.available()){ while (campo<4){ if(dato==','){ campo++; pos=0; } else{ if(campo==1){ latitud[pos++]=dato; } if(campo==2){ longitud[pos++]=dato; } if(campo==3){ cantidad[pos++]=dato; } } dato=dataFile.read(); } } }
void loop(){ lat=atof(latitud); //convierto latitud a float lon=atof(longitud); cant=atoi(cantidad); Serial.print(lat,4); //imprimo lat con 4 decimales Serial.print(','); Serial.println(lon,4); }
|