Bom dia!
Estou fazendo um projeto pra escola que utiliza de Arduino e Ethernet Shield. Quando testamos o Arduino ele deu certo, sua programação carregou e os leds acenderam. Mas quando conectamos o Ethernet Shield, a programação não carrega e ele acende apenas o LED PWR mesmo com o cabo de rede conectado a ele. Alguém poderia me ajudar, por favor?
Se você está tendo problema pra subir o sketch com o shield conectado, apenas remova-o do Arduino, suba o sketch e volte a encaixá-lo.
Isabella, estou com o mesmo problema, o meu projeto é um controlador de temperatura, que possui um visor lcd 16x2 com o sensor, dth11, quando esta tudo ligado direto no arduino, funciona perfeito, porem quando encaixo a shield ethernet, só a leitura do sensor funciona, pois acompanho no monitor serial e ele não imprime no display. Acredito que estamos com o mesmo problema, pelo que verifiquei é necessário iniciar a shield, abaixo removi a minha parte do codigo e deixei só a parte que envolve a shield, se possivel inclua no seu projeto e verifique se funciona.
// include the library code:
#include <Ethernet.h> //inclui a biblioteca
// A linha abaixo permite que voce defina o endereço
// fisico (MAC ADDRESS) da placa de rede
byte mac[] = { 0xAB, 0xCD, 0x12, 0x34, 0xFF, 0xCA };
// Os valores abaixo definem o endereço IP, gateway e máscara.
// Configure de acordo com a sua rede.
IPAddress ip(10,15,1,99); //Define o endereço IP
IPAddress gateway(10,15,0,1); //Define o gateway
IPAddress subnet(255, 255, 255, 0); //Define a máscara de rede
void setup()
{
Ethernet.begin(mac, ip, gateway, subnet); //Inicializa o Ethernet Shield
}
Estou com um problema semelhante, eu já fiz o codigo teste mais ele funciona por um tempo e log em seguida cai da rede e só volta a funcionar quando eu tiro ele da energia e reconecto novamente, mais mesmo asim pouco tempo depois ele volta a perder a conecção gostaria de saber se teria algem ue poderia me ajudar?
EStarei enviando o codigo para analise tambem.
#include <SPI.h>
#include <Ethernet.h>
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
#define pin 9 // Ligar Cor Azul
#define pulso 7 // SAÍDA DE CLOCK PARA CONTADOR 4017
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
byte mac = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; //Definição do MAC Address da Ethernet Shield
IPAddress ip(192, 168, 1, 40); // Definição do endereço IP que a Ethernet Shield terá na rede onde estiver conectada. Verifique a Máscara-de-subrede e todos os equipamentos conectados na rede para achar um IP compatível e livre.
byte gateway = { 192, 168, 1, 1 }; // internet access via router
byte subnet = { 255, 255, 255, 0 }; //subnet mask
EthernetServer server(80); // Porta em que a Ethernet Shield irá receber as requisições das páginas (o padrão WEB é a porta 80)
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
String HTTP_req;
String URLValue;
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
void processaPorta(byte porta, byte posicao, EthernetClient cl);
String getURLRequest(String *requisicao);
bool mainPageRequest(String *requisicao);
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
const byte qtdePinosDigitais = 7;
byte pinosDigitais[qtdePinosDigitais] = {2 , 3 , 5 , 6 , 7 ,8 ,9 }; // SAÍDA 8 ( ACIONAMENTO DO LED VERMELHO ), SAÍDA 2,3,5,6 - AUDIOS A SER ENVIADOS
byte modoPinos[qtdePinosDigitais] = {OUTPUT, OUTPUT, OUTPUT, OUTPUT, OUTPUT, OUTPUT, OUTPUT};
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
void setup()
{
Ethernet.begin(mac, ip);
server.begin();
Serial.begin(9600);
pinMode(pin, 1); // DEFINE PINO 9 CMO SAIDA ACIONAMENTO DIRETO COR AZUL
pinMode (pulso, 1); // DEFINE SAÍDA PULSO CLOCK, Como do programa base
for (int nL=0; nL < qtdePinosDigitais; nL++) {
pinMode(pinosDigitais[nL], modoPinos[nL]);
}
}
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
void loop()
{
digitalWrite(pulso, HIGH);
delay(100);
digitalWrite(pulso, LOW);
delay(100);
digitalWrite(pin, HIGH);
EthernetClient client = server.available();
if (client) {
boolean currentLineIsBlank = true;
while (client.connected()) {
if (client.available()) {
char c = client.read();
HTTP_req += c;
if (c == '\n' && currentLineIsBlank ) {
if (mainPageRequest(&HTTP_req)) {
URLValue = getURLRequest(&HTTP_req);
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connection: close");
client.println();
//Conteudo da Página HTML
client.println("<!DOCTYPE html>");
client.println("<html>");
client.println("<head>");
client.println("<title>Bolkeflex - Emergincia e Audio</title>");
client.println("</head>");
client.println("<body>");
client.println("<h1>Emergincia e Audio</h1>");
client.println("<br/>");
client.println("<h2>Acionamento Bulkeflex - Emergincia e Audios </h2>");
client.println("<br/>");
client.println("<h1>Emergincia e Audio</h1>");
client.println("<form method=\"get\">");
for (int nL=0; nL < qtdePinosDigitais; nL++) {
processaPorta(pinosDigitais[nL], nL, client);
client.println("<br/>");
}
client.println("<br/>");
client.println("<button type=\"submit\" name=\"botao\">Envia Comando</button>");
client.println("</form>");
client.println("</body>");
client.println("</html>");
} else {
client.println("HTTP/1.1 200 OK");
}
HTTP_req = "";
break;
}
if (c == '\n') {
currentLineIsBlank = true;
}
else if (c != '\r') {
currentLineIsBlank = false;
}
}
}
delay(1);
client.stop();
}
}
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
void processaPorta(byte porta, byte posicao, EthernetClient cl)
{
static boolean LED_status = 0;
String cHTML;
cHTML = "P";
cHTML += porta;
cHTML += "=";
cHTML += porta;
if (modoPinos[posicao] == OUTPUT) {
if (URLValue.indexOf(cHTML) > -1) {
LED_status = HIGH;
} else {
LED_status = LOW;
}
digitalWrite(porta, LED_status);
} else {
LED_status = digitalRead(porta);
}
cHTML = "<input type=\"checkbox\" name=\"P";
cHTML += porta;
cHTML += "\" value=\"";
cHTML += porta;
cHTML += "\"";
//cHTML += "\" onclick=\"submit();\"";
if (LED_status) {
cHTML += " checked ";
}
if (modoPinos[posicao] != OUTPUT) {
cHTML += " disabled ";
}
cHTML += ">Porta ";
if (porta <= 13) {
cHTML += porta;
} else {
cHTML += "A";
cHTML += porta - 14;
}
cl.println(cHTML);
}
String getURLRequest(String *requisicao) {
int inicio, fim;
String retorno;
inicio = requisicao->indexOf(“GET”) + 3;
fim = requisicao->indexOf(“HTTP/”) - 1;
retorno = requisicao->substring(inicio, fim);
retorno.trim();
return retorno;
}
bool mainPageRequest(String *requisicao) {
String valor;
bool retorno = false;
valor = getURLRequest(requisicao);
valor.toLowerCase();
if (valor == “/”) {
retorno = true;
}
if (valor.substring(0,2) == “/?”) {
retorno = true;
}
if (valor.substring(0,10) == “/index.htm”) {
retorno = true;
}
return retorno;
}