24/02/15 12:52
alex1995
salve, devo conservare dei dati e purtroppo non posso farlo sulla scheda sd o sull eeprom quindi devo conservarli in una variabile il codice è questo:
la variabile cambia stato quando invio la richiesta ma poi torna al valore che ha nel setup, come mai?
#include <SPI.h> #include <Ethernet.h> #include <WString.h> byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; String stato = "on"; IPAddress ip(192, 168, 1, 177); EthernetServer server(90); void setup() { Serial.begin(9600); Ethernet.begin(mac, ip); server.begin(); Serial.println("server is at "); Serial.println(Ethernet.localIP()); pinMode(2, OUTPUT); pinMode(3, OUTPUT); pinMode(4, OUTPUT); pinMode(5, OUTPUT); pinMode(6, OUTPUT); pinMode(7, OUTPUT); pinMode(9, OUTPUT); pinMode(8, OUTPUT); pinMode(11, OUTPUT); SD.begin(4); String stato = "on"; } void rispondiClient(String risposta, EthernetClient ethclient) { ethclient.println("HTTP/1.1 200 OK"); ethclient.println("Content-Type: text/html"); ethclient.println("Connection: close");// the connection will be closed after completion of the response ethclient.println("Refresh: 5");// refresh the page automatically every 5 sec ethclient.println(); ethclient.println("<!DOCTYPE HTML>"); ethclient.println("<html><body>"); ethclient.println(risposta); ethclient.println("</body></html>"); } void loop() { Serial.println(stato); String getRequest = String(); char requestChar; EthernetClient HTTPClient = server.available(); if (HTTPClient) { Serial.println("new client"); boolean currentLineIsBlank = true; boolean sentHeader = false; while (HTTPClient.connected()) { if (HTTPClient.available()) { while (HTTPClient.available()) { char requestChar = HTTPClient.read(); getRequest += requestChar; if (requestChar == '\n') { while (HTTPClient.available()) { char requestChar = HTTPClient.read(); getRequest += requestChar; if (requestChar == '\n') { break; } } break; } } if (getRequest.indexOf("on") != -1) { String stato = "on"; digitalWrite(8, HIGH); rispondiClient(stato, HTTPClient); } if (getRequest.indexOf("off") != -1) { String stato = "off"; digitalWrite(8, LOW); rispondiClient(stato, HTTPClient); } } break; } } if(stato = "on") { digitalWrite(8, HIGH); } if(stato = "off") { digitalWrite(8, LOW); } } HTTPClient.stop(); delay(100); Serial.println("client disconnected"); }
la variabile cambia stato quando invio la richiesta ma poi torna al valore che ha nel setup, come mai?
aaa