Pages: [1]   Go Down
Author Topic: error de conversion  (Read 609 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 43
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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);  
}
« Last Edit: September 26, 2012, 06:24:03 am by mamumo » Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 43
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Vale, me acabo de dar cuenta que los ceros salen porque no recoge el dato de latitud y longitud.
Haciendo el mismo programa pero con:
Serial.print(latitud);
Serial.print(',');
Serial.println(longitud);

obtengo espacio en blanco a ambos lados de la coma. Que ocurre?? por que no me almacena el valor de latitud y longitud??
Logged

Pages: [1]   Go Up
Jump to: