Salve mi sono appena registrato e già inizio a dare fastidio. Vorrei creare con Arduino una pagina web, molto rudimentale, per poter attivare un pin (quindi out) in modalità impulsiva e avere sulla stessa pagina lo stato di un altro pin (qiundi in), quest'ultimo per verificare l'effettiva accensione di una lampada per esempio. Ho trovato in rete questo sketch riferito a due interruttori:
#include <SPI.h>
#include <Ethernet.h>
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192,168,xxx,xxx };
const int MAX_PAGENAME_LEN = 8;
char buffer[MAX_PAGENAME_LEN+1];
EthernetServer server(80);
void setup()
{
Serial.begin(9600);
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
Ethernet.begin(mac, ip);
server.begin();
digitalWrite(10,HIGH);
delay(2000);
}
void loop()
{
EthernetClient client = server.available();
if (client)
{
int type = 0;
while (client.connected())
{
if (client.available())
{
memset(buffer,0, sizeof(buffer));
if(client.readBytesUntil('/',buffer,sizeof(buffer)))
{
if(strcmp(buffer,"POST ") == 0)
{
client.find("\n\r");
while(client.findUntil("pinD", "\n\r")){
int pin = client.parseInt();
int val = client.parseInt();
pinMode(pin, OUTPUT);
digitalWrite(pin, val);
}
}
sendHeader(client,"Domotica");
client.println("<h2>Controllo Pin Digitali</h2>");
client.println("<table border='1' >");
for(int i=2;i<3;i++)
{
client.print("<tr><td>luce letto ");
client.print(i);
client.print(" </td><td>");
client.print("<form action='/' method='POST'><p><input type='hidden' name='pinD");
client.print(i);
client.print("'");
client.println(" value='0'><input type='submit' value='0'/></form>");
client.print(" </td><td>");
client.print("<form action='/' method='POST'><p><input type='hidden' name='pinD");
client.print(i);
client.print("'");
client.print(" value='1'><input type='submit' value='1'/></form>");
client.print(" </td><td>stato: ");
if(digitalRead(i)==1)
client.print("ON");
else
client.print("OFF");
client.println("</td></tr>");
}
for(int i=3;i<4;i++)
{
client.print("<tr><td>scala ");
client.print(i);
client.print(" </td><td>");
client.print("<form action='/' method='POST'><p><input type='hidden' name='pinD");
client.print(i);
client.print("'");
client.println(" value='0'><input type='submit' value='Off'/></form>");
client.print(" </td><td>");
client.print("<form action='/' method='POST'><p><input type='hidden' name='pinD");
client.print(i);
client.print("'");
client.print(" value='1'><input type='submit' value='On'/></form>");
client.print(" </td><td>stato: ");
if(digitalRead(i)==1)
client.print("ON");
else
client.print("OFF");
client.println("</td></tr>");
}
client.println("</table>");
client.println("</body></html>");
client.stop();
}
}
}
delay(1);
client.stop();
}
}
void sendHeader(EthernetClient client, char *title)
{
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println();
client.print("<html><head><title>");
client.print(title);
client.println("</title><body>");
}
Spero ci sia qualcuno che mi possa aiutare.
Grazie anticipatamente.
Saluti Andrea
Come suggerito ho cercato di modificare il codice, spero vada bene.