Advertisement
Luzinete

Arduino Werb server - Ligar lâmpada

Apr 19th, 2018
173
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.44 KB | None | 0 0
  1. /*--------------------------------------------------------------
  2.   Arduino Werb server - Ligar lâmpada
  3. --------------------------------------------------------------*/
  4.  
  5. #include <SPI.h>
  6. #include <Ethernet.h>
  7.  
  8. // Endereço MAC do adesivo de Ethernet Shield sob a placa
  9. byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
  10. IPAddress ip(192, 168, 0, 17); // Endereço IP, pode precisar mudar dependendo da rede
  11. EthernetServer server(80);  // Criar um servidor na porta 80
  12.  
  13. String HTTP_req;          // Armazena a solicitação HTTP
  14. boolean LAMP_status = 0;   // Estado da Lampada, desativado por padrão
  15.  
  16. void setup()
  17. {
  18.     Ethernet.begin(mac, ip);  // Inicializar o dispositivo Ethernet
  19.     server.begin();           // Começar a ouvir clientes
  20.     Serial.begin(9600);       // Para diagnosticos
  21.     pinMode(6, OUTPUT);       // Lampada no pino 6
  22. }
  23.  
  24. void loop()
  25. {
  26.     EthernetClient client = server.available();  // Tente conseguir cliente
  27.  
  28.     if (client) {  // Tem cliente?
  29.         boolean currentLineIsBlank = true;
  30.         while (client.connected()) {
  31.             if (client.available()) {   // Dados do cliente disponiveis para leitura
  32.                 char c = client.read(); // Leia 1 byte (caractere) do cliente
  33.                 HTTP_req += c;  // Salve o pedido de HTTP 1 caracter de cada vez
  34.                 // Ultima linha do pedido do cliente está em branco e termina com \n
  35.                 // Responder ao cliente somente apos a ultima linha recebida
  36.                 if (c == '\n' && currentLineIsBlank) {
  37.                     // Enviar um cabeçalho de resposta http padrão
  38.                     client.println("HTTP/1.1 200 OK");
  39.                     client.println("Content-Type: text/html");
  40.                     client.println("Conexão: fechada");
  41.                     client.println();
  42.                     // Enviar página da web
  43.                     client.println("<!DOCTYPE html>");
  44.                     client.println("<html>");
  45.                     client.println("<head>");
  46.                     client.println("<title>AUTOMACAO</title>");
  47.                    
  48.                     client.println("<p main style=color: white></p>");
  49.                    
  50.                     client.println("</head>");
  51.                     client.println("<body>");
  52.                     client.println("<h1>LIGAR LAMPADA EXTERNA</h1>");
  53.                     client.println("<p>Clique para ligar e desligar a LAMPADA.</p>");
  54.                     client.println("<form method=\"get\">");
  55.                     ProcessCheckbox(client);
  56.                     client.println("</form>");
  57.                     client.println("</body>");
  58.                     client.println("</html>");
  59.                     Serial.print(HTTP_req);
  60.                     HTTP_req = "";    // Terminado com pedido, string vazia
  61.                     break;
  62.                 }
  63.                 // Cada linha de texto recebida do cliente termina com \r\n
  64.                 if (c == '\n') {
  65.                     // Ultimo caractere na linha de texto recebido
  66.                     // Iniciando nova linha com o proximo caractere lido
  67.                     currentLineIsBlank = true;
  68.                 }
  69.                 else if (c != '\r') {
  70.                     // Um caractere de texto foi recebido do cliente
  71.                     currentLineIsBlank = false;
  72.                 }
  73.             } // end if (client.available())
  74.         } // end while (client.connected())
  75.         delay(1);      // Dê tempo ao navegador da web para receber os dados
  76.         client.stop(); // Feche a conexao
  77.     } // end if (client)
  78. }
  79.  
  80. // Alterne LAMP e envie de volta a caixa de seleção HTML para LAMP
  81. void ProcessCheckbox(EthernetClient cl)
  82. {
  83.     if (HTTP_req.indexOf("LAMP=6") > -1) {  // Ver se a caixa de seleção foi clicada
  84.         // A caixa de seleção foi clicada, alterne a Lampada
  85.         if (LAMP_status) {
  86.             LAMP_status = 0;
  87.         }
  88.         else {
  89.             LAMP_status = 1;
  90.         }
  91.     }
  92.    
  93.     if (LAMP_status) {    // Ligar a Lampada
  94.         digitalWrite(6, HIGH);
  95.         // A caixa de seleção está marcada
  96.         cl.println("<input type=\"checkbox\" name=\"LAMP\" value=\"6\" \
  97.        onclick=\"submit();\" checked>LAMPADA");
  98.     }
  99.     else {              // Desligar a Lampada
  100.         digitalWrite(6, LOW);
  101.         // a caixa de seleção está desmarcada
  102.         cl.println("<input type=\"checkbox\" name=\"LAMP\" value=\"6\" \
  103.        onclick=\"submit();\">LAMPADA");
  104.     }
  105. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement