Estou com um arduino + ethernet shield + sensor + RTC, com isto jogo informações para a LAN e acesso via navegador com o ip local. Por enquanto apenas me aparecem o valor do relógio, do sensor e algumas variáveis, tudo funcionando corretamente.
Estou querendo controlar a saída PWM, escolhendo valores entre 0 e 255 enviando a informação do navegador para o arduino, procurei exemplos, achei algumas coisas parecidas como ligar e desligar um led, mas com problemas no script não consegui rodar.
É possível? se não for possível e fácil, poderia ser com valores fixos como 3 opções para o pwm tipo 10% 50% e 100%, ai vc clica em 10% e o led fica 10% em intensidade, clica em 100% e então ele fica em total intensidade.
Próximo passo é tentar colocar todo isto na rede externa.
Para isso tens de colocar o Arduino como servidor (creio que já está...), servir uma página com uma form onde colocas o valor de PWM que queres e um botão. Quando clicares nesse botão, o teu browser vai enviar um pedido ao Arduino onde vai aparecer o valor da caixinha de texto e o Arduino pode usar isso para fazer o que pretendes.
Morits, ja havia lido este tópico para ver se pescava algo, mas não é isto não... é exatamente o que o bubulindo relatou.
Bubulindo, sim ja esta rodando e servindo uma página, os valores ja me aparecem lá.... pode ser assim como você falou aparecendo uma caixa de texto e digitando o novo valor
mas pode ser tambem com botões com valores ja definidos, tipo variável teste
se clicar no botão 1 a variavel teste é igual a 10, se clicar no botão dois teste = 20 e por ai vai...
não sei nada de HTTP, mas a muito tempo atras utilizava editores do pacote office por exemplo e ficava editando os códigos com o que eu ia vendo
não vou conseguir fazer então?
estou fuçando o pachube paralelamente a isto também.
Dá para fazer... escrever HTML no Office e meter isso no microcontrolador é pedir sarilhos.
Não faço ideia de como está feita a tua página e é-me mais simples meter o exemplo da caixa de texto que dos radio buttons, por isso vamos por aí primeiro.
Obviamente que criares um javascript para limitar os caracteres para apenas dentro de 255 é preciso. Talvez seja possível fazer isso directamente no objecto.
Depois, ao clicares no botão de submit, o browser vai contactar o Arduino e vai pedir pelo ficheiro PWM.ino. A extensão não importa minimamente, daí ter escolhido esta.
O teu programa no Arduino tem então de, ao receber este pedido, fazer parsing do pedido para ver qual o valor atribuído à variável pwm.
Sinceramente, não consigo imaginar qual seja o pedido do browser de cabeça, logo o ideal é adicionares no teu programa uma parte que deite para a porta série o que o browser pede para podermos ver e escrever uma função que pesque o valor do pwm.
Se meteres aqui o teu código actual, creio que podemos ajudar um pouco mais.
Eu tenho o meu shield ethernet empatado com uma aplicação para ver a hora a que passa o próximo autocarro. LOL
no inicio está assim:
IPAddress ip(192,168,0,43);
EthernetServer server(80);
não fiz nenhuma página em html, apenas o host no arduino
no caso o que eu quero mudar é a variavel que esta como pbranco e pazul no final
logo eu abro o browse (IE) e digito 192.168.0.43 e me aparece as informações como abaixo:
if (client) {
Serial.println("new client");
boolean currentLineIsBlank = true;
while (client.connected()) {
if (client.available()) {
char c = client.read();
Serial.write(c);
if (c == '\n' && currentLineIsBlank) {
client.print("Temperatura ");
client.println(celsius);
client.print("Aquecedor ");
client.println(estados[statusHeater]);
client.print("Refrigerador ");
client.println(estados[statusFan]);
client.print("Relogio ");
if (agora.hora <10) client.print("0");
client.print(agora.hora);
client.print(":");
if (agora.minuto <10) client.print("0");
client.println(agora.minuto);
client.print("Temperatura Max ");
client.println(tempMax);
client.print("Temperatura Min ");
client.println(tempMin);
client.print("Potencia Branco ");
client.print(pbranco);
client.println("%");
client.print("Potencia Azul ");
client.print(pazul);
client.println("%");
break;
}
ou seja se estiver na hora certa ele liga a luz com a potencia programada que é a Pazul e a Pbranco que estão definidas em
int pbranco = 60;
int pazul = 30;
obs: pbranco e Pbranco são diferentes porque colocando 60 ele transforma em um numero que corresponde a 60% de 0 a 255 para o PWM
no caso eu quero pelo HTTP uma caixa de testo onde eu posso escrever e modificar esse 60 e 30, exemplo quero que o o azul fique em 20 e nao 60, então digito 20 e clico no enviar
Final de semana agora vou testar, porém onde coloco o código? creio que se abrir uma página em HTML e editar colocando o código ficaria lá bonitinho, mas como o arduino manda este código para abrir no browser?
lmeireles43:
Final de semana agora vou testar, porém onde coloco o código? creio que se abrir uma página em HTML e editar colocando o código ficaria lá bonitinho, mas como o arduino manda este código para abrir no browser?
if (client) {
Serial.println("new client");
boolean currentLineIsBlank = true;
while (client.connected()) {
if (client.available()) {
char c = client.read();
Serial.write(c);
if (c == '\n' && currentLineIsBlank) {
client.print("Temperatura ");
client.println(celsius);
client.print("Aquecedor ");
client.println(estados[statusHeater]);
client.print("Refrigerador ");
client.println(estados[statusFan]);
client.print("Relogio ");
if (agora.hora <10) client.print("0");
client.print(agora.hora);
client.print(":");
if (agora.minuto <10) client.print("0");
client.println(agora.minuto);
client.print("Temperatura Max ");
client.println(tempMax);
client.print("Temperatura Min ");
client.println(tempMin);
client.print("Potencia Branco ");
client.print(pbranco);
client.println("%");
client.print("Potencia Azul ");
client.print(pazul);
client.println("%");
//COLOCAS O CÓDIGO AQUI!!
break; // <--------------Isto é para quê?
}
Comprei este com SDcard.....
Esse final de semana montei a pagina em html, porém na hora que coloco no arduino ele da problema com as " ". ainda n sei como tirar esse problema da tabela que inseri, tentei subsituir os " por ' e o sketch trava na hora da verificação....
infelizmente fiz algo de errado ao ligar um driver e superaqueceu o arduino e saiu um cheiro, agora não funciona mais o USB apenas a luz de TX e RX ligadas e o led do On vermelho ligado..... mas ligo o USB e nada, morreu?