Go Down

Topic: leer caracteres SD y guardar en un vector (SOLUCIONADO) (Read 1 time) previous topic - next topic

mamumo

Oct 08, 2012, 11:15 am Last Edit: Oct 08, 2012, 01:33 pm by mamumo Reason: 1
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);
 }
 }
 

mamumo

He encontrado el fallo!!  :D

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!!!

Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy