Hola, yo lo que veo es que si cargas un código CON HTML en la placa, y la sd está metida, no funciona nada. Tengo que sacar la SD y entonces funciona todo.
Yo no sabia del cardinfo y buscando por la red, encontré un trozo de código para esto mismo, para que me comprobara la SD y que yo fuera viendo lo que iba pasando (Lo del void Setup, debajo de Serial.begin(9600) ), le añadí la cabecera http, la configuración y fui viendo el proceso en el monitor serial..
Metele este código (Cambia la mac, IP, gateway y server port) a ver si cuando abras el monitor, ves algo (Y mete el index.htm en la sd):
#include <SD.h> //Iniciamos la libreria SD
#include <SPI.h> //Iniciamos la libreria Serial Peripheral Interface
#include <Ethernet.h> //Iniciamos la libreria Ethernet
byte mac[] = {0x90,0xA2,0xDA,0x00,0x00,0x00}; // Declaramos la MAC (Los 3 primeros octetos son de arduino, los otros inventados)
byte ip[] = {192,168,0,2}; // Declaramos la IP de la shield
byte gateway[] = {192,168,0,1}; // Declaramos la IP del router
byte subnet[] = {255,255,255,0}; // Declaramos la mascara de subred
EthernetServer servidor(1080); // Declaramos el puerto TCP del servidor 1080
File webFile;
void setup()
{
Ethernet.begin(mac, ip, gateway, subnet); // Inicializamos con las direcciones asignadas
servidor.begin(); // Arrancamos el server
Serial.begin(9600); // Iniciamos el monitor serial para comprobar errores
Serial.println("Inicializando MicroSD..."); // Inicializamos la SD card
if (!SD.begin(4)) { // Caso si no hay respuesta por parte de la SD
Serial.println("ERROR - Inicializacion MicroSD fallida!"); // Inicio fallido
return; // Volvemos a intentar inicializar la SD card
}
Serial.println("EXITO - MicroSD inicializada."); // Caso si hay respuesta por parte de la SD
if (!SD.exists("index.htm")) { // Comprueba en la SD si esta el archivo index.htm
Serial.println("ERROR - No encuentro index.htm!"); // Caso que no encuentra el archivo index.htm
return; // Volvemos a intentar inicializar la SD card
}
Serial.println("EXITO - Index.htm encontrado."); // Caso que si encuentra el archivo index.htm
}
void loop()
{
EthernetClient cliente= servidor.available(); // Server disponible. Intentamos tener un cliente
if(cliente)
{
boolean lineaenblanco=true; // Tenemos un cliente?? (VERDADERO O FALSO)
while(cliente.connected()) // Cliente conectado
{ // Los datos del cliente estan preparados para leerlos
if(cliente.available()) // Si el cliente esta¡ disponible
{
char c=cliente.read(); // Leemos peticion HTTP caracter a caracter(1 byte del cliente)
if (c == '\n' && lineaenblanco) { // La ultima linea de la peticion es en blanco y finaliza con "\n"
// Responde al cliente despues de la ultima linea recibida
cliente.println("HTTP/1.1 200 OK"); // Manda una cabecera http estandar
cliente.println("Content-Type: text/html");
cliente.println("Connection: close");
cliente.println();
// Manda una pagina web
webFile = SD.open("index.htm"); // Abre el archivo index.htm
if (webFile) {
while(webFile.available()) {
cliente.write(webFile.read()); // Manda una pagina web al cliente
}
webFile.close();
}
break;
}
// Cada linea del texto recibido del cliente acaba con "\r\n"
if (c == '\n') {
// Comenzando una nueva linea con el siguiente caracter leido
lineaenblanco = true; // Ultimo caracter en la linea de texto recibido
}
else if (c != '\r') {
lineaenblanco = false; // Un caracter de texto se recibe del cliente
}
} // Fin si (cliente.available())
} // Fin mientras (cliente.connected())
delay(1); // Dar tiempo al navegador web para recibir los datos
cliente.stop(); // Cerramos conexion
} // Fin si (cliente)
}
No sé que decirte, pero o puede que tengas el shield cascado o lo que está cascado es el bus entre la sd y el shield..A ver si alguien que controle más te dice algo mas específico del shield....
Saludos