Pessoal,
Estou com um problema a dois dias já
e não sei como resolver,
Fiz/Copiei o programa que monitora entradas analógicas e digitais do arduino
Agora preciso controlar as saídas
no projeto final, vou precisar de 4 botões, para 4 saídas,
Quando aperto o botão, a respectiva saída se fecha por uns 4 ou 5 segundo e volta abrir,
Pra quem sabe, não deve ser tão impossível assim...
'Montei' o tal do WebServer, funcionou muito bem
*fora esse detalhe do botão
Aqui está o código
se puderem dar uma olhada e me ajudarem a resolver...
Fico muito agradecido!
João Azevedo
Tags:
é galera...
tá tenso...
Ler as entradas do arduino é tetinha,
agora alterar as saídas... Very Hard!
Alguém sabe algum método jiraya de fazer isso,
de preferência parecido com o método de leitura
valeu
Alexandre,
Esse é o meu dilema...
como fazer isso...
minhas ultimas tentativas foram de criar um checkbox, e usar ele como essa variavel
na net eu só acho uns exemplos monstros,
e no arduino.cc nao achei exemplo disso
cara, aqui um exemplo onde eu controlo o estado da saida digital 3 do arduino (faço acender um led)...
pra isso eu envio um GET acende3=1 ou acende3=0, exemplo
http://192.168.2.108:9100/?acende=1 (isso acende meu led):
#include <SPI.h>
#include <Ethernet.h>
byte mac[] = { 0x10, 0x1D, 0xC2, 0x3F, 0xBA, 0x56 };
byte ip[] = { 192,168,2, 108 };
int led3 = 0;
Server server(9100);//vou trabalhar na porta 9100, a minha 80 é ocupada
void setup()
{
Ethernet.begin(mac, ip);
server.begin();
pinMode(3, OUTPUT);
}
void loop()
{
// listen for incoming clients
Client client = server.available();
if (client) {
// an http request ends with a blank line
boolean currentLineIsBlank = true;
String linha = "";
while (client.connected()) {
if (client.available()) {
char c = client.read();
// if you've gotten to the end of the line (received a newline
// character) and the line is blank, the http request has ended,
// so you can send a reply
linha.concat(c);
if (c == '\n' && currentLineIsBlank) {
// headers pra permitir ajax crossdomain
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Server: Rafinho Arduino");
client.println("Access-Control-Allow-Origin: *");
client.println();
//pega comandos get
int inicioa3 = linha.indexOf('acende3=');
inicioa3 = inicioa3+1;//pega o caractere seguinte
int fima3 = inicioa3+1;//esse comando espero apenas 1 caractere
String acende3 = linha.substring(inicioa3,fima3);//recupero o valor do comando
if(acende3==1){
digitalWrite(3, HIGH);
led3=1;
}
if(acende3==0){
digitalWrite(3, LOW);
led3=0;
}
//client.print(acende3);
client.print("led3=");
//client.print(linha);
//client.println(led3, DEC);
client.print(led3, DEC);
break;
}
}
}
// gambi pra dar um tempinho
delay(1);
// fecha a conexao:
client.stop();
}
}
eu tb nao achei exemplos bons prontos, entao eu fui pegando ideias aqui, pedaços de codigo ali... sem contar que as bibliotecas do arduino sofrem mudanças... o meu codigo funciona na versao 0022 ;)
minha aplicaçao esta online, caso tenha curiosidade de ver:
http://www.webwar.com.br/rafinho/
vou deixar no ar uns dias, se tudo der certo e nao der nenhum pau, deve ficar funcionando sem eu estar por perto, eheheh
ah, uma coisa que vc deve perceber ao ver o meu codigo é que eu nao fiz formulario, botoes nem nada no webserver arduino...
ele apenas "imprime" led3=0 ou led3=1 dependendo do estado do led
e ele recebe por querystring(GET) a acao, se vai acender ou apagar...
os botoes de controle eu fiz num webserver SEPARADO, que enviam, via ajax, a requisiçao com a querystring para mudança de estado do led...
fiz assim porque simplifica as coisas pro arduino, e fica mais facil pra gente programar :D... o unico "porem" disso é manter outro servidor, mas existem muitos servidores com hospedagem gratuita que se pode usar ;)
pra ver o codigo do servidor "externo" ao arduino, só visualizar o codigo fonte dessa pagina do webwar/rafinho ;)
Wagner,
Faz dias que estou pra te responder, mais preferi estudar um pouco mais antes de responder,
Descobri que o Shield que comprei vem com o chip ENC28J60, que é diferente do padrão do arduino
ai muda toda a estrutura e a bibliotecas, por isso não ia,
Apesar de esquentar bastante, Funciona, e isso é que importa
Consegui fazer "funcionar", já acesso ele pela rede
até ai "tranqüilo",
Meu problema agora é outro,
agora vou ter que reaprender tudo,
Não consigo mais nem visualizar as entradas,
Não consigo manipular as saídas
e
Não consigo escrever uma grande quantidade de comandos HTML,
parece que é ela quantidade de caracteres, chega uma hora que para de funcionar...
ai eu comento as linhas de cima, as debaixo funcionam...
Continuo estudando pra fazer isso funcionar...
Obrigado!
mais poxa vida!
HTML não ocupa nada, é só texto,
minha pagina é bem simples,
era só pra mostrar uma 4 entradas e alterar Duas Saídas...
Quando compila aparece:
Binary sketch size: 5022 bytes (of a 30720 byte maximum)
então memória sobrando tem,
já tentei alterar esse
#define BUFFER_SIZE 500
na esperança... passei pra 5000, mais não mudou nada!
e o pior de tudo é que eu falo que prefiro CLP comercial... (uso siemens)
tem gente que briga comigo...
que diz que arduino dá conta...
que funciona bem...
que não é difícil fazer...
Eu tô tentando!
Mais estou sobre a tênue linha do Arrependimento
tá bem foda fazer isso, e funciona quando quer!!!
bom, eu gosto pra caralho do Arduino, porque pro que eu vou usar ele é perfeito: um robo com 2 funções:
-cortador de grama autonomo
-patrulheiro controlado pela internet
desde que comecei a mexer com o shield ethernet eu percebi que ele tem limitaçoes severas, por isso eu pus a parte grossa do html e javascript num server externo, usando o shield pra pegar o get de comandos basicos:
acende=1 (o que esta de exemplo no ar faz so isso)
frente=1
velocidade=15
tras=1
direita=2
etc... vai ter um punhadinho de comandos que vão por querystring (mas por ajax pra ficar na pagina bonitinha)
a questao é que o proprio arduino "da conta" de fazer muita coisa...
"da conta" de fazer um webserver basico, mas as bibliotecas sao amadoras(ainda)... repara, o arduino tem um processador de 20 Mhz, basicamente o mesmo poder de fogo de um Palm IIIe...Isso não é pouco... tem maluco que fez até video-game nele com graficos a là SNES...
Repare na palavra "MALUCO"... Somos malucos que fazemos as coisas por fazer, pelo fazer, ja que pra comprar um SNES hoje em dia voce so precisa balançar uma nota de 50 reais.
enfim, tem coisa que é legal e barato fazer com Arduino... mas se é profissional e tem algo pronto que faça o serviço, po, nao faz sentido não tomar o atalho.
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por