Ethenet com cartao SD

Estou tentando fazer uma aplicação onde utilizo a shield ethernet com cartão SD para que eu possa utilizar o cartao SD para guardar uma pagina html, acessa-la pelo navegador e dpois por action acionar uma TV, por exemplo por IR.
O meu problema surgi quando for ler os dados que são precisos para acionar a TV no SD e continuar mostrando a pagina na tela.
Pelo que eu entendi, o SD só pode abrir um arquivo pro vez, e tambem não consigo utilizar a ethernet e o SD ao mesmo tempo.
Alguma sugestão de como poderia fazer?

Vê se esse link ajuda

http://www.ladyada.net/learn/arduino/ethfiles.html

Olá!

Acho que está fazendo confusão.

Após carregar a página o programa fecha o arquivo que contém o HTML e fica pronto para fazer outras coisas.

Normalmente o tempo para ler o arquivo não é maior que 2 segundos.

Quando o arduino for controlar o IR a página HTML não será removido do monitor.

O tempo gasto para o arduino enviar um comando IR é menor que 1 segundo.

Abraço.
Fernando Garcia

É preciso é que a página não seja muito grande... A memória do Arduino não é infinita e páginas pesadas podem ser problemáticas para ler do cartão e servir pelo módulo ethernet.

Osias vlw pelo link acredito que vá me ajudar mas não se se irá me ajudar totalmente, irei tentar fazer testes e posto os resultados..

Fernando, eu disse aquilo por isto:

"Note que, pelo W5100 e o micro-SD compartilharem o bus SPI, só um pode ser ativado por vez. Se você está usando ambos os periféricos em seu programa, isto deve ser tomado cuidado em suas bibliotecas correspondentes. Se você não está usando um dos periféricos em seu programa, contudo, você vai precisar explicitamente deselecionar isto. Para fazer isto com o micro-SD, coloque o pino 4 como uma saída e escreva um HIGH nele. Para fazer isto com o W5100, coloque o pino digital 10 como saída HIGH."

https://www.robocore.net/modules.php?name=GR_LojaVirtual&prod=96

bubulindo, sobre isto estou ciente, então seria mais viável utilizar paginas fora do arduino e deixa-lo apenas para controlar o IR?

lonG eu estou numa situação mt parecido. Preciso que o Ethernet receba informações em tempo real do programa que está correndo no Arduino. Mas não estou com sucesso, ou roda o programa, ou funciona o Ethernet shield.

Você já usou millis para tentar resolver?

Aqui tem um webserver básico talvez ajude a entender o funcionamento.

Salve este arquivo como index.htm no cartão sd.

<!DOCTYPE html>
<html>
    <head>
        <title>Arduino SD Card Web Page</title>
    </head>
    <body>
        <h1>Hello from the Arduino SD Card!</h1>
        <p>A web page from the Arduino SD card server.</p>
    </body>
</html>

Código para o arduino.

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

// MAC address from Ethernet shield sticker under board
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(10, 0, 0, 20); // IP address, may need to change depending on network
EthernetServer server(80);  // create a server at port 80

File webFile;

void setup()
{
    Ethernet.begin(mac, ip);  // initialize Ethernet device
    server.begin();           // start to listen for clients
    Serial.begin(9600);       // for debugging
    
    // initialize SD card
    Serial.println("Initializing SD card...");
    if (!SD.begin(4)) {
        Serial.println("ERROR - SD card initialization failed!");
        return;    // init failed
    }
    Serial.println("SUCCESS - SD card initialized.");
    // check for index.htm file
    if (!SD.exists("index.htm")) {
        Serial.println("ERROR - Can't find index.htm file!");
        return;  // can't find index file
    }
    Serial.println("SUCCESS - Found index.htm file.");
}

void loop()
{
    EthernetClient client = server.available();  // try to get client

    if (client) {  // got client?
        boolean currentLineIsBlank = true;
        while (client.connected()) {
            if (client.available()) {   // client data available to read
                char c = client.read(); // read 1 byte (character) from client
                // last line of client request is blank and ends with \n
                // respond to client only after last line received
                if (c == '\n' && currentLineIsBlank) {
                    // send a standard http response header
                    client.println("HTTP/1.1 200 OK");
                    client.println("Content-Type: text/html");
                    client.println("Connection: close");
                    client.println();
                    // send web page
                    webFile = SD.open("index.htm");        // open web page file
                    if (webFile) {
                        while(webFile.available()) {
                            client.write(webFile.read()); // send web page to client
                        }
                        webFile.close();
                    }
                    break;
                }
                // every line of text received from the client ends with \r\n
                if (c == '\n') {
                    // last character on line of received text
                    // starting new line with next character read
                    currentLineIsBlank = true;
                } 
                else if (c != '\r') {
                    // a text character was received from client
                    currentLineIsBlank = false;
                }
            } // end if (client.available())
        } // end while (client.connected())
        delay(1);      // give the web browser time to receive the data
        client.stop(); // close the connection
    } // end if (client)
}

Aqui tem um básico que controla um led (não testei este).

Eu me baseei nestes links para entender o funcionamento da pagina via SD Card, e consegui ler páginas e até sub-páginas (dentro de pastas no SD).

LonG você deixará o Ethernet sempre em loop, qual processo você controlará?

Fernando,

Você acha viável, em um projeto como o seu (Ferduino) ou o Jarduino, tirar o LCD e usar como interface pagina
web (armazenada no arduino, não online)? Ou mesmo um app android conectado ao Arduino?

Att,

Roberto

Roberto, pegando gancho na sua pergunta..Eu estive no mesmo impasse.

No meu projeto (Sistema Embarcado por Impressão Digital) é necessário que o usuário tenha uma interface no protótipo. Isso ajudará a deixar o projeto mais claro pra ele. A paginação WEB é um grande avança, para se trabalhar em conjunto.

Você pode usar a interface no protótipo até mesmo para um "debug" visual do que acontece no projeto...

É viável, estou trabalhando nisso porém, este assunto não está relacionado com este tópico.

por coincidencia acabei encontrando estes links que o Fernando postou e consegui fazer igualzinho a ideia do exemplo, porem agora estou tendo dificuldade quando preciso acionar a TV.. quando incluo a lib IRremote (#include <IRremote.h>) a pagina simplesmente trava (acabei utilizando Ajax para mudar o status da página)

ola eu comprei um shield enthernet no qual tive a fazer umas coisas e reparei que o modulo do cartao sd do shield so conssegue ler ficheiro .txt .

eu gostava de abrir um ficheiro .html e o modulo sd n o reconhece.

se me podessem ajudar ficava muito grato.