(ho cambiato sketch) ho provato in questo modo ma non funge:
#include <String.h>
#include <SPI.h>
#include <Ethernet.h>
#include <Flash.h>
#include <SD.h>
#include <TinyWebServer.h>
int led=13;
const int pagina = 0;
const int SD_CS = 4;
const int ETHER_CS = 10;
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; //physical mac address
byte ip[] = { 192, 168, 1, 177 }; // ip in lan
byte gateway[] = { 192, 168, 1, 1 };
byte subnet[] = { 255, 255, 255, 0 };
boolean file_handler(TinyWebServer& web_server);
boolean index_handler(TinyWebServer& web_server);
TinyWebServer::PathHandler handlers[] = {
{"/", TinyWebServer::GET, &index_handler },
{"/" "*", TinyWebServer::GET, &file_handler },
{NULL},
};
const char* headers[] = {"Content-Length",NULL};
TinyWebServer web = TinyWebServer(handlers, headers);
boolean has_filesystem = true;
Sd2Card card;
SdVolume volume;
SdFile root;
SdFile file;
void send_file_name(TinyWebServer& web_server, const char* filename) {
if (!filename) {
web_server.send_error_code(404);
web_server << F("Could not parse URL");
} else {
TinyWebServer::MimeType mime_type = TinyWebServer::get_mime_type_from_filename(filename);
web_server.send_error_code(200);
web_server.send_content_type(mime_type);
web_server.end_headers();
if (file.open(&root, filename, O_READ))
{
Serial << F("Read file "); Serial.println(filename);
const char* filename = pagina;
web_server.send_file(file);
file.close();
}
else {
web_server << F("Could not find file: ") << filename << "\n";
}
}
}
boolean file_handler(TinyWebServer& web_server) {
char* filename = TinyWebServer::get_file_from_path(web_server.get_path());
send_file_name(web_server, filename);
free(filename);
return true;
}
boolean index_handler(TinyWebServer& web_server) {
send_file_name(web_server, "INDEX.HTM");
return true;
}
void setup() {
Serial.begin(9600);
pinMode(SS_PIN, OUTPUT); // set the SS pin as an output
digitalWrite(SS_PIN, HIGH); // and ensure SS is high
pinMode(ETHER_CS, OUTPUT); // Set the CS pin as an output
digitalWrite(ETHER_CS, HIGH); // Turn off the W5100 chip! (wait for
pinMode(SD_CS, OUTPUT); // Set the SDcard CS pin as an output
digitalWrite(SD_CS, HIGH); // Turn off the SD card! (wait for
card.init(SPI_FULL_SPEED, SD_CS);
volume.init(&card);
root.openRoot(&volume);
Ethernet.begin(mac, ip, gateway, subnet);
web.begin();
Serial << F("Ready to accept HTTP requests.\n");
pinMode(led, OUTPUT);
}
void loop()
{
web.process();
if ( pagina == "ON.HTM" ){
digitalWrite(led, HIGH);
}
else{
digitalWrite(led, LOW);
}
}
P.S= questo sketch è di pablos, lo ho trovato in un topic
non capisco cosa non va, forse nella const char* sotto il serial print che manda sulla seriale la pagina richiesta dal client.
ho allegato anche i file htm che uso( l' index è solo un redirect per andarte alla pagina off, ma invece che modificare lo sketch ho usato questa via)