arduino ethernet shield ne fonctionne pas

Bonjour j'ai récement fait l'aquisition de 2 cartes , Duemilanove et un Ethernet shiel v1.1, le tout branché sur usb com3 et un port lan de mon réseau locale. mon réseau = 192.168.1.1, donc une de libre 192.168.1.50 MAc = ???? donc celle par défault, la 0xed 0xfd 0ae .....

jessaie la foutue exemple WEbclient j'inscris les bonnes données du moin j'espère et rien fonctionne. Je compile et j'upload ensuite jessais en CMDde pingner l'adresse et rien de concluant, je fait le test sur le serial monitor et ca dis tjrs déconnected pis que ça ne fonctionne pas.

Je ne suis pas programeur j'ai seulemnt eu il y a 8 ans un cours devisual basic a l'école donc je suis extremement nul. Quelqu'un peux maider?

Merci

/*
  Web client
 
 This sketch connects to a website (http://www.google.com)
 using an Arduino Wiznet Ethernet shield. 
 
 Circuit:
 * Ethernet shield attached to pins 10, 11, 12, 13
 
 created 18 Dec 2009
 by David A. Mellis
 
 */

#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 };
byte ip[] = { 192,168,1,50 };
byte server[] = { 74,125,91,147 }; // Google.com

// Initialize the Ethernet client library
// with the IP address and port of the server 
// that you want to connect to (port 80 is default for HTTP):
Client client(server, 80);

void setup() {
  // start the Ethernet connection:
  Ethernet.begin(mac, ip);
  // start the serial library:
  Serial.begin(9600);
  // give the Ethernet shield a second to initialize:
  delay(1000);
  Serial.println("connecting...");

  // if you get a connection, report back via serial:
  if (client.connect()) {
    Serial.println("connected");
    // Make a HTTP request:
    client.println("GET /search?q=arduino HTTP/1.0");
    client.println();
  } 
  else {
    // kf you didn't get a connection to the server:
    Serial.println("connection failed");
  }
}

void loop()
{
  // if there are incoming bytes available 
  // from the server, read them and print them:
  if (client.available()) {
    char c = client.read();
    Serial.print(c);
  }

  // if the server's disconnected, stop the client:
  if (!client.connected()) {
    Serial.println();
    Serial.println("disconnecting.");
    client.stop();

    // do nothing forevermore:
    for(;;)
      ;
  }
}

en passant j'ai fait des test sur le duemilanove et ca marche, faire blinker la petite led rouge ya pas de trouble, c'Est seulement avec le board ethernet shield qu'il y a des probs.

merci mais on dirais que je ne vois pas de réponse a mon probleme, j'ai bien une enc28j60...... je ne reussis pas a faire quoique se soit avec le shield

aussi il me marque tlt des erreure dans ce que je code exemple EtherShield es=EtherShield(); ((((((( 'ethernetshield' does not name a type , ca cest le message derreure en bas ))))))) est surligner ainsi que bien dautre, je ne fait que copier coller les codes de ceux que ca fonctionne en prennat soin de bien entré un ip libre sur mon reseau...

@Guillaume85
Même avis qu'AlienArea51.

Il y a une incompatibilité totale entre :
-le shield que tu as acheté (à base de ENC28J60)
-la librairie et les exemples que tu testes. (faite pour un shield à base de Wiznet W5100)
( on le voit au début de ton programme : This sketch connects to a website ..... using an Arduino Wiznet Ethernet shield. )

Pour faire fonctionner ton shield il faut impérativement installer et utiliser une librairie adaptée et les exemples qui viennent avec !! Les vendeurs des shields à base de puce Microchip ENC28J60 proposent en général le télechargement de cette librairie (signée nuelectronics) C'est celle qu'utilise Chicotore.
Bien vérifier qu'elle est installée (décompressée) au bon endroit avant de lancer les exemples.

Une version plus complète (mai 2011, avec DNS et DHCP) est disponible içi (avec ses exemples).
Je la recommande.

http://blog.thiseldo.co.uk/?p=570
L'auteur continue de la faire progresser et vient d'ajouter la possibilité d'uploader un sketch pat TFTP !!

le probleme c'Est que jai copier un exemple fait pour les enc28j60 et coller dans une page arduino et ca ne fonctionne pas regarde :

#include "etherShield.h"


// please modify the following two lines. mac and ip have to be unique
// in your local area network. You can not have the same numbers in
// two devices:
static uint8_t mymac[6] = {
  0x54,0x55,0x58,0x10,0x00,0x24}; 
static uint8_t myip[4] = {
  192,168,1,15};
static char baseurl[]="http://192.168.1.15/";
static uint16_t mywwwport =80; // listen port for tcp/www (max range 1-254)



#define BUFFER_SIZE 500
static uint8_t buf[BUFFER_SIZE+1];
#define STR_BUFFER_SIZE 22
static char strbuf[STR_BUFFER_SIZE+1];

EtherShield es=EtherShield();                                                                                         ----------------- ici il me marque lerreure apres il y en a dautres ...

// prepare the webpage by writing the data to the tcp send buffer
uint16_t print_webpage(uint8_t *buf, byte on_off);
int8_t analyse_cmd(char *str);

// LED cathode connects the Pin4, anode to 5V through 1K resistor
#define LED_PIN  4


void setup(){

  /*initialize enc28j60*/
  es.ES_enc28j60Init(mymac);
  es.ES_enc28j60clkout(2); // change clkout from 6.25MHz to 12.5MHz
  delay(10);

  /* Magjack leds configuration, see enc28j60 datasheet, page 11 */
  // LEDA=greed LEDB=yellow
  //
  // 0x880 is PHLCON LEDB=on, LEDA=on
  // enc28j60PhyWrite(PHLCON,0b0000 1000 1000 00 00);
  es.ES_enc28j60PhyWrite(PHLCON,0x880);
  delay(500);
  //
  // 0x990 is PHLCON LEDB=off, LEDA=off
  // enc28j60PhyWrite(PHLCON,0b0000 1001 1001 00 00);
  es.ES_enc28j60PhyWrite(PHLCON,0x990);
  delay(500);
  //
  // 0x880 is PHLCON LEDB=on, LEDA=on
  // enc28j60PhyWrite(PHLCON,0b0000 1000 1000 00 00);
  es.ES_enc28j60PhyWrite(PHLCON,0x880);
  delay(500);
  //
  // 0x990 is PHLCON LEDB=off, LEDA=off
  // enc28j60PhyWrite(PHLCON,0b0000 1001 1001 00 00);
  es.ES_enc28j60PhyWrite(PHLCON,0x990);
  delay(500);
  //
  // 0x476 is PHLCON LEDA=links status, LEDB=receive/transmit
  // enc28j60PhyWrite(PHLCON,0b0000 0100 0111 01 10);
  es.ES_enc28j60PhyWrite(PHLCON,0x476);
  delay(100);

  //init the ethernet/ip layer:
  es.ES_init_ip_arp_udp_tcp(mymac,myip,80);

  pinMode(LED_PIN, OUTPUT); 
  digitalWrite(LED_PIN, LOW);  // switch on LED
}

void loop(){
  uint16_t plen, dat_p;
  int8_t cmd;
  byte on_off = 1;

  plen = es.ES_enc28j60PacketReceive(BUFFER_SIZE, buf);

  /*plen will ne unequal to zero if there is a valid packet (without crc error) */
  if(plen!=0){

    // arp is broadcast if unknown but a host may also verify the mac address by sending it to a unicast address.
    if(es.ES_eth_type_is_arp_and_my_ip(buf,plen)){
      es.ES_make_arp_answer_from_request(buf);
      return;
    }

    // check if ip packets are for us:
    if(es.ES_eth_type_is_ip_and_my_ip(buf,plen)==0){
      return;
    }

    if(buf[IP_PROTO_P]==IP_PROTO_ICMP_V && buf[ICMP_TYPE_P]==ICMP_TYPE_ECHOREQUEST_V){
      es.ES_make_echo_reply_from_request(buf,plen);
      return;
    }

    // tcp port www start, compare only the lower byte
    if (buf[IP_PROTO_P]==IP_PROTO_TCP_V&&buf[TCP_DST_PORT_H_P]==0&&buf[TCP_DST_PORT_L_P]==mywwwport){
      if (buf[TCP_FLAGS_P] & TCP_FLAGS_SYN_V){
        es.ES_make_tcp_synack_from_syn(buf); // make_tcp_synack_from_syn does already send the syn,ack
        return;     
      }
      if (buf[TCP_FLAGS_P] & TCP_FLAGS_ACK_V){
        es.ES_init_len_info(buf); // init some data structures
        dat_p=es.ES_get_tcp_data_pointer();
        if (dat_p==0){ // we can possibly have no data, just ack:
          if (buf[TCP_FLAGS_P] & TCP_FLAGS_FIN_V){
            es.ES_make_tcp_ack_from_any(buf);
          }
          return;
        }
        if (strncmp("GET ",(char *)&(buf[dat_p]),4)!=0){
          // head, post and other methods for possible status codes see:
          // http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
          plen=es.ES_fill_tcp_data_p(buf,0,PSTR("HTTP/1.0 200 OK\r\nContent-Type: text/html\r\n\r\n<h1>200 OK</h1>"));
          goto SENDTCP;
        }
        if (strncmp("/ ",(char *)&(buf[dat_p+4]),2)==0){
          plen=print_webpage(buf, on_off);
          goto SENDTCP;
        }
        cmd=analyse_cmd((char *)&(buf[dat_p+5]));

        if (cmd==2){
          on_off=1;
          digitalWrite(LED_PIN, LOW);  // switch on LED
        }
        else if (cmd==3){
          on_off=0;
          digitalWrite(LED_PIN, HIGH);  // switch off LED
        }
        plen=print_webpage(buf, on_off);

        plen=print_webpage(buf, on_off);
SENDTCP:  
        es.ES_make_tcp_ack_from_any(buf); // send ack for http get
        es.ES_make_tcp_ack_with_data(buf,plen); // send data       
      }
    }
  }

}
// The returned value is stored in the global var strbuf
uint8_t find_key_val(char *str,char *key)
{
  uint8_t found=0;
  uint8_t i=0;
  char *kp;
  kp=key;
  while(*str &&  *str!=' ' && found==0){
    if (*str == *kp){
      kp++;
      if (*kp == '\0'){
        str++;
        kp=key;
        if (*str == '='){
          found=1;
        }
      }
    }
    else{
      kp=key;
    }
    str++;
  }
  if (found==1){
    // copy the value to a buffer and terminate it with '\0'
    while(*str &&  *str!=' ' && *str!='&' && i<STR_BUFFER_SIZE){
      strbuf[i]=*str;
      i++;
      str++;
    }
    strbuf[i]='\0';
  }
  return(found);
}

int8_t analyse_cmd(char *str)
{
  int8_t r=-1;

  if (find_key_val(str,"cmd")){
    if (*strbuf < 0x3a && *strbuf > 0x2f){
      // is a ASCII number, return it
      r=(*strbuf-0x30);
    }
  }
  return r;
}


uint16_t print_webpage(uint8_t *buf, byte on_off)
{

  int i=0;


  uint16_t plen;



  plen=es.ES_fill_tcp_data_p(buf,0,PSTR("HTTP/1.0 200 OK\r\nContent-Type: text/html\r\n\r\n"));
  plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("<center><p><h1>Welcome to Arduino Ethernet Shield V1.0  </h1></p> "));

  plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("<hr>
<form METHOD=get action=\""));
  plen=es.ES_fill_tcp_data(buf,plen,baseurl);
  plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("\">"));
  plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("<h2> REMOTE LED is  </h2> "));
  plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("<h1><font color=\"#00FF00\"> "));

  if(on_off)
    plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("ON"));
  else 
    plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("OFF"));

  plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("  </font></h1>
 ") );

  if(on_off){
    plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("<input type=hidden name=cmd value=3>"));
    plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("<input type=submit value=\"Switch off\"></form>"));
  }
  else {
    plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("<input type=hidden name=cmd value=2>"));
    plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("<input type=submit value=\"Switch on\"></form>"));
  }

  plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("</center><hr> <p> V1.0 <a href=\"http://www.nuelectronics.com\">www.nuelectronics.com<a>"));

  return(plen);
}

GRAND BON POUR MOI :slight_smile: MERCI

jai effacer tout sauf les executable jai faite la procédure dinstallation du nouveau librairie et ca marche merci ! :slight_smile:

Pour tes prochains message, merci de mettre le code entre les balises "code" :wink: