O sketch abaixo está carregado no arduino com shield ethernet conectados num notebook
de minha rede doméstica por wi-fi. Tenho um desktop ligado direto ao roteador.
O shield está ligado ao roteador por cabo de rede
O led está ligado no pino 6 com resistor de 330 Ohms.
Mas acontece 2 fatos:
1 Não consigo acessar o arduino pelo notebook mas consigo pelo desktop
( há tempos passados acessava pelos dois computadores)
2. O LED NÃO ACENDE apesar de aparecer na tela "ligar led" como no sketch e mudar de
cor quando clicado.
Obs. testei as ligações e mudando o jumper do pno 6 para o pino 5V o led acende.
Anexei também "ACENDERBOTÃO.ino que é o mesmo sketch.
Onde estou bobeando?
#include <SPI.h>
#include <Ethernet.h>
byte mac[] = { 0xE8, 0xDE, 0x27, 0xAC, 0x47, 0x08 };
byte ip[] = { 10,0,0,101};
EthernetServer server(80);
String readString;
int Pin = 6;
void setup(){
pinMode(Pin, OUTPUT);
Serial.begin(9600);
Serial.println("acender botão");
Ethernet.begin(mac, ip);
server.begin();
}
void loop(){
EthernetClient client = server.available();
if (client) {
while (client.connected()) {
if (client.available()) {
char c = client.read();
if (readString.length() < 100) {
readString += c;
}
if (c == '\n') {
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println();
client.println("<HTML>");
client.println("<BODY>");
client.println("<H1>Acende LED</H1>");
client.println("<hr />");
client.println("<br />");
client.println("<a href=\"/?ledon\">Ligar o led</a>");
client.println("<a href=\"/?ledoff\">Desligar o led</a><br />");
client.println("</BODY>");
client.println("</HTML>");
delay(1);
client.stop();
if(readString.indexOf("?ledon") > 0)
{
digitalWrite(Pin, HIGH);
}
else {
if(readString.indexOf("?ledoff") > 0)
{
digitalWrite(Pin, LOW);
}
}
readString="";
}
}
}
}
}
Tags:
Mistérios...
Coisas para tentar:
Verifique se esse IP final 101 não está na faixa de IPs do DHCP. Não pode estar. Se estiver algum outro dispositivo pode ter ganhado esse IP.
Use o Ping para ver se cada dispositivo responde. Se não responder nem avance, tem coisa errada. Embora alguns dispositivos realmente não respondem ping. É preciso se informar.
Inclua mensagens de debug no seu programa, assim vc sabe onde parou.
Ex:
Em:
f (c == '\n') {
Serial.println("Recebida solicitacao, enviando pagina");
client.println("HTTP/1.1 200 OK");
Em:
if(readString.indexOf("?ledoff") > 0)
{Serial.println("Reconhecido Comando: ledoff");
digitalWrite(Pin, LOW);
}
E assim vai.
Obrigado e desculpe-me a demora em responder. Fiz os testes e observações que recomendou
e está tudo certo.
Preciso mudar algo no roteador para poder acessar pela internet mas ainda não achei onde mudar.
Novamente obrigado
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por