assim estou usando o modelo do http://engenheirando.com/projetos/automacao/

ja consigui mudar o layout do site, e tudo numa boa, mais eu queria colocar mais botoes controlando os pinos digitais,

no caso, eu sei como colocar um botao no site, so nao sei como definir para ele ligar uma porta digital

estou usando o codigo do php

  1. <html>
  2. <head></head>
  3. <body>
  4.  
  5. <?php
  6. $sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
  7. // Se conecta ao IP e Porta:
  8. socket_connect($sock,"187.15.6.131", 8081);
  9.  
  10. // Executa a ação correspondente ao botão apertado.
  11. if(isset($_POST['bits'])) {
  12.   $msg = $_POST['bits'];
  13.   if(isset($_POST['Fora'   ])){ if($msg[0]=='1') { $msg[0]='0'; } else {$msg[0]='1'; }}
  14.   if(isset($_POST['Quarto1'])){ if($msg[1]=='1') { $msg[1]='0'; } else {$msg[1]='1'; }}
  15.   if(isset($_POST['Quarto2'])){ if($msg[2]=='1') { $msg[2]='0'; } else {$msg[2]='1'; }}
  16.   if(isset($_POST['Sala'   ])){ if($msg[3]=='1') { $msg[3]='0'; } else {$msg[3]='1'; }}
  17.   if(isset($_POST['Pequeno'])){ $msg = 'P#'; }
  18.   if(isset($_POST['Grande' ])){ $msg = 'G#'; }
  19.   socket_write($sock,$msg,strlen($msg));
  20. }
  21.  
  22. socket_write($sock,'R#',2); //Requisita o status do sistema.
  23.  
  24. // Espera e lê o status e define a cor dos botões de acordo.
  25. $status = socket_read($sock,6);
  26. if (($status[4]=='L')&&($status[5]=='#')) {
  27.   if ($status[0]=='0') $cor1 = lightcoral;
  28.     else $cor1 = lightgreen;
  29.   if ($status[1]=='0') $cor2 = lightcoral;
  30.     else $cor2 = lightgreen;
  31.   if ($status[2]=='0') $cor3 = lightcoral;
  32.     else $cor3 = lightgreen;
  33.   if ($status[3]=='0') $cor4 = lightcoral;
  34.     else $cor4 = lightgreen;
  35.    
  36.   echo "<form method =\"post\" action=\"teste.php\">";
  37.   echo "<input type=\"hidden\" name=\"bits\" value=\"$status\">";
  38.   echo "<button style=\"width:70; background-color: $cor1 ;font: bold 14px Arial\" type = \"Submit\" Name = \"Fora\">Fora</button></br></br>";
  39.   echo "<button style=\"width:70; background-color: $cor2 ;font: bold 14px Arial\" type = \"Submit\" Name = \"Quarto1\">Quarto1</button></br></br>";
  40.   echo "<button style=\"width:70; background-color: $cor3 ;font: bold 14px Arial\" type = \"Submit\" Name = \"Quarto2\">Quarto2</button></br></br>";
  41.   echo "<button style=\"width:70; background-color: $cor4 ;font: bold 14px Arial\" type = \"Submit\" Name = \"Sala\">Sala</button></br></br></br>";
  42.   echo "<button style=\"width:90;font: bold 14px Arial\" type = \"Submit\"Name = \"Pequeno\">Portao Pequeno</button></br></br>";
  43.   echo "<button style=\"width:90;font: bold 14px Arial\" type = \"Submit\"Name = \"Grande\">Portao Grande</button></br></br>";
  44.   echo "</form>";
  45. }
  46. // Caso ele não receba o status corretamente, avisa erro.
  47. else { echo "Falha ao receber status da casa."; }
  48. socket_close($sock);
  49. ?>
  50.  
  51. </body>
  52. </html>

e no arduino

  1. #include <SPI.h>
  2. #include <Ethernet.h>
  3.  
  4. //Configurações do Ethernet Shield
  5. byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
  6. byte ip[] = { 192,168,2, 22 }; // ip que o arduino assumirá
  7. byte gateway[] = { 192,168,2, 1 };  // ip do roteador
  8. byte subnet[] = { 255, 255, 0, 0 };
  9.  
  10. // String que representa o estado dos dispositivos
  11. char Luz[7] = "0000L#";
  12.  
  13. Server server(8081); // Cria o servidor na porta 8081
  14.  
  15. // String onde é guardada as msgs recebidas
  16. char msg[7] = "0000L#";
  17.  
  18. void setup() {
  19.   Ethernet.begin(mac, ip, gateway, subnet);
  20.   server.begin();
  21.   pinMode(A0,OUTPUT);
  22.   pinMode(A1,OUTPUT);
  23.   pinMode(A2,OUTPUT);
  24.   pinMode(A3,OUTPUT);
  25.   pinMode(A4,OUTPUT);
  26.   pinMode(A5,OUTPUT);
  27. }
  28.  
  29. void loop() {
  30.   Client client = server.available();
  31.   // SE receber um caracter...
  32.   if (client) {
  33.     // guarda o caracter na string 'msg'
  34.     msg[1]=msg[2]; msg[2]=msg[3]; msg[3]=msg[4]; msg[4]=msg[5];msg[5]=msg[6];
  35.     msg[6] = client.read();
  36.    
  37.     if (msg[6]=='#') {
  38.       switch(msg[5]) {
  39.         case 'R':
  40.           // Se receber o comando 'R#' envia de volta o status dos
  41.           //   dispositivos. (Que é a string 'Luz')
  42.           client.write(Luz);
  43.         break;
  44.         case 'P':
  45.           // Caso P#, aciona o pino do portão pequeno por 1s.
  46.           digitalWrite(A4,HIGH);
  47.           delay(1000);
  48.           digitalWrite(A4,LOW);
  49.         break;
  50.         case 'G':
  51.           // Caso G#, aciona o pino do portão pequeno por 1s.
  52.           digitalWrite(A5,HIGH);
  53.           delay(1000);
  54.           digitalWrite(A5,LOW);        
  55.         break;
  56.         case 'L':
  57.           // Caso L#, ele copia os 4 bytes anteriores p/ a
  58.           //   string 'Luz' e cada byte representa um
  59.           // dispositivo, onde '1'=ON e '0'=OFF
  60.           Luz[0]=msg[1];
  61.           Luz[1]=msg[2];
  62.           Luz[2]=msg[3];
  63.           Luz[3]=msg[4];
  64.           if (Luz[0]=='1') digitalWrite(A0,HIGH); else digitalWrite(A0,LOW);
  65.           if (Luz[1]=='1') digitalWrite(A1,HIGH); else digitalWrite(A1,LOW);
  66.           if (Luz[2]=='1') digitalWrite(A2,HIGH); else digitalWrite(A2,LOW);
  67.           if (Luz[3]=='1') digitalWrite(A3,HIGH); else digitalWrite(A3,LOW);
  68.         break;
  69.        
  70.       }
  71.     }
  72.   }
  73. }

Exibições: 916

Responder esta

Respostas a este tópico

esqueci de falar, eu tentei mudar o 

  1. char msg[7] = "0000L#"; para mais um 0 e depois botar pinMode(0,OUTPUT) e definir uma funçao mais nao consigui

tu aumento o tamanho da string??

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço