Lectura de datos desde SD

Hola, este es mi primer participación en el foro y pues quería molestarlos ya que tengo un problema con la lectura de una SD.

con el ejemplo de lectura escritura de SD realice un archivo llamado test.txt y coloque un numero 25

bueno el ejemplo después de modificarlo y quitarle la parte de la escritura la lectura al monitor serial la hace correctamente saca en la pantalla el numero 25 que coloque en el archivo.

bien pues ahora quiero poder leer esos dos números y asignarlos a una variable para tener el numero 25 y utilizarla dentro de otra función del programa.

El problema es que con la función Myfile.read obtengo una valor Byte por cada lectura pero no se como colocar las dos lecturas en la misma variable y pasarla a un numero integer.

he leído mucho y he probado un montón de opciones pero nada entonces les dejo el código a ver si me pueden ayudar, se que es algo sencillo pero no puedo verlo aun.

SKETCH ARDUINO UNO CON ETHERNET SHIELD

int Dato1;
int Dato2;

#include <SPI.h>
#include <SD.h>

File myFile;

void setup() {
// Open serial communications and wait for port to open:
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for native USB port only
}

Serial.print(“Initializing SD card…”);

if (!SD.begin(4)) {
Serial.println(“initialization failed!”);
return;
}
Serial.println(“initialization done.”);

myFile = SD.open(“test.txt”);
if (myFile) {
Serial.println(“test.txt:”);

// read from the file until there’s nothing else in it:

Serial.write(myFile.peek());
Dato1 = (myFile.read());
Serial.write(myFile.peek());
Dato2 = (myFile.read());
Dato1 = ((Dato1 * 10) + Dato2);

// close the file:
myFile.close();
Serial.write(Dato1);
} else {
// if the file didn’t open, print an error:
Serial.println(“error opening test.txt”);
}
}

void loop() {
// nothing happens after setup
}

#include <SPI.h>
#include <SD.h>
const int chipSelect = 4;
int string[50];
int index = 0;

void setup()
{
  Serial.begin(9600);
  Serial.print("Initializing SD Card....");
  if(!SD.begin(chipSelect))  {
    Serial.println("Card failed, or not Present");
    return;
  }
  Serial.println("Card Initialized");
  myFile = SD.open("test.txt");
 
  if(myFile)   {
    while(myFile.available()) {

      Serial.write(myFile.read());
      string[index] = Serial.read();
      index++;
      string[index] = '\0';
    }
    dataFile.close();
    Serial.println(string); // impreso como string no como entero
  }
  else   {
    Serial.println("File does not exist or named wrong");
  }
}

void loop() {
}

NOTA: Por favor, lee las normas del foro y usa tags para insertar códigos

Aun así lo tiene enunciado Sting y no en un int como lo quiere, supongo que para hacer algún calculo con el.

Pues bien :

Int resultado = atoi(string);

Quiere leer los datos, yo le sugiero cómo hacerlo, luego si los quiere como enteros que lo transforme como tu dices. NO me pareció relevante porque el solo los muestra.

La solución es la misma a menos que diga porque los necesita en enteros, cosa que no hizo.

Tu y yo siempre debatiendo los temas lingüísticos. Desde mi punto de vista queda claro que quería un int:

HectorGT:
...
y pasarla a un numero integer.
...

Bien. Es un buen punto, ahora mi punto, no hace nada con la variable, solo la presenta.
Cuando vea que tiene un análisis entonces le sugiero tu atoi(numero) y ya.

Como ambos sabemos que pocos presentan debidamente tu problema y a medida que lo hacen van sacando de la galera mas y mas cosas.. entonces para que debatir si va un entero o una cadena? jajaja

HectorGT:
Hola, este es mi primer participación en el foro y pues quería molestarlos ya que tengo un problema con la lectura de una SD.

con el ejemplo de lectura escritura de SD realice un archivo llamado test.txt y coloque un numero 25

bueno el ejemplo después de modificarlo y quitarle la parte de la escritura la lectura al monitor serial la hace correctamente saca en la pantalla el numero 25 que coloque en el archivo.

bien pues ahora quiero poder leer esos dos números y asignarlos a una variable para tener el numero 25 y utilizarla dentro de otra función del programa.

El problema es que con la función Myfile.read obtengo una valor Byte por cada lectura pero no se como colocar las dos lecturas en la misma variable y pasarla a un numero integer.

he leído mucho y he probado un montón de opciones pero nada entonces les dejo el código a ver si me pueden ayudar, se que es algo sencillo pero no puedo verlo aun.

SKETCH ARDUINO UNO CON ETHERNET SHIELD

int Dato1;
int Dato2;

#include <SPI.h>
#include <SD.h>

File myFile;

void setup() {
// Open serial communications and wait for port to open:
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for native USB port only
}

Serial.print(“Initializing SD card…”);

if (!SD.begin(4)) {
Serial.println(“initialization failed!”);
return;
}
Serial.println(“initialization done.”);

myFile = SD.open(“test.txt”);
if (myFile) {
Serial.println(“test.txt:”);

// read from the file until there’s nothing else in it:

Serial.write(myFile.peek());
Dato1 = (myFile.read());
Serial.write(myFile.peek());
Dato2 = (myFile.read());
Dato1 = ((Dato1 * 10) + Dato2);

// close the file:
myFile.close();
Serial.write(Dato1);
} else {
// if the file didn’t open, print an error:
Serial.println(“error opening test.txt”);
}
}

void loop() {
// nothing happens after setup
}

Lee el valor en un objeto de tipo String, luego usa el método String::toInt() y te devolverá el valor como un int.