Hola a todos en el grupo, mi nivel de programación es básico aunque me defiendo al rato de programar pero tengo una consulta que agardecería mucho si alguien puede ayudarme a solucionar. Estoy almacenando en una micro SD conectada a un ethernet shiel, ya creo el archivo y guardo el dato, luedo leo la memoria, y quiero segun el dato leido por medio de una condicion if poder encender o apagr un puerto, esto quiero hacerlo para que los estados de los puertos se pongan tal y cual estaban antes de que arduino haya sido desconectado o perdido la fuente de aliemntación,el código que estoy utilizando es el siguiente, en la SD estoy guardando un cuero si el puerto está apagado y un 1 si el puerto está encendido y esta información está dentgro de la SD en un archivo denominado ValAgua.txt, el problema que tengo es que no se como usar el dato leido con la instrucción dataFile.read(); cree una variable de tipo byte, lo intenté con int u con String, la variable se llama ActualizaEstado en donde quiero cargar el valor leido del archivo ValAgua.txt para que con ese valor si es 1 dentro de un if me haga la accion de poner el puerto en estado lógico 1 ENCENDIDO, y si es 0 poner el estado lógico del puerto el o APAGADO, pero la variable no se carga con 0 o 1 sino un número diferente y por eso no entra en la condicion if que he creado en void setup; si alguine me pudiera ayudar para poder usar el valor leido del archivo dentro del if le agradecería mucho, sin más que decir me despido y agradezco su valiosa ayuda:
#include <SD.h>
#include <SPI.h>
#include <Ethernet.h>
#include <EthernetUdp.h>
//VARIABLES PARA HTTP y UDP//
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = {172,16,1,5};
byte gateway[] = {172,16,1,62};
byte subnet[] = {255,255,255,192};
byte ActualizaEstado;
int LED1=7;
int SD1=53;
EthernetServer server(80);
//VARIABLES PARA SD CARD//
const int chipSelect = 4;
void setup()
{
Ethernet.begin(mac, ip, gateway, subnet);
server.begin();
Serial.begin(9600);
SD.begin(chipSelect);
pinMode(LED1,OUTPUT);
pinMode(53, OUTPUT);
// Check for Ethernet hardware present
if (Ethernet.hardwareStatus() == EthernetNoHardware) {
Serial.println("No se encuentra el módulo Ethernet. No se puede ejecutar el programa sin el.");
while (true) {
delay(1); // do nothing, no point running without Ethernet hardware
}
}
if (Ethernet.linkStatus() == LinkOFF) {
Serial.println("Cable Ethernet no conectado.");
}
if(Ethernet.hardwareStatus() == EthernetW5100){
Serial.println("Controlador Ethernet W5100 detectado.");
}
else if(Ethernet.hardwareStatus() == EthernetW5200){
Serial.println("Controlador Ethernet W5200 detectado.");
}
else if(Ethernet.hardwareStatus() == EthernetW5500){
Serial.println("Controlador Ethernet W5500 detectado.");
}
if (!SD.begin(chipSelect))
{ Serial.println("No hay tarjeta");
return;
}
File dataFile = SD.open("ValAgua.txt");
if (dataFile) // Si ha podido abrir el fichero
{
while (dataFile.available()) // Mientras no llegues al final
ActualizaEstado = dataFile.read(); ///****AQUI NO SE CARGA ADECUADAMENTE EL VALOR*******////
if(ActualizaEstado == 1){
Serial.println(" - Se ha actualizado el estado del puerto 7 a UNO: ");
Serial.println(ActualizaEstado);
digitalWrite(LED1,HIGH);
}
if(ActualizaEstado == 0){
Serial.println(" - Se ha actualizado el estado del puerto 7 a CERO: ");
Serial.println(ActualizaEstado);
digitalWrite(LED1,LOW);
}
dataFile.close(); // Cierra el fichero al acabar
}
else // SI no puede abrir el fichero
Serial.println("Error, no puedo usar ValAgua.txt");
}