ethernet shield non official

salve a tutti :slight_smile:
vi spiego il mio problema:
ho una shield ethernet come questa

e arduino 2009. Ho provato questi due codici:

//Librerie impiegate per il progetto
#include <SPI.h>
#include <Ethernet.h>
 
//Creao un array di byte per specificare il mac address
//byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
//creo un array di byte per specificare l'indirizzo ip
byte ip[] = {192, 168, 1, 251};
 
//creo una variabile char per memorizzare i byte letti dal client
char Data_RX;
 
//creao un oggetto server che rimane in ascolto sulla porta
//specificata
Server ArduinoServer(80);
 
void setup()
{
    //inizializza lo shield con il mac e l'ip
    Ethernet.begin(ip);
    //inizializza l'oggetto server
    ArduinoServer.begin();
}
 
void loop()
{
    //fai qualcosa!
    delay(10);
}
#include <SPI.h>
#include <Client.h>
#include <Ethernet.h>
#include <Server.h>

//DETERMINA IL MAC E L'IP DELLA PAGINA WEB
byte mac[] = {
  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; 
byte ip[] = {
  192, 168, 1, 177};

//PORTA DI COMUNICAZIONE			
EthernetServer server(80);

//SCRIVE IL NUMERO DI PIN CORRISPONDENTE AI LED
int ledPin1 = 9; 
int ledPin2 = 8;

//LUNGHEZZA DELLA STRINGA INVIATA
String readString = String(30);

//IMPOSTA ALL'AVVIO I LED SPENTI
boolean LEDON1 = false; 
boolean LEDON2 = false; 

void setup(){
  Ethernet.begin(ip, mac);
  pinMode(ledPin1, OUTPUT);  
  pinMode(ledPin2, OUTPUT); 
  Serial.begin(9600);
  server.begin();
}

void loop(){
  EthernetClient client = server.available();
  if (client) //SE ESISTE UN CLIENTE
  {
    while (client.connected()) // SE IL CLIENTE E' CONNESSO
    {
      if (client.available()) //SE E' TUTTO OK PER INIZIARE
      {
        char c = client.read(); //LEGGI I SINGOLI CARATTERI INVIATI
        if (readString.length() < 100) 
        {
          readString += c; //CONCATENA I CARATTERI
        }  
        if (c == '\n') //VEDE SE C'E' IL CARATTERE DI FINE STRINGA, PER INDIVIDUARE CHE E' FINITA
        {
          if(readString.indexOf("L1=1") > 0) //IMPOSTA UNA VARIABILE DI TIPO BOLEANA (VERO-FALSO) PER GLI STATI DEL LED
          {
            LEDON1 = true;
          } 
          else if (readString.indexOf("L2=1") > 0) 
          {
            LEDON2 = true;             
          }
          else if(readString.indexOf("L1=0") > 0)
          {
            LEDON1 = false;
          } 
          else if (readString.indexOf("L2=0") > 0) 
          {
            LEDON2 = false;             
          }

          //CREA LA PAGINA HTML (VERRA' AGGIORNATA AD OGNI ISTRUZIONE NUOVA)
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println();
          client.println("<html><head></head><body>");

          //TITOLO LED 1
          client.println("<h1>Led 1</h1>");

          //OPERAZIONI DA FARE QUANDO SI CLICCA PER ATTIVARE LEDON1:  
          if (LEDON1) { 
            digitalWrite(ledPin1, HIGH);   
            client.println("Stato: ON
");
          } 
          else {

            //OPERAZIONI DA FARE QUANDO SI CLICCA PER SPEGNERE LEDON1:  
            digitalWrite(ledPin1, LOW ); 
            client.println("Stato: OFF
"); 
          }

          //CREA I PULSANTI RELATIVI A LED1    
          client.println("<a href='?L1=0'>SPEGNI</a>");
          client.println("<a href='?L1=1'>ACCENDI</a>");

          //INSERISCE IL DIVISORE
          client.println("
______________________________
");

          //TTOLO LED2
          client.println("<h1>Led 2</h1>");

          //OPERAZIONI DA FARE QUANDO SI CLICCA PER ATTIVARE LEDON2:  
          if (LEDON2) { 
            digitalWrite(ledPin2, HIGH);  
            client.println("Stato: ON
"); 
          } 
          else { 

            //OPERAZIONI DA FARE QUANDO SI CLICCA PER SPEGNERE LEDON2:    
            digitalWrite(ledPin2, LOW); 
            client.println("Stato: OFF
"); 
          } 

          //CREA I PULSANTI RELATIVI A LED2
          client.println("<a href='?L2=0'>SPEGNI</a>");
          client.println("<a href='?L2=1'>ACCENDI</a>");

          //CHIUDE I TAG HTML PER LA PAGINA
          client.println("</body></html>");

          //SI PREPARA PER UNA NUOVA ISTRUZIONE
          readString="";

          //TERMINA LE OPERAZIONI CLIENTE
          client.stop();
        }
      }
    }
  }
}

sono codici funzionanti trovati in rete, di cui, per il secondo vi è anche un video con relativo progetto. A me non funzionano, quando collego al mio pc o al router (ho alice) non viene rilevato facendo il ping. Cosa posso fare?
p.s.: la micro sd funziona quindi non credo sia la shield, anche perchè quando collego il cavo ethernet vedo che le luci si attivano

Hai provato caricando gli esempi dell'IDE? Scarica l'ultima versione, la 1.0.5r2 --> http://arduino.cc/en/Main/Software#toc2

si anche scaricando gli esempi, comunque scarico l’ultima versione e ti aggiorno

Potresti leggerci per favore la sigla dell'integrato montato sul tuo shield? E' un ENC28J60 o un W5100? Perché nella descrizione del prodotto si legge W5100, e quindi dovrebbe essere compatibile con l'ethernet shield originale, però ad un certo punto viene nominato anche l'ENC, che non è compatibile a livello di software con l'altro controller.

leo72: Potresti leggerci per favore la sigla dell'integrato montato sul tuo shield?

La foto è di una shield con il W5100, la descrizione parla solo del 5100, però il MPN riporta ENC28J60, se è realmente basata sul 28J60 c'è da aprire un bel reclamo per prodotto non conforme alla descrizione.

Sì, è quella scritta che mi ha fatto pensar male. Ci può anche stare che abbiano messo un ENC in formato QFN al posto del Wiznet però sarebbero veramente degli assassini :stuck_out_tongue_closed_eyes:

salve ragazzi! manco da un pò per via di esami universitari. la sigla dell'integrato è: WIZnet iEthernet W5100 FFTQ3-010-1340

Quindi il chip è un Wiz. In questo caso la libreria standard dell'Arduino e gli esempi allegati nell'IDE dovrebbero funzionarti. Non te ne gira nessuno?

purtroppo nessuno e non so se il problema è la shield non ufficiale o cosa :(

prova a collegare lo shield tramite il connettore icsp senza montarlo sull’arduino.
usa dei cavetti.
oltre al connettore icsp devi collegare anche i pin 4 e 10 ai rispettivi di arduino.