Pages: [1]   Go Down
Author Topic: Escritura de archivo Excel en tarjeta SD (duda separación por columnas)  (Read 1378 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 27
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Buenas noches a toda la comunidad.
Pues estoy liado con una estación meteorológica con un Arduino UNO, una shield SD de Seeedstudio y un transmisor XBEE.
El tema que respecta es el siguiente, a ver si no me enrollo mucho.
Tengo aqui el codigo, para que por puerto serie me de los siguentes valores : Temperatura, Humedad, Punto de Rocio y Presion atmosférica. El problema, es que a la hora de escribir en la tarjeta, me crea el archivo Excel sin problema, pero no se como narices poner para que estos valores aparezcan por columnas. O me los pone todo en la misma celda pegados unos a otros, o en una sola columna pero valores alternados (con lo que es imposible para seleccionar valores de una misma variable)... vamos, que o escribo una sola variable, o no hay manera.
ME gustaria que le echarais un vistazo al codigo, para ver si alguien me puede decir como puedo hacer para que en la columna "A" aparezca la temperatura, en la "B" la humedad... y así los cuatro valores.
Os dejo el tramo de codigo donde saco los datos por serie para verlos en la pantalla, y donde crea el archivo temp.xls y lo escribo en la tarjeta, a ver si podemos solucionarlo:

  Serial.print(tempC ,1);
  Serial.print(" C");
  Serial.print("   ");
  //Serial.print(temperature / 10, DEC);
  //Serial.print(".");
  //Serial.print(temperature % 10, DEC);
  //Serial.print(",");
  Serial.print(humid ,1);
  Serial.print("%   ");
  Serial.print(dewPoint ,1);
  Serial.print(" C  ");
  Serial.print(pressure /100);
  Serial.println(" hPa");

  File dataFile = SD.open("temp.xls", FILE_WRITE);

  // if the file is available, write to it:
  if (dataFile) {
    dataFile.println(tempC, 1);  //con esto escribimos el valor de speedwind enla tarjeta
    dataFile.close();
  
  }  
  // if the file isn't open, pop up an error:
  else {
    Serial.println("error al abrir temp.xls");


El codigo completo lo dejo por aqui por si es necesario.





* sht_y_bmp_SD.ino (8.31 KB - downloaded 23 times.)
Logged

0
Offline Offline
Edison Member
*
Karma: 16
Posts: 1579
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Hola,

No le pongas extensión de excel (o pon *.csv). En excel puedes elegir tu carácter limitador (por ejemplo, una coma, un punto, tabulador, espacio, etc). Necesitas tener dicho carácter entre tus datos para que te lo reconozca y separe por columnas. Para forzar "importar", en vez de darle doble click, tiene la opción de hacelo por el menu y te permitirá elegir dicho limitador.
Aunque con el nuevo excel (2010) te deja hacer "conexiones", y puedes elegir un archivo de texto. De esta forma podrías tener algo dinámico (como si fuera una base de datos) y que se actualiza.

El estandar suele ser separación con coma (,).

Saludos,


Igor R.
« Last Edit: January 30, 2013, 03:24:12 pm by Igor R » Logged


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

Gracias Igor, voy a probarlo a ver que tal y os cuento por aqui
Logged

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

bueno, el problema es que me esta poniendo los decimales con un punto, y me los esta separando con otro punto, como puedo hacer para que me separe los decimales con una coma y los valores con un punto o viceversa?
asi esta ahora mismo, pero no sale lo que quiero...

File dataFile = SD.open("temp.csv", FILE_WRITE);
  if (dataFile) {
    dataFile.print(tempC, 1), dataFile.print(humid, 1), dataFile.print(dewPoint, 1), dataFile.println(pressure /100);
    dataFile.close();
Logged

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

bueno por aqui veo algo, a ver si consigo hacer algo con esto....
http://arduino.cc/forum/index.php?topic=125919.0
Logged

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

solucionado!. me falta indagar un poco para introducir una cabecera al principio del archivo, pero bueno, eso es adorno.
Así ha quedado:

 float a = 17.271;
  float b = 237.7;
  float gamma = log(humid / 100) + a / (b / tempC + 1);
  float dewPoint = b / (a / gamma - 1);
  Serial.print(tempC ,1);
  Serial.print(" C");
  Serial.print("   ");
  //Serial.print(temperature / 10, DEC);
  //Serial.print(".");
  //Serial.print(temperature % 10, DEC);
  //Serial.print(",");
  Serial.print(humid ,1);
  Serial.print(" % ");
  Serial.print(dewPoint ,1);
  Serial.print(" C ");
  Serial.print(pressure /100);
  Serial.println(" hPa");

  File dataFile = SD.open("temp.csv", FILE_WRITE);

  // if the file is available, write to it:
  if (dataFile) {
    dataFile.print(tempC, 1);
    dataFile.print(";");
    dataFile.print(humid, 1);
    dataFile.print(";");
    dataFile.print(dewPoint, 1);
    dataFile.print(";");
    dataFile.println(pressure /100);
    dataFile.close();
Logged

Pages: [1]   Go Up
Jump to: