Ciao a tutti, per l'esame di stato di quest'anno avevo pensato di portare un progettino sulla casa domonita, comandata tramite pagina web che risiederà su una micro sd e che sarà inviata da arduino (mega).
Il mio problema è che una volta che arduino invia la pagina al client, e poi premo il tasto di accensione led, non succede nulla... Sapreste aiutarmi?
#include <SPI.h>
#include <Ethernet.h>
#include <SD.h>
// MAC address
byte mac[] = { 0x04 , 0x18 , 0xD6 , 0x00, 0xXX, 0xXX };
// eventuale indirizzo IP statico da utilizzare
byte ip[]= {192,168,1,50 };
EthernetServer server(80);
EthernetClient client;
File htmlFile;
String readString;
int lcucina=3, lgarage=6, i, ltemp=8; //Interno Casa
int luce;
int vetL[]= {0,0,0,0,0,0,0,0};
byte x;
void setup() {
if(!SD.begin(4)) { return; }
// inizializzazione dell'ip, mac, e server
Ethernet.begin(mac, ip);
server.begin();
Serial.begin(9600);
while (!Serial) {
// wait for serial port to connect. Needed for Leonardo only
}
Serial.print("L'indirizzo IP del server e': ");
Serial.println(Ethernet.localIP());
// inizializzazione pin della shield ethernet
pinMode(10, OUTPUT);
// luce cucina
pinMode(lcucina, OUTPUT);
//luce garage
pinMode(lgarage, OUTPUT);
}
void loop() {
//Inizializzazione del server ed invio della pagina web
client = server.available();
if(client){
boolean currentLineIsBlank= true;
while(client.connected()){
if(client.available()){
char c=client.read();
Serial.write(c);
if (readString.length() < 100) {
//store characters to string
readString += c;
//Serial.write("C: "+ c);
}
if(c== '\n' && currentLineIsBlank){
//Serial.print(readString);
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println();
//apertura file html da sd
htmlFile= SD.open("casadom.htm");
if(htmlFile){
while(htmlFile.available()){
x=(htmlFile.read());
client.print(char(x));
//Serial.println(char(x));
}
htmlFile.close();
}
//Serial.print(readString);
if(readString.indexOf("luc1") > 0) {
Serial.write("funziona");
digitalWrite(lcucina, HIGH);
}
/*
if(readString.indexOf("luc5") > 0) luce=5;
if(readString.indexOf("luc1") > 0) luce=1;
switch(luce){
case '5':
if(vetL[luce]==0){
digitalWrite(lgarage, HIGH);
vetL[luce]=1;
}
else{
digitalWrite(lgarage, LOW);
vetL[luce]=0;
}
break;
case '1':
if(vetL[luce]==0){
digitalWrite(lcucina, HIGH);
vetL[luce]=1;
}
else{
digitalWrite(lcucina, LOW);
vetL[luce]=0;
}
break;
}
*/
}
if(c == '\n') {
currentLineIsBlank = true;
}
else if (c != '\r') {
currentLineIsBlank = false;
}
}
readString="";
}
client.stop();
Serial.println("client disconnected");
}
//Fine inizializzazionem invio della pagina web e disconnessione client
//Inizio Programma:
}
Il tasto della pagina web è questo:
<input type="submit" onclick='/luc1' value="On/Off">
La shield ethernet è una HanRun HR911105A 14/16 mentre la versione dell'ide è 1.5.8