salve a tutti,
dopo anni di cassetto o ripreso lo studio di arduino con un classico progetto di comunicazione HTTP per modificare lo stato di alcune porte e visualizzare alcuni ingressi.
il tutto funziona correttamente, poi mi è venuta l'idea di creare una seconda postazione identica (chiaramente con altro indirizzo ip), ora la mia domanda è come posso fare a passare i dati di input tra una scheda e altra?
per comandare le uscite basta gesttire correttamente i link di uscita ma il passaggio degli stati tra un dispositivo e l'altro?
spero di essere stato chiaro sul dubbio, posto anche porzione del codice per essere più chiaro.
// Creo una connessione al client
EthernetClient client = server.available();
if (client) {
while (client.connected()) {
if (client.available()) {
char c = client.read();
//Leggo i caratteri da HTTP
if (readString.length() < 100) {
//Inserisco i caratteri nella stringa
readString += c;
//Serial.print(c);
}
//Se la richiesta HTTP è andata a buon fine
if (c == '\n') {
statoluce ();
client.println(F("HTTP/1.1 200 OK")); //Invio nuova pagina
client.println(F("Content-Type: text/html"));
client.println();
client.println(F("<HTML>"));
client.println(F("<HEAD>"));
client.println(F("<meta http-equiv=\"refresh\" content=\"40; url=http://192.168.1.89\">"));
client.println(F("<style type=\"text/css\">"));
client.println(F("body{ background: rgb(197,222,234); background: -moz-linear-gradient(top, rgba(197,222,234,1) 0%, rgba(138,187,215,1) 34%, rgba(6,109,171,1) 100%); background: -webkit-linear-gradient(top, rgba(197,222,234,1) 0%,rgba(138,187,215,1) 34%,rgba(6,109,171,1) 100%); background: linear-gradient(to bottom, rgba(197,222,234,1) 0%,rgba(138,187,215,1) 34%,rgba(6,109,171,1) 100%) fixed; filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#c5deea', endColorstr='#066dab',GradientType=0 ); text-align:center;}"));
client.println(F("h1{ text-align: center; font-family:Arial, \"Trebuchet MS\", Helvetica, sans-serif;}"));
client.println(F("</style>"));
client.println(F("<TITLE>Primo piano</TITLE>"));
client.println(F("</HEAD>"));
client.println(F("<BODY>"));
client.println(F("<H1>Primo piano</H1>"));
client.println(F(" <hr />
"));
client.println(F("<table align=\"center\" >"));
if(stato0==1){
client.println(F("<tr valign=\"center\" align=\"center\"><td><H2>Corridoio: </h2></td><td><a href=\"/?button0\"\"><img src=\"https://3.bp.blogspot.com/-_mYr87VMrbE/W9qufv60QKI/AAAAAAAAPpQ/SvcLrJFGXCgGaFuCkVgdzMRWVTdiLEvYwCLcBGAs/s1600/off_1.gif\"/></a> </td></tr>"));
}
else{
client.println(F("<tr valign=\"center\" align=\"center\"><td><H2>Corridoio: </h2></td><td><a href=\"/?button0\"\"><img src=\"https://1.bp.blogspot.com/-rvc19NYOYC8/W9qugtajNaI/AAAAAAAAPpY/iwXFBs2DNQgjvt4fIRbXjFGlJRTYNjFdACLcBGAs/s1600/on_1.gif\"/></a> </td></tr>"));
}
client.println(F("</table>"));
client.println(F(" </BODY>"));
client.println(F("</HTML>"));
delay(1);
client.stop();
//Controlli su Arduino: Se è stato premuto il pulsante sul webserver
if (readString.indexOf("?button0") >0){
attivaluce(led1);
}
//Cancella la stringa una volta letta
readString="";
}
}
}
}