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
 

Quick Reply

With Quick-Reply you can write a post when viewing a topic without loading a new page. You can still use bulletin board code and smileys as you would in a normal post.

Warning: this topic has not been posted in for at least 120 days.
Unless you're sure you want to reply, please consider starting a new topic.

Note: this post will not display until it's been approved by a moderator.
Name:
Email:

shortcuts: alt+s submit/post or alt+p preview