Thank you for your reply PaulS. That problem I think I can solve with something like a refresh button in the browser for the user, for example.
Anyway, I yet have the problem of the reset of my data. I thought that this could be some memory problem but, even when my load (the lamp) is turned on or off, the reset occurs.
Below, there is the code (there are some comments in portuguese because that is my language):
#include <SPI.h>
// Biblioteca utilizada para comunicação com o Arduino
#include <Ethernet.h>
// A linha abaixo permite definir o endereço físico (MAC ADDRESS) da...
//placa de rede.
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192, 168, 1, 178 }; //Define o endereço IP.
// Porta onde estará aberta para comunicação Internet e Arduino.
EthernetServer server(80);
String readString;
const int sensorPin = A0;
float sensorValue_aux = 0;
float sensorValue = 0;
float currentValue = 0;
float voltsporUnidade = 0.0048828125;
double potencia = 0;
double consumo;
double preco;
unsigned long tempo, tempo1, tempoT = millis();
int Pin = 9; // Pino digital onde será ligado e desligado o LED.
void setup(){
pinMode(Pin, OUTPUT); // Define o Pino 9 como saída.
Ethernet.begin(mac, ip); // Chama o MAC e o endereço IP da placa Ethernet.
server.begin(); // Inicia o servidor que esta inserido junto a placa Ethernet.
}
void loop(){
EthernetClient client = server.available();
if (client) {
while (client.connected()) {
if (client.available()) {
char c = client.read();
if (readString.length() < 100) {
readString += c;
}
if (c == '\n') {
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Refresh: 0.1");
client.println();
// A partir daqui começa os códigos html.
client.println("");
client.println("");
client.println("
Acende Lampada
");
client.println("
Acendendo lampada com Shield Ethernet e rele
");
client.println("
");
client.println("
");
client.println
("<a href="/facacomarduino/LampadaOn"">Acender lampada");
client.println
("<a href="/facacomarduino/LampadaOff"">Apagar lampada
");
client.println("");
client.println("");
if(readString.indexOf("facacomarduino/LampadaOn") > 0)
{
digitalWrite(Pin, HIGH); // Liga Lampada.
}
else {
if(readString.indexOf("facacomarduino/LampadaOff") > 0)
{
digitalWrite(Pin, LOW); // Desliga Lampada.
}
}
for(int i=500; i>0; i--)
{
sensorValue_aux = (analogRead(sensorPin) -511); // le o sensor na pino analogico A0 e ajusta o valor lido ja que a saída do sensor é vcc/2 para corrente =0
sensorValue += pow(sensorValue_aux,2); // soma os quadardos das leituras no laco
}
sensorValue = (sqrt(sensorValue/ 500)) * voltsporUnidade; // finaliza o calculo da médiaa quadratica e ajusta o valor lido para volts
currentValue = (sensorValue/66)*1000; // calcula a corrente considerando a sensibilidade do sensor (66 mV por amper)
tempo1 = tempo;
tempo = millis();
tempoT = tempo - tempo1;
consumo = consumo + (potencia/1000);
potencia = currentValue * 110;
preco = consumo * 0.35;
client.println("
");
client.println("corrente : ");
client.println(currentValue);
client.println(" A");
client.println("");
client.println("
");
client.println("
");
client.println("potencia : ");
client.println(potencia);
client.println(" W");
client.println("");
client.println("
");
client.println("
");
client.println("Consumo : ");
client.println(consumo);
client.println(" KWh");
client.println("");
client.println("
");
client.println("
");
client.println("Valor a pagar : ");
client.println(preco);
client.println(" (R$)");
client.println("");
readString="";
delay(1);
client.stop();
}
}
}
}
}