Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Programa : Automação Residencial
- // Autor : Edison
- // Modificado: Eduardo Silva (Android e Arduino)
- #include <SPI.h>
- #include <Servo.h> //Biblioteca utilizada
- #include <Ethernet.h>
- #define SERVO 6 //Porta utilizada para o motor
- //Explicação sobre bibliotecas e include na legenda do código
- byte mac[] = {
- 0x90, 0xA2, 0xDA, 0x00, 0x9B, 0x36 };
- byte ip[] = {
- 192, 168, 100, 7 }; // endereço de IP (mude para o padrão da sua rede)
- EthernetServer server(1500); // porta de serviço (80 é a porta padrão)
- String readString = String(30);
- Servo s; //Variável utilizada para o servo motor
- int pos; //Posição para deixar o motor
- int valorSerial=0;
- byte PirFlag = 0;
- unsigned long Tempo = 0;
- //--------------------------------------------------------
- int pinBuzzer = 7;
- int pinSensorPIR = 8;
- int pinLed = 9;
- int valorSensorPIR = 0;
- int portaLed = 3; //Porta a ser utilizada para ligar o led
- int portaLDR = A5; //Porta analógica utilizada pelo LDR
- //--------------------------------------------------------
- void setup()
- {
- Ethernet.begin(mac, ip);
- Serial.begin(9600); //Inicializa a comunicaçao em serie
- s.attach(SERVO);
- s.write(0); //Começa o motor na posição 0
- //Definido pinos como de entrada ou de saída
- pinMode(pinBuzzer,OUTPUT);
- pinMode(pinSensorPIR,INPUT_PULLUP);
- pinMode(pinLed,OUTPUT);
- pinMode(portaLed, OUTPUT); //Define a porta do Led como saída
- pinMode(A1,OUTPUT); //Define o pino A1 como saida
- pinMode(A2,OUTPUT); //Define o pino A2 como saida
- pinMode(A3,OUTPUT); //Define o pino A3 como saida
- pinMode(A4,OUTPUT); //Define o pino A4 como saida
- /*
- // do pino 10 ao 13 não pode ser utilizado quando se usa o ethernet shield
- // eles são de uso exclusivo do shield
- pinMode(13,OUTPUT); //Define o pino 13 como saida
- pinMode(12,OUTPUT); //Define o pino 12 como saida
- pinMode(11,OUTPUT); //Define o pino 11 como saida
- pinMode(10,OUTPUT); //Define o pino 10 como saida
- */
- pinMode(4,OUTPUT); //Define o pino 4 como saida
- pinMode(5,OUTPUT); //Define o pino 5 como saida
- pinMode(2,OUTPUT); //Define o pino 2 como saida o ar condicionado
- }
- //--------------------------------------------------------
- void loop(){
- //Lendo o valor do sensor PIR. Este sensor pode assumir 2 valores
- //1 quando detecta algum movimento e 0 quando não detecta.
- valorSensorPIR = digitalRead(pinSensorPIR);
- // Serial.print("Valor do Sensor PIR: ");
- // Serial.println(valorSensorPIR);
- //Verificando se ocorreu detecção de movimentos
- if (valorSensorPIR == 1)
- {
- ligarAlarme();
- }
- else
- {
- desligarAlarme();
- }
- Comandos();
- }
- //--------------------------------------------------------
- void ligarAlarme()
- {
- //Ligando o led
- digitalWrite(pinLed, HIGH);
- //Ligando o buzzer com uma frequencia de 1500 hz.
- tone(pinBuzzer,1500);
- if ((millis()- Tempo) >4000)
- {
- Serial.print("Alarme ligado: Tempo Seg: ");
- Serial.println((millis()- Tempo)/1000);
- PirFlag = 0;
- // delay(4000); //tempo que o led fica acesso e o buzzer toca
- desligarAlarme();
- Tempo = millis();
- }
- }
- //--------------------------------------------------------
- void desligarAlarme()
- {
- if (PirFlag == 0)
- Serial.println("Alarme desligado");
- PirFlag = 1;
- //Desligando o led
- digitalWrite(pinLed, LOW);
- //Desligando o buzzer
- noTone(pinBuzzer);
- }
- // --------------------------- Comandos
- void Comandos ()
- {
- char ler = 0;
- if(Serial.available())
- {
- ler = Serial.read();
- Serial.println(ler);
- }
- int estado = analogRead(portaLDR); //Lê o valor fornecido pelo LDR
- // Caso o valor lido na porta analógica seja maior do que
- // 800, acende o LED
- // Ajuste o valor abaixo de acordo com o seu circuito
- if (estado > 800)
- {
- digitalWrite(portaLed, HIGH);
- }
- else //Caso contrário, apaga o led
- {
- digitalWrite(portaLed, LOW);
- }
- //==============================================================================
- EthernetClient client = server.available();
- if(client)
- {
- while(client.connected())
- {
- if(client.available())
- {
- char c = client.read();
- if(readString.length() < 30) {
- readString += (c);
- }
- if(c == '\n')
- {
- if(readString.indexOf("ComA") >= 0) //Se a variavel ler for igual a 1
- digitalWrite(A1,!digitalRead(A1)); //Ativa a porta A1
- else if(readString.indexOf("ComB") >= 0) //Se a variavel ler for igual a 2
- digitalWrite(A2,!digitalRead(A2)); //Ativa a porta A2
- else if(readString.indexOf("ComC") >= 0) //Se a variavel ler for igual a 3
- digitalWrite(A3,!digitalRead(A3)); //Ativa a porta A3
- else if(readString.indexOf("ComD") >= 0) //Se a variavel ler for igual a 4
- digitalWrite(A4,!digitalRead(A4)); //Ativa a porta A4
- /* Referente aos pinos que não podem ser utilizados
- else if(readString.indexOf("ComE") >= 0) //Se a variavel ler for igual a 13
- digitalWrite(13,!digitalRead(13)); //Ativa a porta 13
- else if(readString.indexOf("ComF") >= 0) //Se a variavel ler for igual a 12
- digitalWrite(12,!digitalRead(12)); //Ativa a porta 12
- else if(readString.indexOf("ComG") >= 0) //Se a variavel ler for igual a 11
- digitalWrite(11,!digitalRead(11)); //Ativa a porta 11
- else if(readString.indexOf("ComH") >= 0) //Se a variavel ler for igual a 10
- digitalWrite(10,!digitalRead(10)); //Ativa a porta 10
- */
- else if(readString.indexOf("ComI") >= 0) //Se a variavel ler for igual a 4
- digitalWrite(4,!digitalRead(4)); //Ativa a porta 4
- else if(readString.indexOf("ComJ") >= 0) //Se a variavel ler for igual a 5
- digitalWrite(5,!digitalRead(5)); //Ativa a porta 5
- else if(readString.indexOf("ComK") >= 0) //Se a variavel ler for igual a 2
- digitalWrite(2,!digitalRead(2)); //Ativa a porta 2 ar condicionado
- if (readString.indexOf("ComL") >= 0) // D Maiusculo liga o portão
- {
- Serial.println("Abrindo");
- delay(100);
- for(pos = 0; pos < 90; pos++)
- {
- s.write(pos);
- delay(35); // <<----------- valor alto?
- }
- Serial.println("Aberto");
- }
- if (readString.indexOf("ComM") >= 0) // d Minusculo desliga
- {
- Serial.println("Fechando");
- for(pos = 90; pos > 0; pos--)
- {
- s.write(pos);
- delay(35); // <<----------- valor alto?
- }
- Serial.println("Fechado");
- }
- // cabeçalho http padrão
- client.println("HTTP/1.1 200 OK");
- client.println("Content-Type: text/html");
- client.println();
- client.println("<!doctype html>");
- client.println("<html>");
- client.println("<head>");
- client.println("<title>ExemploTitulo</title>");
- client.println("<meta name=\"viewport\" content=\"width=device-width\">");
- client.println("<meta charset=\"utf-8\">");
- client.println("</head>");
- client.println("<body>");
- client.println("<center>");
- client.println("<font size=\"5\" face=\"verdana\" color=\"red\">Exemplo</font>");
- String comandosBotoes[] = {"ComA","ComB","ComC","ComD","ComE","ComF","ComG",
- "ComH","ComI","ComJ","ComK","ComL","ComM"};
- String nomesBotoes[] = {"Botao 1","Botao 2","Botao 3","Botao 4","Botao 5","Botao 6","Botao 7",
- "Botao 8","Botao 9","Botao 10","Botao 11","Abrir","Fechar"};
- for(int i = 0; i <= 12; i++)
- {
- client.print("<form action=\"");
- client.print(comandosBotoes[i]);
- client.println("\" method=\"get\">");
- client.print("<button type=submit style=\"width:200px;\">");
- client.print(nomesBotoes[i]);
- client.println("</button>");
- client.println("</form> <br />");
- /*
- // O padrão seria esse abaixo, mais o código iria ficar muito grande e
- // impossível do arduino conseguir escrever no browser
- client.println("<form action=\"ComA\" method=\"get\">");
- client.println("<button type=submit style=\"width:200px;\">Botao 1</button>");
- client.println("</form> <br />");
- */
- }
- client.println("</center>");
- client.println("</body>");
- client.println("</html>");
- readString = "";
- client.stop();
- }
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement