me estoy volviendo loco para encontrar el fallo ayer me funcionaba bien y hoy después de seguir programando al guardar en un archivo en la tarjeta sd la primera vez que en el bucle loop quiere guardar guarda bien hasta hay todo correcto el problema es que la siguiente vez que tiene que guardar me dice que" El archivo no se ha podido abrir correctamente"
alguien me puede orientar el por que de este fallo por que yo no lo recuentro por mas que busco
gracias de antemano
:o
En estos momentos tenemos a surbyte con un lápiz atado a la ouija, pero en lugar de tu esquema y tu código hubo interferencias y le ha salido el plano de un "tornillo recolector de zanahorias" de un tal da Vinci. ¿Podrías proporcionarnos tu esquema y código por la vía habitual (un post) antes de que surbyte sacrifique al pobre pollo?
buenas explico un poco mejor el problema haber si ha alguien le a ocurrido algo similar resulta que la tarjeta sd lee y escribe todo perfecto pero en el momento que conecto mi arduino via internet da fallo al intentar leer los archivos uso un arduino mega con un silde ethernet alguien sabe a que se puede deber
gracias.
Lo que quería decir noter es que debes agregar más información a tu pregunta.
- ¿Qué modulo SD estás usando?
- ¿Qué librería estás usando?
- ¿Cómo la has conectado a tu Arduino Mega?
En lo posible agrega el link de la librería, imagen(es), en caso de ser necesario, el código de tu sketch, usando las etiquetas correspondientes. (Si no sabes a que me refiero con tags lee este post)
#include <SD.h>
#include <SPI.h>
#include <Ethernet.h>
IPAddress ip(192, 168, 1, 177);
IPAddress gateway(192, 168, 1, 1);
IPAddress subnet(255, 255, 255, 0);
EthernetServer server(80);
File Archivo;
char a;
String nombre;
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
void setup(void)
{
Serial.begin(9600);// Iniciamos el puerto serie a 9600 baudios
Serial.println("Comenzando la comunicación con la tarjeta SD");
if (!SD.begin()) { //Se muestra por el monitor si la comunicación se ha establecido correctamente
//o ha habido algún tipo de error y enciende un led si hemos tenido algun tipo de fallo.
Serial.println("Se ha producido un fallo al iniciar la comunicación");
}
else {
Serial.println("Se ha iniciado la comunicación correctamente");
}
Ethernet.begin(mac, ip, gateway, subnet);
server.begin();
//Se muestra por el monitor serial que la conexión está establecida
Serial.print("server is at ");
Serial.println(Ethernet.localIP());
Archivo = SD.open("config/hora.txt");
if (Archivo) {// Si lo hemos podido abrir correctamente:
while (Archivo.available())
{
a = char(Archivo.read());
if (a != ';') {
nombre = nombre + a;
}
else {
Serial.print (nombre);
nombre = "";
}
}
// Cerramos el archivo.
Archivo.close();
}
else {
Serial.println("fallo hora.txt");
}
}
void loop (void) {
}
mirar si podéis probar este código yo si intento leer ese archivo me da fallo y si pongo la parte de la lectura de sd por encima de la inicializacion de internet si me lee el archivo podría alguien probarlo y ver si le ocurre lo mismo o mirar el codigo habr que hago mal.
gracias
En el SD.begin, no pones el pin del chipselect. Si usas el lector de SD de un ethernet shield, tendrás que decirle que es el 4, o sea:
if (!SD.begin(4)) { //Se muestra por el monitor si la comunicación se ha establecido correctamente
//o ha habido algún tipo de error y enciende un led si hemos tenido algun tipo de fallo.
Serial.println("Se ha producido un fallo al iniciar la comunicación");
}
Solucionado
Muchas gracias
explico lo que pasaba por si le pasa ha alguien alguna vez estaba usando una pantalla lcd de nokia y la librería usada usaba los pines para la conexion con la pantalla del in 3 al 7 por lo tanto estaba usando el pin 4 y con lo cual me estaba creando conflictos, ya e cambiado en la librería la asignación de los pines y todo marcha bien
Me alegro que lo hayas resuelto, pero con el código que pusiste, no era posible saberlo, ya que no aparecia la pantalla por ningún lado. De aquí, la importancia de poner el código completo.
Efectivamente, me sumo a lo dicho por carmeloco. Para poder ayudar a resolver la mayoría de los problemas es necesario disponer de TODA la información, a no ser que quien pregunta sepa exactamente cuál es problema con el que está enfrentándose.
De verdad que ni el mayor gurú de arduino es adivino.