Bonjour,
Je viens d’acheter un shield Ethernet et voilà plusieurs heures que j’essaye de le faire fonctionner.
je le teste avec le croquis WebServer disponible sur l’IDE. le code est le suivant.
#include <SPI.h>
#include <Ethernet.h>// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network:
byte mac = {
0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192,168,1,38);// Initialize the Ethernet server library
// with the IP address and port you want to use
// (port 80 is default for HTTP):
EthernetServer server(80);void setup() {
// Open serial communications and wait for port to open:
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for Leonardo only
}// start the Ethernet connection and the server:
Ethernet.begin(mac, ip);
server.begin();
Serial.print("server is at ");
Serial.println(Ethernet.localIP());
}void loop() {
// listen for incoming clients
EthernetClient client = server.available();
if (client) {
Serial.println(“new client”);
// an http request ends with a blank line
boolean currentLineIsBlank = true;
while (client.connected()) {
if (client.available()) {
char c = client.read();
Serial.write(c);
// 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
if (c == ‘\n’ && currentLineIsBlank) {
// send a standard http response header
client.println(“HTTP/1.1 200 OK”);
client.println(“Content-Type: text/html”);
client.println(“Connection: close”); // the connection will be closed after completion of the response
client.println(“Refresh: 5”); // refresh the page automatically every 5 sec
client.println();
client.println("");
client.println("");
// output the value of each analog input pin
for (int analogChannel = 0; analogChannel < 6; analogChannel++) {
int sensorReading = analogRead(analogChannel);
client.print(“analog input “);
client.print(analogChannel);
client.print(” is “);
client.print(sensorReading);
client.println(”
“);
}
client.println(””);
break;
}
if (c == ‘\n’) {
// you’re starting a new line
currentLineIsBlank = true;
}
else if (c != ‘\r’) {
// you’ve gotten a character on the current line
currentLineIsBlank = false;
}
}
}
// give the web browser time to receive the data
delay(1);
// close the connection:
client.stop();
Serial.println(“client disonnected”);
}
}
j’ai paramétré mon routeur pour avoir une ip fixe avec ce shield.
lorsque je le lance, il fonctionne mais au bout de quelques rafraichissements de la page web ( ici il se fait toutes les 5 secondes) il se bloque. Si j’appuie sur le bouton RESET le moniteur série m’indique une adresse ip de mon serveur à 255.255.255.255 :o
j’ai beau alors refaire un reset, c’est toujours le même message qui s’affiche : “server is at 255.255.255.255” >:(
le seul moyen de relancer est de débrancher l’arduino ou de déplugger le shield. Mais le programme se bloque à nouveau au bout d’un temps variable. J’ai remarqué aussi que si aucun client ne vient se connecter, le shield ne bug pas et un appuie sur reset me redonne une bonne adresse.
Etant donné que je n’ai pas le niveau pour construire un robot qui viendrait débrancher l’arduino en mon absence je serais trés heureux si un génie de la communauté me donnait ne serait ce qu’une ébauche de solution ou de raison à ce problème. Au pire y a t’il un moyen de faire un RESET total sans avoir à débrancher le shield.
J’en profite aussi pour demander si il y a un moyen d’afficher les numéro de ligne sur l’IDE arduino.
J’ajoute aussi que pour pas me faire refourguer du matos pourri en cochonium de chine j’ai acheté ce shield dans un vrai magasin avec un vrai gens pas sympa qui m’a pris pour un vrai blaireau, ce que je suis sans doute vu le nombre d’heures que je passe à faire fonctionner son matos…