Boa noite a todos, estou com um problema quanto demonstração do status dos botões quando ativos, o código está funcionando, o próprio arduino está fazendo o papel de webserver, com solicitação de senha Base64.

Não consegui fazer a cor do botão ficar em outra cor quando clicado demonstrando se esta ativa ou não, será que alguém pode dar uma força?

#define WEBDUINO_AUTH_REALM "Verificar Senha"

#include "SPI.h"
#include "Ethernet.h"
#include "WebServer.h"

boolean pin3 = false;
boolean pin4 = false;
boolean pin5 = false;
boolean pin6 = false;
boolean pin7 = false;
boolean pin8 = false;
boolean pin9 = false;
boolean pin10 = false;
boolean pin11 = false;
boolean pin12 = false;
boolean pin13 = false;
boolean pin14 = false;
boolean pin15 = false;
boolean pin16 = false;
boolean pin17 = false;
boolean pin18 = false;

static uint8_t mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
static uint8_t ip[] = { 192, 168, 1, 200 };
#define PREFIX ""
WebServer webserver(PREFIX, 8081);

void defaultCmd(WebServer &server, WebServer::ConnectionType type, char *, bool)
{
server.httpSuccess();
if (type != WebServer::HEAD)
{
P(helloMsg) = "<center><h1>Seja bem vindo!</h1><a href=\"private.html\">Acesso restrito</a>";
server.printP(helloMsg);
}
}

void privateCmd(WebServer &server, WebServer::ConnectionType type, char *, bool)
{
if (server.checkCredentials("YWRtaW46MTg2MDEx"))
{
server.httpSuccess();
if (type != WebServer::HEAD)
{
P(HTMLOPEN) = "<html>";
P(background) = "<body style=background-color:BLACK>"; //set background to BLACK
P(helloMsg) = "<center><font color=’green’> <h1>CASA ONLINE </h1></font></center>";
P(FORMOPEN) = "<center><form action=formLogin.html method=POST name=LED id=LED><input type=hidden name=botao id=botao value=0 ";
P(button1) = "<center><button name=pin3 value='Liga' type=submit style=font-weight:bold;color:GREEN;height:70px;width:145px>Luz Varanda On</button>";
P(button2) = "<button name=pin4 value='Desliga' type=submit style=font-weight:bold;color:red;height:70px;width:145px>Luz Varanda Off</button>";
P(button3) = "<center><button name=pin5 value='Liga' type=submit style=font-weight:bold;color:GREEN;height:70px;width:145px>Luz Sala On</button>";
P(button4) = "<button name=pin6 value='Desliga' type=submit style=font-weight:bold;color:red;height:70px;width:145px>Luz Sala Off</button>";
P(button5) = "<center><button name=pin7 value='Liga' type=submit style=font-weight:bold;color:GREEN;height:70px;width:145px>Luz Quintal On</button>";
P(button6) = "<button name=pin8 value='Desliga' type=submit style=font-weight:bold;color:red;height:70px;width:145px>Luz Quintal Off</button>";
P(button7) = "<center><button name=pin9 value='Liga' type=submit style=font-weight:bold;color:GREEN;height:70px;width:145px>Luz Sala On</button>";
P(button8) = "<button name=pin10 value='Desliga' type=submit style=font-weight:bold;color:red;height:70px;width:145px>Luz Sala Off</button>";
P(button9) = "<center><button name=pin11 value='Liga' type=submit style=font-weight:bold;color:GREEN;height:70px;width:145px>Luz Sala On</button>";
P(button10) = "<button name=pin12 value='Desliga' type=submit style=font-weight:bold;color:red;height:70px;width:145px>Luz Sala Off</button>";
P(button11) = "<center><button name=pin13 value='Liga' type=submit style=font-weight:bold;color:GREEN;height:70px;width:145px>Luz Sala On</button>";
P(button12) = "<button name=pin14 value='Desliga' type=submit style=font-weight:bold;color:red;height:70px;width:145px>Luz Sala Off</button>";
P(button13) = "<center><button name=pin15 value='Liga' type=submit style=font-weight:bold;color:GREEN;height:70px;width:145px>Luz Sala On</button>";
P(button14) = "<button name=pin16 value='Desliga' type=submit style=font-weight:bold;color:red;height:70px;width:145px>Luz Sala Off</button>";
P(button15) = "<center><button name=pin17 value='Liga' type=submit style=font-weight:bold;color:GREEN;height:70px;width:145px>Luz Sala On</button>";
P(button16) = "<button name=pin18 value='Desliga' type=submit style=font-weight:bold;color:red;height:70px;width:145px>Luz Sala Off</button>";
P(FORMCLOSE) = "</form>";
P(BODYCLOSE) = "</body>";
P(HTMLCLOSE) = "</html>";

server.printP(HTMLOPEN);
server.printP(background);
server.printP(helloMsg);
server.printP(FORMOPEN);
server.printP(button1);
server.printP(button2);
server.printP(button3);
server.printP(button4);
server.printP(button5);
server.printP(button6);
server.printP(button7);
server.printP(button8);
server.printP(button9);
server.printP(button10);
server.printP(button11);
server.printP(button12);
server.printP(button13);
server.printP(button14);
server.printP(button15);
server.printP(button16);
server.printP(FORMCLOSE);
server.printP(BODYCLOSE);
server.printP(HTMLCLOSE);
}
}
else
{
server.httpUnauthorized();
}
}

void formCmd(WebServer &server, WebServer::ConnectionType type, char *url_tail, bool tail_complete)
{
if (server.checkCredentials("YWRtaW46MTg2MDEx"))
{
if (type == WebServer::POST)
{

bool repeat;
char name[16], value[16];
do
{
repeat = server.readPOSTparam(name, 16, value, 16);

if (strncmp("pin3", name, 8) == 0)
{
Serial.println("Ligado");
digitalWrite(3, LOW);
break;
}
else if (strncmp("pin4", name, 8) == 0)
{
Serial.println("Desligado");
P.println("Desligado");
digitalWrite(3, HIGH);

pin3 = false;
break;
}

if (strncmp("pin5", name, 8) == 0)
{
Serial.println("Botao 1 acionado");
digitalWrite(4, LOW);
break;
}
else if (strncmp("pin6", name, 8) == 0)
{
Serial.println("Botao 2 acionado");
digitalWrite(4, HIGH);

pin4 = false;
break;
}

if (strncmp("pin7", name, 8) == 0)
{
Serial.println("Botao 1 acionado");
digitalWrite(6, LOW);
break;
}
else if (strncmp("pin8", name, 8) == 0)
{
Serial.println("Botao 2 acionado");
digitalWrite(6, HIGH);

pin7 = false;
break;
}

if (strncmp("pin9", name, 8) == 0)
{
Serial.println("Botao 1 acionado");
digitalWrite(7, LOW);
break;
}
else if (strncmp("pin10", name, 8) == 0)
{
Serial.println("Botao 2 acionado");
digitalWrite(7, HIGH);

pin9 = false;
break;
}

if (strncmp("pin11", name, 8) == 0)
{
Serial.println("Botao 1 acionado");
digitalWrite(8, LOW);
break;
}
else if (strncmp("pin12", name, 8) == 0)
{
Serial.println("Botao 2 acionado");
digitalWrite(8, HIGH);

pin11 = false;
break;
}

if (strncmp("pin13", name, 8) == 0)
{
Serial.println("Botao 1 acionado");
digitalWrite(9, LOW);
break;
}
else if (strncmp("pin14", name, 8) == 0)
{
Serial.println("Botao 2 acionado");
digitalWrite(9, HIGH);

pin13 = false;
break;
}

if (strncmp("pin15", name, 8) == 0)
{
Serial.println("Botao 1 acionado");
digitalWrite(11, LOW);
break;
}
else if (strncmp("pin16", name, 8) == 0)
{
Serial.println("Botao 2 acionado");
digitalWrite(11, HIGH);

pin15 = false;
break;
}

if (strncmp("pin17", name, 8) == 0)
{
Serial.println("Botao 1 acionado");
digitalWrite(12, LOW);
break;
}
else if (strncmp("pin18", name, 8) == 0)
{
Serial.println("Botao 2 acionado");
digitalWrite(12, HIGH);

pin17 = false;
break;
}


} while (repeat);

server.httpSeeOther(PREFIX "/private.html");

}
}
else
{
server.httpUnauthorized();
}
}

void setup()
{
Serial.begin(9600);
Ethernet.begin(mac, ip);
webserver.setDefaultCommand(&defaultCmd);
webserver.addCommand("index.html", &defaultCmd);
webserver.addCommand("private.html", &privateCmd);
webserver.addCommand("formLogin.html", &formCmd);
webserver.begin();
pinMode(3, OUTPUT);
digitalWrite(3,HIGH);
pinMode(4, OUTPUT);
digitalWrite(4,HIGH);
pinMode(6, OUTPUT);
digitalWrite(6,HIGH);
pinMode(7, OUTPUT);
digitalWrite(7,HIGH);
pinMode(8, OUTPUT);
digitalWrite(8,HIGH);
pinMode(9, OUTPUT);
digitalWrite(9,HIGH);
pinMode(11, OUTPUT);
digitalWrite(11,HIGH);
pinMode(12, OUTPUT);
digitalWrite(12,HIGH);

}

void loop()
{
char buff[64];
int len = 64;
webserver.processConnection(buff, &len);
}

Exibições: 437

Responder esta

Respostas a este tópico

Bom dia,

nao sei quase nada de programaçao, mas uso esse codigo que funciona bem, veja se te atende e te mando o codigo

http://sergiosgarbi.dyndns.org:83

Sérgio

Euclides

Se quizer acompanhar visualmente a açao dos botoes

http://justin.tv/ssgarbi

Sérgio Sgarbi

Olá Sérgio, obrigado pela atenção, seu código está ótimo, será que poderia me fornecer? O meu pede uma senha antes da conexão por segurança, caso contrário poderiam ficar acionando seus equipamentos. Estou realizando este projeto para implementar aqui em minha residência.

Precisando de qualquer coisa pode falar também.

vou montar um arquivo com todas as bibliotecas e posto aqui mesmo.

aqui neste .rar estao os arquivos,  codigo e libraries, veja se ta ok, ou se falta alguma lib e me avise

Anexos

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço