Nesse 3º passo do tutorial Shield Ethernet Arduino, iremos estudar uma das várias formas de controle de componentes externo por uma página em HTML. Nesse caso iremos usar 2 LED's para fácil compreensão do código.
Material:
- Arduino
- Shield Ethernet
- 2 Led's
- Fios Jumpers, cabo USB e cabo com conexão RJ-45
Imagens:
Na imagem abaixo podemos ver como conectei o arduino mais o shield com os led's.
Pino 5 - led1
Pino 7 - led 2
Código HTML:
Nesse código usamos uma tag nova que é: IFRAME. Essa tag, na definição popular, com um significado prático, é uma 'página dentro de outra página'. Na verdade, é um "quadro", com as dimensões que você quer, onde você coloca outra página. É útil para você não precisar ficar repetindo um mesmo conteúdo várias vezes. No caso do código, quando declaramos <client.println("<IFRAME name=inlineframe style=\"display:none\" >"); > você esta bloqueando a abertura de novas páginas.
Código:
/***************************************************************
Tutorial Ethernet Shield
Objetivo: Controle de led pela LAN
Autor: Felipe Souza Amaral
***************************************************************/
#include <SPI.h>
#include <Ethernet.h>
byte mac[] = {
0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; //MAC address
IPAddress ip(192,168,0,13); // IP da lan
IPAddress myserver(0,0,0,0); // IP do server
EthernetServer server(80); //porta de conexão
EthernetClient client;
String readString;
void setup(){
pinMode(5, OUTPUT); //pin do LED1
pinMode(7, OUTPUT); //pin do LED2
Ethernet.begin(mac, ip);
server.begin();
Serial.begin(9600);
Serial.println("server/client 1.0 test");
Serial.println("Enviando um g na serial monitor para Client - Test");
}
void loop(){
// checar comunicação Serial
if (Serial.available() > 0)
{
byte inChar;
inChar = Serial.read();
if(inChar == 'g')
{
}
}
EthernetClient client = server.available();
if (client) {
while (client.connected()) {
if (client.available()) {
char c = client.read();
if (readString.length() < 100) {
readString += c;
Serial.print(c);
}
if (c == '\n') {
Serial.println(readString); //Mostra no Serial Monitor o debuging
// HTML data header
if(readString.indexOf('?') >=0) {
client.println("HTTP/1.1 Controle de LED's");
client.println();
client.println();
}
else {
client.println("HTTP/1.1 200 OK"); //send new page
client.println("Content-Type: text/html");
client.println();
/******************************Página em HTML******************************/
client.println("<HTML>");
client.println("<HEAD>");
client.println("<TITLE>Arduino - Teste LED's</TITLE>");
client.println("</HEAD>");
client.println("<BODY>");
client.println("<H1>LED's - ON/OFF</H1>");
//Led 1
client.println("<h4>Led 1</h4>");
client.println("<a href=\"/?led1on\" target=\"inlineframe\">ON</a>");
client.println("<a href=\"/?led1off\" target=\"inlineframe\">OFF</a>");
//Led 2
client.println("<h4>Led 2</h4>");
client.println("<a href=\"/?led2on\" target=\"inlineframe\">ON</a>");
client.println("<a href=\"/?led2off\" target=\"inlineframe\">OFF</a>");
//bloqueio de acesso as páginas{?led2on;?led2off} por exemplo
client.println("<IFRAME name=inlineframe style=\"display:none\" >");
client.println("</IFRAME>");
client.println("</BODY>");
client.println("</HTML>");
}
delay(1);
client.stop();
/*LED 1*/
if(readString.indexOf("led1on") >0) //checa se o led foi aceso
{
digitalWrite(5, 1); // set pin 5 high
Serial.println("Led Off");
}
if(readString.indexOf("led1off") >0) //checa se o led foi aceso
{
digitalWrite(5, 0); // set pin 5 low
Serial.println("Led On");
}
/*LED 2*/
if(readString.indexOf("led2on") >0)
{
digitalWrite(7, 1); // set pin 7 high
Serial.println("Led Off");
}
if(readString.indexOf("led2off") >0)
{
digitalWrite(7, 0); // set pin 7 low
Serial.println("Led On");
}
readString="";
readString="";
}
}
}
}
}
Valeu Felipe, se possível manda a programação do módulo de reconhecimento de voz com arduino para acionamento de lampadas etc.....
ResponderExcluirObrigado
Luis Neto
Esses comando funcionam a partir do micro sd ?
ResponderExcluirSim! O exemplo nao está sendo usado o cartão micro SD, mas podemos utilizar td o html no cartão
Excluirpode me ajudar? preciso ligar uns relés e pra isso estou construindo uma página html pra colocar no sd, mas como fica os comandos?? ex:
Excluirclient.println(" html body form method=get ");
client.println(" p h1 Gerador Starter ZAP Telecom /h1 /font /p ");
for(int i=1;i < (numofrele + 1) ;i++){
Rele = String("Rele") + i;
if(inString.indexOf(Rele+"=on")>0 || inString.indexOf("all=on")>0){
Serial.println(Rele+"on");
digitalWrite(rele[i], HIGH);
value[i] = "off";
}else if(inString.indexOf(Rele+"=off")>0 || inString.indexOf("all=off")>0 ){
Serial.println(Rele+"off");
digitalWrite(rele[i], LOW);
value[i] = "on";
}
client.println(" br "+Rele+" input type=submit name="+Rele+" value="+value [i]+" ");
}
client.println(" br b TODOS /b input type=submit name=all value=on input type=submit name=all value=off ");
client.println(" /from /html /body");
break;
como coloco isso no sd de forma que o Arduino receba os comandos?
retirei as tags, pq o blog não aceita
ExcluirFala meu amigo? Desculpa a demora em responder....tava atolado de coisa pra fazer.
ExcluirE ai conseguiu?? Precisa de ajuda ainda?