Material:
- Arduino
- Shield Ethernet
- Cartão micro SD
Para criar link entre páginas usando o HTML devemos declara a tag <a> e </a>, esse tipo de comando faz a tag um link clicável na página web. O valor do atributo href do <a> tag deve conter o nome do arquivo da página da Web que está ligado, por exemplo:
<p> Ir para <a href="page2.htm"> página 2 </ a>. </ p>
A linha acima de HTML irá criar um parágrafo de texto com a Page2 parte do parágrafo tornando-se um link para um arquivo chamado Page2.htm.
O arquivo Page2.htm Também deve existir e estar no mesmo diretório que a página que contém o link para ela.
Exemplo HTML :
Logo abaixo encontra-se os documetos em HTML que farão os links entre o menu, page1 e page 2.e
Código do Index.htm
<html>
<head>
<title>Arduino - linking de paginas pelo cartao SD</title>
</head>
<body>
<h1>Escolha a pagina</h1>
<p>Vá para <a href="pag1.htm">pag 1</a>.</p>
<p>Vá para <a href="pag2.htm">pag 2</a>.</p>
<img src="imag2.jpg" />
</body>
</html>
Código do pag1.htm:
<html>
<head>
<title>Controle do led 1 - Pagina com Imagem</title>
</head>
<body>
<h1>Controle da pagina 1</h1>
<p>Vá para <a href="index.htm"> Menu</a>.</p>
<p>Vá para <a href="pag2.htm"> pag 2</a>.</p>
<img src="imag.jpg" />
</body>
</html>
Código do pag2.htm:
<!DOCTYPE html>
<html>
<head>
<title>Controle da PAG 2</title>
</head>
<body>
<h1>Controle da pagina 2</h1>
<p>Vá para<a href="index.htm">Menu</a>.</p>
<p>Vá para<a href="pag1.htm">pag 1</a>.</p>
<img src="imag3.jpg" />
</body>
</html>
Se quiser fazer o download ja dos arquivos utilizados clique no link ao lado: Arduino Shield Ethernet
Código:
#include <SPI.h>
#include <Ethernet.h>
#include <SD.h>
// Tamanho do buffer apara armazenar HTTP
#define REQ_BUF_SZ 20
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; //Maca Adrees do shield ethernet
IPAddress ip(192, 168, 0, 13); // <------------------------------------------------- Entre com seu IP AQUI
EthernetServer server(80); // Porta do Servidor
File webFile; // Arquivos no Cartão SD
char HTTP_req[REQ_BUF_SZ] = {0};
char req_index = 0;
String readString;
void setup(){
// Ethernet chip
pinMode(10, OUTPUT);
digitalWrite(10, HIGH);
Serial.begin(9600); // Comucicação Serial
// Inicializando SD card
Serial.println("Comunicação com SD card...");
if (!SD.begin(4)) {
Serial.println("ERROR - SEM comunicação com SD card !");
return;
}
Serial.println("Sucesso - SD card INICIALIZADO.");
// index.htm file
if (!SD.exists("index.htm")) {
Serial.println("ERROR - Sem existencia do index.htm!");
return;
}
Serial.println("Sucesso - Encontrado index.htm file.");
Ethernet.begin(mac, ip); // Inicializando comunicação com shield Ethernet
server.begin(); // Começando cominicação com clients
}
void loop()
{
EthernetClient client = server.available(); // Tentatica de cominucação com clients
if (client) {
boolean currentLineIsBlank = true;
while (client.connected()) {
if (client.available()) { // Client - Pronto para LEITURA
char c = client.read(); // Lendo byte a byte
if (req_index < (REQ_BUF_SZ - 1)) {
HTTP_req[req_index] = c;
req_index++;
}
Serial.print(c);
if (c == '\n' && currentLineIsBlank) {
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connnection: close");
client.println();
/***********************************Abrir páginas Menu/PAG1/PAG2****************************/
if (StrContains(HTTP_req, "GET / ")
|| StrContains(HTTP_req, "GET /index.htm")) {
webFile = SD.open("index.htm"); // open web page file
}
else if (StrContains(HTTP_req, "GET /pag1.htm")) {
webFile = SD.open("pag1.htm"); // open web page PAG1 file
}
else if (StrContains(HTTP_req, "GET /pag2.htm")) {
webFile = SD.open("pag2.htm"); // open web page PAG2 file
}
else if (StrContains(HTTP_req, "GET /imag.jpg")) {
webFile = SD.open("imag.jpg"); // open imagem file
}
else if (StrContains(HTTP_req, "GET /imag2.jpg")) {
webFile = SD.open("imag2.jpg"); // open imagem file
}
else if (StrContains(HTTP_req, "GET /imag3.jpg")) {
webFile = SD.open("imag3.jpg"); // open imagem file
}
// Envido de dados para o client
if (webFile) {
while(webFile.available()) {
client.write(webFile.read());
}
webFile.close();
}
// reset do buffer index e all buffer elementos para 0
req_index = 0;
StrClear(HTTP_req, REQ_BUF_SZ);
break;
}
// Todas as linhas d client como read/write 'r/w'
if (c == '\n') {
currentLineIsBlank = true;
}
else if (c != '\r') {
currentLineIsBlank = false;
}
}
}
delay(1);
client.stop();
}
}
void StrClear(char *str, char length)
{
for (int i = 0; i < length; i++) {
str[i] = 0;
}
}
//Função de busca de strings
char StrContains(char *str, char *sfind)
{
char found = 0;
char index = 0;
char len;
len = strlen(str);
if (strlen(sfind) > len) {
return 0;
}
while (index < len) {
if (str[index] == sfind[found]) {
found++;
if (strlen(sfind) == found) {
return 1;
}
}
else {
found = 0;
}
index++;
}
return 0;
}
Seguir passo a passo teu tutorial entretanto o arquivo index.htm não é inicializado.
ResponderExcluirAlguma dica do que pode estar acontecendo?
Quando vc criou o arquivo .htm ele ficou com o icone do seu navegador? Ou ficou com o icone do editor de texto?
ExcluirFicou com o ícone do navegador.
ExcluirDaniel?! Me mande um email por favor, tentei entrar em contato com vc pelo hangouts.
Excluirfelipengmec@gmail.com
Vamos combinar uma forma de resolver seu problema. No aguardo
Olá alguém pode ajudar-me? estou utilizando wifi cc3000 com o programa exemplo HTTPServe e gostaria que o arduino cham-se essa página - http://localhost:8000/sdk/agentspeak.html?id=Como vai denise? Como posso incluir isso na programação para que fique da mesma forma de digitado na linha de endereço do navegador? porfavor ajude-me, pois já fiz muita pesquisa e não obtive exito.
ResponderExcluir