Advertisement
Guest User

Codigo Edison de Souza by Eduardo Silva

a guest
Feb 6th, 2016
332
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 8.96 KB | None | 0 0
  1.  
  2. // Programa : Automação Residencial
  3. // Autor : Edison
  4. // Modificado: Eduardo Silva (Android e Arduino)
  5.  
  6. #include <SPI.h>
  7. #include <Servo.h> //Biblioteca utilizada
  8. #include <Ethernet.h>
  9. #define SERVO 6 //Porta utilizada para o motor
  10.  
  11. //Explicação sobre bibliotecas e include na legenda do código
  12.  
  13. byte mac[] = {
  14.   0x90, 0xA2, 0xDA, 0x00, 0x9B, 0x36 };
  15. byte ip[] = {
  16.   192, 168, 100, 7 }; // endereço de IP (mude para o padrão da sua rede)
  17. EthernetServer server(1500); // porta de serviço (80 é a porta padrão)
  18.  
  19. String readString = String(30);
  20.  
  21. Servo s; //Variável utilizada para o servo motor
  22. int pos; //Posição para deixar o motor
  23. int valorSerial=0;
  24. byte PirFlag = 0;
  25. unsigned long Tempo = 0;
  26. //--------------------------------------------------------
  27. int pinBuzzer = 7;
  28. int pinSensorPIR = 8;
  29. int pinLed = 9;
  30. int valorSensorPIR = 0;
  31. int portaLed = 3; //Porta a ser utilizada para ligar o led  
  32. int portaLDR = A5; //Porta analógica utilizada pelo LDR  
  33. //--------------------------------------------------------
  34. void setup()
  35. {
  36.   Ethernet.begin(mac, ip);  
  37.   Serial.begin(9600); //Inicializa a comunicaçao em serie
  38.   s.attach(SERVO);
  39.   s.write(0); //Começa o motor na posição 0
  40.   //Definido pinos como de entrada ou de saída
  41.   pinMode(pinBuzzer,OUTPUT);
  42.   pinMode(pinSensorPIR,INPUT_PULLUP);
  43.   pinMode(pinLed,OUTPUT);
  44.   pinMode(portaLed, OUTPUT); //Define a porta do Led como saída  
  45.   pinMode(A1,OUTPUT); //Define o pino A1 como saida
  46.   pinMode(A2,OUTPUT); //Define o pino A2 como saida
  47.   pinMode(A3,OUTPUT); //Define o pino A3 como saida
  48.   pinMode(A4,OUTPUT); //Define o pino A4 como saida
  49.   /*
  50.   // do pino 10 ao 13 não pode ser utilizado quando se usa o ethernet shield
  51.   // eles são de uso exclusivo do shield
  52.   pinMode(13,OUTPUT); //Define o pino 13 como saida
  53.   pinMode(12,OUTPUT); //Define o pino 12 como saida
  54.   pinMode(11,OUTPUT); //Define o pino 11 como saida
  55.   pinMode(10,OUTPUT); //Define o pino 10 como saida
  56.   */
  57.   pinMode(4,OUTPUT); //Define o pino 4 como saida
  58.   pinMode(5,OUTPUT); //Define o pino 5 como saida
  59.   pinMode(2,OUTPUT); //Define o pino 2 como saida o ar condicionado
  60. }
  61. //--------------------------------------------------------
  62. void loop(){
  63.  
  64.   //Lendo o valor do sensor PIR. Este sensor pode assumir 2 valores
  65.   //1 quando detecta algum movimento e 0 quando não detecta.
  66.   valorSensorPIR = digitalRead(pinSensorPIR);
  67.   //  Serial.print("Valor do Sensor PIR: ");  
  68.   //  Serial.println(valorSensorPIR);
  69.   //Verificando se ocorreu detecção de movimentos
  70.   if (valorSensorPIR == 1)
  71.   {
  72.     ligarAlarme();
  73.   }
  74.   else
  75.   {
  76.     desligarAlarme();
  77.   }    
  78.   Comandos();
  79. }
  80. //--------------------------------------------------------
  81. void ligarAlarme()
  82. {
  83.   //Ligando o led
  84.   digitalWrite(pinLed, HIGH);
  85.   //Ligando o buzzer com uma frequencia de 1500 hz.
  86.   tone(pinBuzzer,1500);
  87.   if ((millis()- Tempo) >4000)
  88.   {
  89.     Serial.print("Alarme ligado:  Tempo Seg:  ");
  90.     Serial.println((millis()- Tempo)/1000);
  91.     PirFlag = 0;
  92.     // delay(4000); //tempo que o led fica acesso e o buzzer toca
  93.     desligarAlarme();
  94.     Tempo = millis();
  95.   }
  96. }
  97. //--------------------------------------------------------
  98. void desligarAlarme()
  99. {
  100.   if (PirFlag == 0)
  101.     Serial.println("Alarme desligado");
  102.   PirFlag = 1;
  103.   //Desligando o led
  104.   digitalWrite(pinLed, LOW);
  105.   //Desligando o buzzer
  106.   noTone(pinBuzzer);
  107. }
  108. // --------------------------- Comandos
  109. void Comandos ()
  110. {
  111.   char ler = 0;
  112.   if(Serial.available())  
  113.   {  
  114.     ler = Serial.read();
  115.     Serial.println(ler);
  116.   }  
  117.   int estado = analogRead(portaLDR);  //Lê o valor fornecido pelo LDR  
  118.   // Caso o valor lido na porta analógica seja maior do que
  119.   // 800, acende o LED  
  120.   // Ajuste o valor abaixo de acordo com o seu circuito  
  121.   if (estado > 800)    
  122.   {  
  123.     digitalWrite(portaLed, HIGH);  
  124.   }  
  125.   else  //Caso contrário, apaga o led  
  126.   {  
  127.     digitalWrite(portaLed, LOW);  
  128.   }
  129.  
  130.   //==============================================================================
  131.  
  132.   EthernetClient client = server.available();
  133.  
  134.   if(client)
  135.   {
  136.     while(client.connected())
  137.     {
  138.       if(client.available())
  139.       {
  140.         char c = client.read();
  141.  
  142.         if(readString.length() < 30) {
  143.           readString += (c);
  144.         }
  145.  
  146.         if(c == '\n')
  147.         {
  148.           if(readString.indexOf("ComA") >= 0)          //Se a variavel ler for igual a 1
  149.             digitalWrite(A1,!digitalRead(A1));  //Ativa a porta A1
  150.           else if(readString.indexOf("ComB") >= 0)     //Se a variavel ler for igual a 2
  151.             digitalWrite(A2,!digitalRead(A2));  //Ativa a porta A2
  152.           else if(readString.indexOf("ComC") >= 0)     //Se a variavel ler for igual a 3
  153.             digitalWrite(A3,!digitalRead(A3));  //Ativa a porta A3
  154.           else if(readString.indexOf("ComD") >= 0)     //Se a variavel ler for igual a 4
  155.             digitalWrite(A4,!digitalRead(A4));  //Ativa a porta A4
  156.             /* Referente aos pinos que não podem ser utilizados
  157.           else if(readString.indexOf("ComE") >= 0)     //Se a variavel ler for igual a 13
  158.             digitalWrite(13,!digitalRead(13));  //Ativa a porta 13
  159.           else if(readString.indexOf("ComF") >= 0)     //Se a variavel ler for igual a 12
  160.             digitalWrite(12,!digitalRead(12));  //Ativa a porta 12
  161.           else if(readString.indexOf("ComG") >= 0)     //Se a variavel ler for igual a 11
  162.             digitalWrite(11,!digitalRead(11));  //Ativa a porta 11
  163.           else if(readString.indexOf("ComH") >= 0)     //Se a variavel ler for igual a 10
  164.               digitalWrite(10,!digitalRead(10));  //Ativa a porta 10
  165.               */
  166.           else if(readString.indexOf("ComI") >= 0)     //Se a variavel ler for igual a 4
  167.             digitalWrite(4,!digitalRead(4));   //Ativa a porta 4
  168.           else if(readString.indexOf("ComJ") >= 0)     //Se a variavel ler for igual a 5
  169.             digitalWrite(5,!digitalRead(5));   //Ativa a porta 5
  170.           else if(readString.indexOf("ComK") >= 0)     //Se a variavel ler for igual a 2
  171.             digitalWrite(2,!digitalRead(2));   //Ativa a porta 2 ar condicionado
  172.  
  173.           if (readString.indexOf("ComL") >= 0)          // D Maiusculo liga o portão
  174.           {
  175.             Serial.println("Abrindo");
  176.             delay(100);
  177.             for(pos = 0; pos < 90; pos++)
  178.             {
  179.               s.write(pos);
  180.               delay(35);        //  <<----------- valor alto?
  181.             }
  182.             Serial.println("Aberto");
  183.           }
  184.           if (readString.indexOf("ComM") >= 0) // d Minusculo desliga
  185.           {
  186.             Serial.println("Fechando");
  187.             for(pos = 90; pos > 0; pos--)
  188.             {
  189.               s.write(pos);
  190.               delay(35);        //  <<----------- valor alto?
  191.             }
  192.             Serial.println("Fechado");
  193.           }
  194.  
  195.           // cabeçalho http padrão
  196.           client.println("HTTP/1.1 200 OK");
  197.           client.println("Content-Type: text/html");
  198.           client.println();
  199.  
  200.           client.println("<!doctype html>");
  201.           client.println("<html>");
  202.           client.println("<head>");
  203.           client.println("<title>ExemploTitulo</title>");
  204.           client.println("<meta name=\"viewport\" content=\"width=device-width\">");
  205.           client.println("<meta charset=\"utf-8\">");
  206.  
  207.           client.println("</head>");
  208.           client.println("<body>");
  209.           client.println("<center>");
  210.  
  211.           client.println("<font size=\"5\" face=\"verdana\" color=\"red\">Exemplo</font>");
  212.          
  213.           String comandosBotoes[] = {"ComA","ComB","ComC","ComD","ComE","ComF","ComG",
  214.                                        "ComH","ComI","ComJ","ComK","ComL","ComM"};
  215.                                        
  216.           String nomesBotoes[] = {"Botao 1","Botao 2","Botao 3","Botao 4","Botao 5","Botao 6","Botao 7",
  217.                                        "Botao 8","Botao 9","Botao 10","Botao 11","Abrir","Fechar"};
  218.              
  219.           for(int i = 0; i <= 12; i++)
  220.           {
  221.             client.print("<form action=\"");
  222.             client.print(comandosBotoes[i]);
  223.             client.println("\" method=\"get\">");
  224.             client.print("<button type=submit style=\"width:200px;\">");
  225.             client.print(nomesBotoes[i]);
  226.             client.println("</button>");
  227.             client.println("</form> <br />");
  228.            
  229.             /*
  230.             // O padrão seria esse abaixo, mais o código iria ficar muito grande e
  231.             // impossível do arduino conseguir escrever no browser
  232.            
  233.             client.println("<form action=\"ComA\" method=\"get\">");
  234.             client.println("<button type=submit style=\"width:200px;\">Botao 1</button>");
  235.             client.println("</form> <br />");
  236.             */
  237.           }
  238.  
  239.           client.println("</center>");
  240.           client.println("</body>");
  241.           client.println("</html>");
  242.  
  243.           readString = "";
  244.  
  245.           client.stop();
  246.         }
  247.       }
  248.  
  249.     }
  250.   }
  251. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement