Olá pessoal tenho duvida de como posso monitorar o status de um led usando o arduino como servidor.

consigo fazer o led acender e apagar pelo HTML mas quero que se a mudança de estado ocorrer por uma entrada do arduino o HTML altere também. segue o cod que estou usando. 

Exibições: 2170

Anexos

Responder esta

Respostas a este tópico

No meu Google drive, a algun tempo disponibilizei um projeto completo, que usa ajax, a pagina HTML é armazenada no cartão SD do Ethernet shield, baixe, e teste, se servir....... Caso baixe e tenha alguma duvida poste aqui.

Baixe o projeto AQUI

Abs.

Marcos, primeiro é necessário vc esclarecer um detalhe desse seu projeto.

Quais as maneiras possíveis de alterar o estado do pino do arduino que comanda o led? ele só acende via comando do botão html? ou existe alguma outra forma também?

Perceba que se o led só acender via botão html, não faz sentido usar ajax, não faz sentido ficar consultando o estado do pino em "tempo real" (entre aspas porque não é exatamente tempo real, mas sim um artifício pra simular como se fosse tempo real). Basta construir um sketch pra fazer o ethernet shield rodar em modo webserver e a cada acesso do cliente via navegador, o próprio arduino apresenta na pagina html qual o estado atual do led. Já que esse estado só pode ser alterado via botão do próprio sketch, é mais simples fazer desse jeito.

Mas se vc tiver uma segunda maneira (ou mais) de comandar o pino do arduino que aciona o led, aí realmente vc precisaria usar ajax para que o arduino "despeje automaticamente" na tela do navegador o estado atual do led. Por exemplo, vc poderia ter no seu projeto, além do botão html, uma segunda maneira de acionar o led, como por exemplo com um botão de pulso (tipo botão de campainha).

Dessa forma aí, já que vc tem uma segunda maneira de acionar o led, um sketch programado como explicado logo acima não funcionará satisfatoriamente, porque a informação apresentada ao usuário será daquele momento em que o usuário carregou a página e qualquer alteração no estado do led que ocorrer posteriormente não terá essa informação passada pro usuário.

Nesse cenário, é necessário fazer da forma que te falei: usar uma página html intermediária que fique fazendo consultas de tempos em tempos no arduino pra saber qual o estado do led. Essa consulta a cada x segundos é feita via ajax

Bom ImHugo vamos lá: O estado do Led sera alterado tanto via HTML como via entrada digital do arduino.

mas checando o esdado do led via HTML é simples é so configurar para atualizar a pagina em 2 segundos "ex". Qeuria algo mais complexo, queria ter o controle do que atualizar no HTML via cod arduino. Exemplo:

if(digitalRead(22)==HIGH)

 {

   digitalWrite(22, LOW);

   client.println("led on");

 }

else

 {

  digitalWrite(22, HIGH);

   client.println("led off");

 }

ou seja quem é o mestre é o arduino e não o HTML.

Quebrei teu galho... botei no google as palavras arduino e ajax e encontrei os tutoriais a seguir:

tutorial mais simples, pra vc entender como funcionam as coisas. O autor colocou um gatilho lá, que após disparado, inicia todo o processo de requisição do estado do led. Esse gatilho, que na verdade é um botão em html, foi posto somente com finalidade didática, não faz sentido ter o gatilho em ambiente de produção.

https://startingelectronics.org/tutorials/arduino/ethernet-shield-w...

Já num outro tutorial, o gatilho foi removido, então a atualização do estado do led ocorre automaticamente a cada 1 segundo.

Esse é o link pro tutorial com ajax automático, sem gatilho:

https://startingelectronics.org/tutorials/arduino/ethernet-shield-w...

Esse tutoriais ensinam a fazer exatamente o que vc quer, ou seja, o sketch do carinha faz o ethernet shield rodar como webserver e vc terá o estado do led atualizado automaticamente na tela do navegador, independentemente se o led foi aceso via botão html ou se foi aceso através de uma outra maneira

Perceba uma coisa importante: o arduino não tem como "empurrar" informações pro navegador, da maneira como vc está pretendendo. O arduino só enviará a informação pro navegador (cliente) mediante requisição.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço