Arduino – Acender/Apagar Led

E ae pessoal belezinha? Bom como eu havia prometido para alguns conhecidos e até mesmo alguns e-mail que recebi sobre acionar um Led via Ethernet, é até que simples fazer eu diria que é “sopa no mel” hehe.

Um detalhe importante é que sintaxe HTML quem interpreta não é o Ethernet Shield e sim os Navegadores ( Firfox, Internet Explorer, Chrome, Opera e etc) o mesmo vale para CSS, as sintaxes que havera no exemplo são HTML, não utilize PHP, em um proximo post explicaria porque e um exemplo onde podemos usar.

Em termos de código-fonte a programação para o Arduino UNO ( com o Ethernet Shield) é bem parecido com o exemplo anterior em que rodamos um mini servidor web, veja o código abaixo e iremos analisar os pontos importante.

int PinoLed = 9; //Aqui entamos setando um PINO do Arduino para “ligar/desligar” o Led, no caso sera o 9.

A estrutura abaixo não irei me aprofundar muito, pois é a mesma do post anterior e é o MAC Address, IP e a porta web, mude de acordo com a sua necessidade no caso recomendaria apenas o IP.
static uint8_t mac[6] = {0x54, 0x55, 0x58, 0x10, 0x00, 0x24};                                                        
static uint8_t ip[4] = {192, 168, 2, 10};
static uint16_t port = 80;

//Aqui para facilitar criei uma variavel do tipo ETHER_28J60
ETHER_28J60 server;

void setup()
{
server.setup(mac, ip, port);   //Aqui estou passando nosso MAC, IP e Porta Web configurafo acima
pinMode(PinoLed, OUTPUT);  //E aqui dizendo que nosso PINO9 sera para saida
}

Aqui começa o código propriamente dito, que já fez o exemplo de Acender/Apagar Led pelo Arduino UNO que também fiz aqui no blog vai notar uma semelhança acrescentando sintaxe HTML.
char* params;  //Aqui temos uma variavel com ponteiro do tipo char é obrigatio isso devido a

//char* ETHER_28J60::serviceRequest()  no ETHER_28J60.cpp  

//Lembrando que esta em um loop infinito void loop() mesmo que while(1)
if (params = server.serviceRequest())
{

  //Agora o param recebe o que o serviceRequest retornar das requisições do navegador
server.print(“<h1><a href=’/?led=off’>Servidor Web Embarcado</a></h1>”);

//Ele irá comparar a string que o navegador passara, com no caso ?led=on se for igual a ?led=on
if (strcmp(params, “?led=on”) == 0)
{
digitalWrite(outputPin, HIGH);   //Ira levar o Pino9 para HIGH ou 1 para a saida se for entender pela lógica

//E utilizando sintaxe HTML irá imprimir o qu estiver em parenteses abaixo dentro de (” “)
server.print(“<a href=’?led=off’><button style=’border: 1px solid #ff0000; border-left: 10px solid #ff0000′ type=’button’>LED LIGADO</button></a>”);
}

//Se não retornar led=on verifica se não é ?led=off se for …
else if (strcmp(params, “?led=off”) == 0)
{
digitalWrite(outputPin, LOW);   //Leva o Pino9 para LOW ou a 0

//E a seguinte sintaxe é impressa para o navegador interpretar, como desligou o Led irá mostrar isso na tela
server.print(“<a href=’?led=on’><button style=’border: 1px solid #000; border-left: 10px solid #000′ type=’button’>LED DESLIGADO</button></a>”);
}

 

Para ficar mais claro vamos ver como ficou na prática.

Abrindo o navegador e digitando 192.168.2.10 no meu caso.

Agora eu clico sobre o link Servidor Web Embarcado, e irá carregar o botão como Led Desligado.

E como está no Arduino:

Clicando no botão da web:

Agora o estado do Led:

Para quem não entendeu como ligar o Led no Ethernet Shield:

O anodo no Pino 9 e o Catodo no GND.

O código-fonte tirei desse site http://blog.trollmaker.com estudei e já adaptei um para um exemplo futuro aqui no blog.

Para visualizar o código do blog clique sobre a imagem, porque se não em engano tinha algum erro na sintaxe HTML do original.

Até a próxima!

Share Button

CC BY-NC-SA 4.0 Arduino – Acender/Apagar Led by Cleiton Bueno is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.