/* Software: WebServer que Ativa/Destavia Rele(apaga luz do meu quarto) e Informa Status no Display. Hardware: LCD e Ethernet Shield; LCD: Conexão no LCD Marrom no 1 do Display; LCD >>>> ARDUINO: (1 Vermelho > GND),(2 Marrom > 5v),(3 Amarelo > Potenciometro), (4 Laranja > Pino 7),(5 Azul > GND),(6 Verde > Pino 06), (11 Vermelho > Pino 05), (12 Marrom > Pino 04),(13 Amarelo > Pino 03), (14 Laranja > Pino 02); Autor: Rafael Gimenes Leite - 13/05/2010 */ // fazendo includes necessarios #include #include #include LiquidCrystal lcd(7, 6, 5, 4, 3, 2); //LiquidCrystal lcd(7, 6, 5, 4, 3, 2); //checar os pinos acho que mudei. // declarando mac, ip, gateway byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; byte ip[] = { 10, 0, 0, 20 }; byte gt[] = { 10, 0, 0, 1 }; byte snet[] = { 255, 255, 255, 0 }; //checar nao lembro se é isso. // modo servidor porta 80 Server servidor(80); // variaves de controle int cntChar=0 ; int maxLinha = 80; String linhaEntrada = String(maxLinha) ; int pinDrele = 8 ; boolean releAtivado = false ; void setup() { lcd.begin(16, 2); lcd.print("rafael gimenes"); pinMode(pinDrele, OUTPUT) ; // Serial.begin(9600) ; Ethernet.begin(mac, ip, gt, snet); servidor.begin(); digitalWrite(pinDrele,LOW) ; } void loop() { Client cliente = servidor.available(); if (cliente) { // an http request ends with a blank line boolean linhaAtualVazia = true; lcd.print("cliente"); cntChar=0 ; linhaEntrada="" ; while (cliente.connected()) { lcd.print("clienteconetado"); if (cliente.available()) { lcd.clear(); lcd.print("alguem conectou"); lcd.setCursor(0,1); lcd.print("by RafaelGimenes"); // recebe um caracter enviado pelo browser char c = cliente.read(); // se a linha não chegou ao máximo do armazenamento // então adiciona a linha de entrada if(linhaEntrada.length() < maxLinha) { linhaEntrada.append(c) ; } // Se foi recebido um caracter linefeed - LF // e a linha está em branco , a requisição http encerrou. // Assim é possivel iniciar o envio da resposta if (c == '\n' && linhaAtualVazia) { lcd.setCursor(0,1); lcd.print("criando form..."); // envia uma resposta padrão ao header http recebido cliente.println("HTTP/1.1 200 OK"); cliente.println("Content-Type: text/html"); cliente.println(); // começa a enviar o formulário html cliente.print("") ; cliente.print(""); cliente.println("

Quarto do Rafael Gimenes


"); cliente.println("

Controle da Lampada

"); cliente.println("
") ; cliente.println("Ligar "); //fecha tag radio LIGA cliente.println("Desliga "); //fecha tag radio DESLIGA // exibe o botão do formulário cliente.println("


") ; cliente.println("
falecom@rafaelgimenes.net"); cliente.println("
") ; cliente.println(""); break; } if (c == '\n') { // se o caracter recebido é um linefeed então estamos começando a receber uma // nova linha de caracteres os codigos de impressão abaixo são para depuração // e visualizar no Lcd o que está chegando do browser lcd.clear(); lcd.print("lendo cmd" + linhaEntrada.length()) ; lcd.setCursor(0,1); lcd.print(linhaEntrada) ; // Analise aqui o conteudo enviado pelo submit if(linhaEntrada.contains("GET")){ // se a linha recebida contem GET e R1=ON etnão ativa o pino do rele if(linhaEntrada.contains("R1=ON")){ digitalWrite(pinDrele,HIGH) ; releAtivado=true ; lcd.setCursor(0,1); lcd.print("rele ativado"); delay(2); Email(); } if(linhaEntrada.contains("R1=OFF")){ // se a linha recebida contem GET e R1=OFF enão guarde o status do rele digitalWrite(pinDrele,LOW) ; releAtivado=false ; lcd.setCursor(0,1); lcd.print("rele desativado"); delay(3); } } linhaAtualVazia = true; linhaEntrada="" ; } else if (c != '\r') { // recebemos um carater que não é linefeed ou retorno de carro // então recebemos um caracter e a linha de entrada não está mais vazia linhaAtualVazia = false; } } } // dá um tempo para o browser receber os caracteres delay(2); cliente.stop(); }else{ lcd.clear(); lcd.print("ninguem conectado."); lcd.setCursor(0,1); lcd.print("by RafaelGimenes"); delay(5); } } void Email(){ byte eip[] = { 000, 111, 222, 111 }; // ipservidor // cliente email Client clientEmail(eip, 80); lcd.clear(); lcd.print("enviando email"); lcd.setCursor(0,1); lcd.print("by RafaelGimenes"); //envia email if (clientEmail.connect()) { clientEmail.println("GET /path/arduinomail.php?A=Lampada_Desligada HTTP/1.0"); clientEmail.println(); if (clientEmail.available()) { char c = clientEmail.read(); lcd.clear(); lcd.print(c); delay(5); } if (!clientEmail.connected()) { lcd.clear(); lcd.print("email: desconect"); lcd.setCursor(0,1); lcd.print("by RafaelGimenes"); clientEmail.stop(); } } else { lcd.println(" email fail "); } }