Ciao eccomi qui ad aprire un topic che sarà gia stato aperto da molti altri ma come buona norma del forum ho già setacciato l'intera rete web dai Blog, alle immagini,google si rifiuta di leggere le parole Web-server SD...etc..etc.. e purtroppo non sono ancora riuscito a capire ( perchè le cose vanno capite) il metodo per interfacciare un file index.htm residente su SD scheda ethernet e lo sketch per eseguire un web-server semplice con funzioni di input-output e magari un valore di temperatura...
Vi metto a conoscenza del fatto che tra i mille esempi trovati e provati almeno l'80% fà uso di librerie esterne quali tinyWebserver,Webduino e ancora altre che non ricordo...io vorrei scrivere lo sketch usando l'Arduino1 con la shield Ethernet e scheda SD senza uso di librerie proprio per capire il modo per interpretare i dati su Scheda SD all' arduino...
Allego codice sketch per il momento funzionante che mi fà vedere solamente la pagina WEB su PC con n.2 Button creati con l'utility webJquery e chiaramente l'intento sarebbe quello di far accendere un relè per ogni button con i comandi ON-OFF...
#include <SPI.h>
#include <Ethernet.h>
#include <SD.h>
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192,168,2, 130 };
File htmlFile;
Server server(80);
byte BYTE ;
void setup()
{
Ethernet.begin(mac, ip);
server.begin();
if (!SD.begin(4)) { return; }
}
void loop()
{
Client client = server.available();
if (client) {
boolean currentLineIsBlank = true;
while (client.connected()) {
if (client.available()) {
char c = client.read();
if (c == '\n' && currentLineIsBlank) {
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println();
htmlFile = SD.open("index.htm");
if (htmlFile) {
while (htmlFile.available()) {
client.print(htmlFile.read(), BYTE);
}
// close the file:
htmlFile.close();
}
break;
}
if (c == '\n') {
currentLineIsBlank = true;
}
else if (c != '\r') {
currentLineIsBlank = false;
}
}
}
delay(1);
client.stop();
}
}
Insieme allego la pagina WEB "index.htm"
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="initial-scale=1.0, user-scalable=no">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<title></title>
<link rel="stylesheet" href="https://d10ajoocuyu32n.cloudfront.net/mobile/1.3.1/jquery.mobile-1.3.1.min.css">
<!-- Extra Codiqa features -->
<link rel="stylesheet" href="codiqa.ext.css">
<!-- jQuery and jQuery Mobile -->
<script src="https://d10ajoocuyu32n.cloudfront.net/jquery-1.9.1.min.js"></script>
<script src="https://d10ajoocuyu32n.cloudfront.net/mobile/1.3.1/jquery.mobile-1.3.1.min.js"></script>
<!-- Extra Codiqa features -->
<script src="https://d10ajoocuyu32n.cloudfront.net/codiqa.ext.js"></script>
</head>
<body>
<!-- Home -->
<div data-role="page" id="page1">
<div data-role="content">
<div data-role="fieldcontain">
<fieldset data-role="controlgroup" data-type="horizontal">
<legend>
LUCI
</legend>
<input id="radio2" name="LUCI" value="radio1" type="radio">
<label for="radio2">
ON
</label>
<input id="radio3" name="LUCI" value="radio2" type="radio">
<label for="radio3">
OFF
</label>
</fieldset>
</div>
<div data-role="fieldcontain">
<fieldset data-role="controlgroup" data-type="horizontal">
<legend>
Caldaia
</legend>
<input id="radio5" name="Caldaia" value="radio3" type="radio">
<label for="radio5">
ON
</label>
<input id="radio6" name="Caldaia" value="radio4" type="radio">
<label for="radio6">
OFF
</label>
</fieldset>
</div>
</div>
</div>
</body>
</html>
Ora qual'è il modo più semplice per scrivere degli script per far interagire i due codici tra di loro ??
Ringrazio in anticipo per le risposte e magari per qualche esempio da studiare...grazie