Pages: [1]   Go Down
Author Topic: leer caracteres SD y guardar en un vector (SOLUCIONADO)  (Read 1046 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!
Tengo un archivo de texto en una SD, en el cual esta escrito lo siguiente:

hola
adios

He hecho un programa con el que quiero leer los caracteres de "hola" y guardarlos en un vector para luego hacer cosas con ellos, por ejemplo en este programa volver a escribirlos. Cuando lo ejecuto, lo único que hace es inicializar la tarjeta, nada más!!  No se si no uso las instrucciones adecuadas o cual puede ser el problema....Alguien tiene alguna idea? como no pase de aquí difícilmente voy a poder hacer mi proyecto...

Gracias de antemano.

Aquí está mi programa:

#include <SoftwareSerial.h>
#include <SD.h>

const int chipSelect = 53; // en Mega, 53 es el pin CS (en la mayoria 10)
char linea[6];
int i;
int imax;
char dato;

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("hola.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 hola.txt"); //si no se ha abierto el archivo da error
  }
  
  i=0;
  dato=dataFile.read();
  while (dato!='\n'){
  linea=dato;
  imax=i;
  i++;
  dato=dataFile.read();
  }
}
 
  void loop(){
  
  for (i=0; i<imax; i++){
  Serial.print(linea);
  }
  }
  
« Last Edit: October 08, 2012, 06:33:49 am by mamumo » Logged

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

He encontrado el fallo!!  smiley-grin

el error estaba en la inicialización de la SD. Quitando el trozo en rojo funciona!!!

  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("hola.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 hola.txt"); //si no se ha abierto el archivo da error
  }



Ahora ya me escribe en la consola hola!!!
Logged

Pages: [1]   Go Up
Jump to: