automação residencial - criar botoes html com ethernet shield

Estou inciando com arduino, e peguei alguns codigos prontos na internet que funcionam perfeitamente, porem com apenas 02 e 03 botões para acionar via web. Gostaria de implementar isso para adicionar mais botões, mas estou tendo dificuldades. Se tiver um bom samaritano que possa me ajudar, fico muito agradecido.

Abaixo esta o codigo que estou tentando usar como teste, mas qdo clico no botão o rele no arduino não funciona. Gostaria de saber onde estou errando.

#include <SPI.h>
#include <Ethernet.h>
byte mac[] = { 0xAA, 0xBB, 0xCC, 0xDD, 0xEE, 0xFF };
byte ip[] = { 192, 168, 0, 99 };
EthernetServer server(80);
// define as comunicações do ethernet shield

int sala = 3;
int garagem = 4;
int area = 5;
int lavanderia = 6;
char c = 0;
char command[4] = "\0"; //variaveis onde serao ligados o cooler e a lampada

void setup()
{
Ethernet.begin(mac, ip);
server.begin();
pinMode(sala, OUTPUT);
pinMode(garagem, OUTPUT);
pinMode(area, OUTPUT);
pinMode(lavanderia, OUTPUT);
} //inicializa o ethernet shield e define as saidas

void loop()
{
EthernetClient client = server.available();
if (client) {
// an http request ends with a blank line
boolean current_line_is_first = false;
boolean current_line_is_blank = true;
while (client.connected()) {
if (client.available()) {
char c = client.read();
if (c == '\n' && current_line_is_blank) {
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println();

client.println("<body background-color:#040300>");

client.println("<h1><center> Projeto Morilion</h1><hr>");
// craindo titulo
client.println("<form method=get name=form><center>");
client.println("<button name=b value=1 type=submit style=height:60px; width:150px> Acender Sala </button>");
client.println("<button name=b value=2 type=submit style=height:60px; width:150px> Apagar Sala </button>");
client.println("<br/><p>");
client.println("<button name=b value=3 type=submit style=height:60px; width:150px> Acender Garagem </button>");
client.println("<button name=b value=4 type=submit style=height:60px; width:150px> Apagar Garagem </button>");
client.println("<br/><p>");
client.println("<button name=b value=5 type=submit style=height:60px; width:150px>Acender Area Lazer</button>");
client.println("<button name=b value=6 type=submit style=height:60px; width:150px>Apagar Area Lazer</button>");
client.println("<br/><p>");
client.println("<button name=b value=7 type=submit style=height:60px; width:150px>Acender Lavanderia</button>");
client.println("<button name=b value=8 type=submit style=height:60px; width:150px>Apagar Lavanderia</button>");
client.println("<br/><p>");
break;
}
if (c == '\n') {
current_line_is_first = false;
current_line_is_blank = true;
}
else if (c != '\r') {
current_line_is_blank = false;
}
if (current_line_is_first && c == '=') {
for (int i = 0; i < 1; i++) {
c = client.read();
command[i] = c;
} // Nessa parte atribumos os valores que ser~ao enviados quando os botoes forem acionados,
// o metodo de envio dos valores, o
// nome de cada bot~ao e seus tamanhos.

if (!strcmp(command, "1")) {
digitalWrite(sala, HIGH);
}
else if (!strcmp(command, "2")) {
digitalWrite(sala, LOW);
}
if (!strcmp(command, "3")) {
digitalWrite(garagem, HIGH);
}
else if (!strcmp(command, "4")) {
digitalWrite(garagem, LOW);
}
if (!strcmp(command, "5")) {
digitalWrite(area, HIGH);
}
else if (!strcmp(command, "6")) {
digitalWrite(area, LOW);
}
if (!strcmp(command, "7")) {
digitalWrite(lavanderia, HIGH);
}
else if (!strcmp(command, "8")) {
digitalWrite(lavanderia, LOW);
}
}
}
}
delay(1000);
client.stop();
} //parte do controle dos botões

client.println("</body>");
} //final da pagina html

Exibições: 7396

Responder esta

Respostas a este tópico

Tente este código.

#include <SPI.h>
#include <Ethernet.h>

byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};
IPAddress ip(192,168,25,30);

EthernetServer server(80);

void setup() {
  Serial.begin(9600);
 
  Ethernet.begin(mac, ip);
  server.begin();
  Serial.print("server is at ");
  Serial.println(Ethernet.localIP());
   pinMode(9, OUTPUT);
   digitalWrite(9, LOW);
  pinMode(8, OUTPUT);
  digitalWrite(8, LOW);
  pinMode(7, OUTPUT);
  digitalWrite(7, LOW);
 
}


void loop() {
  EthernetClient client = server.available();
  if (client) {
    Serial.println("new client");
     
    boolean currentLineIsBlank = true;
   
    // Variaveis da aula 4
    String vars;
    int varled1_OnOff = 0;
    int varled2_OnOff = 0;
    int varled3_OnOff = 0;
    //
   
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        Serial.write(c);
        vars.concat(c);    
      
        // Maniuplacao das variaveis da aula 4
        if (vars.endsWith("/led1_on")) varled1_OnOff = 1;
        if (vars.endsWith("/led1_off")) varled1_OnOff = 2;
        if (vars.endsWith("/led2_on")) varled2_OnOff = 1;
        if (vars.endsWith("/led2_off")) varled2_OnOff = 2;
        if (vars.endsWith("/led3_on")) varled3_OnOff = 1;
        if (vars.endsWith("/led3_off")) varled3_OnOff = 2;
        //
      
        if (c == '\n' && currentLineIsBlank) {
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println("Connnection: close");
          client.println();
          client.println("<!DOCTYPE HTML>");
          client.println("<html>");
       
          // Condicoes de acionamento da aula 4
        
                 client.println("<input type=button value=Ligar style=height:60px; width:300px ");
                 client.println(" onclick=\"document.location='/led1_on'\" />");
                 client.println("<input type=button value=Desligar style=height:60px; width:300px ");
                 client.println(" onclick=\"document.location='/led1_off'\" />");
                 client.println("<br>");
                 
                 client.println("<input type=button value=Ligar style=height:60px; width:300px ");
                 client.println(" onclick=\"document.location='/led2_on'\" />");
                 client.println("<input type=button value=Desligar style=height:60px; width:300px ");
                 client.println(" onclick=\"document.location='/led2_off'\" />");
                 client.println("<br>");

                 client.println("<input type=button value=Ligar style=height:60px; width:300px ");
                 client.println("onclick=\"document.location='/led3_on'\" />");
                 client.println("<input type=button value=Desligar style=height:60px; width:300px ");
                 client.println(" onclick=\"document.location='/led3_off'\" />");
                 client.println("<br>");

          if (varled1_OnOff == 1)
               {
                  digitalWrite(9, HIGH);
                  client.println("Led 1 Ligado");
                  delay(300);          
                  digitalWrite(9, LOW);
              
                }
        

              
          if (varled2_OnOff == 1)
               {
                  digitalWrite(8, HIGH);
                  client.println("Led 1 Ligado");
                                
 
                }
          if (varled2_OnOff == 2)
                {
                  digitalWrite(8, LOW);
                  client.println("Led 1 Desligado");
                 
               }
               
               
          if (varled3_OnOff == 1)
               {
                  digitalWrite(7, HIGH);
                  client.println("Led 2 Ligado");
                                
 
                }
          if (varled3_OnOff == 2)
                {
                  digitalWrite(7, LOW);
                  client.println("Led 2 Desligado");
                 
               }
               
                          
               
         
          //
        
        
          client.println("</html>");
          break;
        }
        if (c == '\n') {
          currentLineIsBlank = true;
        }
        else if (c != '\r') {
          currentLineIsBlank = false;
        }
      }
    }
    delay(1);
    client.stop();
    Serial.println("client disonnected");
  }
}

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço