Buongiorno a tutti e grazie per l'aiuto che date
sono alle prime armi con la programmazione per cui vi chiedo un aiuto.
Il programma che vi posto funziona perfettamente l'unico problema e che non riesco a fare una modifica. Allora sui pin 2 e 3 quando mando lo stato on vorrei solo un impulso di un paio di secondi e far tornare lo stato in off automaticamente , invece attualmente il programma mi permette di fare on o off ma solo manualmente. (Devo dare di nuovo il consenso per far tornare la condizione off)
Grazie
#include <SPI.h>
#include <Ethernet.h>
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192,168,0,108 };
const int MAX_PAGENAME_LEN = 8; // max characters in page name
char buffer[MAX_PAGENAME_LEN+1]; // additional character for terminating null
EthernetServer server(80);
void setup()
{
Serial.begin(9600);
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, 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())
{
// GET, POST, or HEAD
memset(buffer,0, sizeof(buffer)); // clear the buffer | scrive l'array con 0
if(client.readBytesUntil('/',buffer,sizeof(buffer)))
{
if(strcmp(buffer,"POST ") == 0) //cerca la scritta post http://ruturajv.wordpress.com/2005/12/25/http-post-request/
{
client.find("\n\r"); // skip to the body
// find string starting with "pin", stop on first blank line
// the POST parameters expected in the form pinDx=Y
// where x is the pin number and Y is 0 for LOW and 1 for HIGH
while(client.findUntil("pinD", "\n\r")){
int pin = client.parseInt(); // the pin number
int val = client.parseInt(); // 0 or 1
pinMode(pin, OUTPUT);
digitalWrite(pin, val);
}
}
sendHeader(client,"Domotica");
//create HTML button to control pin 8
client.println("<h2>Controllo Pin Digitali</h2>");
client.println("<table border='1' >");
for(int i=2;i<=3;i++)
{
client.print("<tr><td>digital pin ");
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>");
}
for(int i=5;i<10;i++)
{
client.print("<tr><td>digital pin ");
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();
}
}
}
// give the web browser time to receive the data
delay(1);
client.stop();
}
}
void sendHeader(EthernetClient client, char *title)
{
// send a standard http response header
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>");
}