Problema con programma per WebClient

Salve a tutti, ultimamente sto avendo un problema che mi sta dando abbastanza sui nervi. Non riesco minimamente a capire il motivo per il quale il mio programma non ha la minima intenzione di far connettere l’arduino al mio computer locale con un web server installato.
Vi spiego meglio e poi riporto il programma:

  1. Io non possiedo arduino originale, ma una variante migliorata chiamata “ChipKit Max32” prodotta dalla Digilenc e che si programma esattamente come Arduino, con connesso, ovviamente, il relativo Network Shield sempre della Digilenc
  2. Il programma funziona egregiamente in tutto e, per quanto sia estremamente semplice, fa il suo dovere, tranne quello di connettersi al server
  3. utilizzo alimentazione tramite presa USB perchè non ho l’alimentatore 5V, prima o poi dovrò comprarlo
  4. quando connetto l’RJ45 nella porta J1 del Network Shield (Ethernet) non si accende nemmeno il Link Led e non pinga: non da proprio segni di vita
  5. Riporto delle foto ed il programma di seguito
const int analogInPin = A0;  // Input analogico dove è collegato il sensore/potenziometro
const int analogOutPin = 9; // Output analogico LED

int sensorValue = 0;        // Valore letto dal sensore/potenziometro
int outputValue = 0;        // Valore di output analogico

#include <LiquidCrystal.h>
#include <SPI.h>
#include <Ethernet.h>

//  LCD
#define rs  8
#define enable 6

#define d4  5
#define d5  4
#define d6  3
#define d7  2

#define  ROW 4
#define  COL 20

int i=0;
byte mac[] = { 0xBE,0xAC,0xBD,0xFF,0xAE,0xDF }; // inserire l'indirizzo di mac
byte ip[] = { 192,168,1,106 }; // Inserire l'indirizzo IP
byte gateway[] = { 192,168,1,1 }; // Inserire l'indirizzo IP del Gateway
byte subnet[] = { 255,255,255,0 }; // Inserire la subnet relativa alla classe di rete utilizzata
byte server[] = { 192,168,1,105 }; // Inserire l'IP del server al quale inviare i dati (PC in locale con WebServer XAMPP o altri)

Client client(server, 80); // Inserire la porta attraverso la quale ci si vuole connettere

LiquidCrystal lcd(rs, enable, d4, d5, d6, d7);     // Imposta i pins dello schermo LCD 20x4

void setup() {
  // initialize serial communications at 9600 bps:
  Serial.begin(9600); 
  lcd.begin(COL, ROW);                       // LCD 20 colonne 4 righe
  pinMode(11, OUTPUT);  
  Ethernet.begin(mac, ip, gateway, subnet);
  lcd.clear();
  lcd.setCursor(0,0);
  
  while(i<=50) { // Cicla per far blinkare il led velocemente mentre l'arduino tenta la connessione
  i++;
  digitalWrite(11, HIGH);   // accente il led
  delay(20);                // attende 20 ms
  digitalWrite(11, LOW);    // spegne il led
  delay(20);
  lcd.clear();
  lcd.print("Connessione in corso");
  delay(10);
  }
  
    // se la connessione è disponibile scrive "connesso"
  if (client.connect()) {
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("Connesso!");
    // Esegue la richiesta HTTP
    client.println("GET /search?q=arduino HTTP/1.0");
    client.println();
    digitalWrite(11, HIGH);
  } 
  else {
    // se la connessione non è disponibile scrive "Connessione Fallita"
    lcd.clear(); // Pulisce il display
    lcd.setCursor(0,0); //Setta il cursore del display a Colonna=0 e Riga=0
    lcd.print("Connessione Fallita");
    digitalWrite(11, LOW);
    delay(2000);
  }
}

void loop() {
  // Se il server invia dati li cattura e li scrive sullo schermo in via sepeciale
  if (client.available()) {
    char c = client.read();
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print(c);
  }

  // Se il server si disconnette, scrive "Disconnesso" sulla terza riga del display (non cancellando il valore analogico di input) e spegne il led
  if (!client.connected()) {
    lcd.clear();
    lcd.setCursor(0,2);
    lcd.print("Disconnesso");
    client.stop();
    digitalWrite(11, LOW);
  }
  
  // Legge il valore analogico da "A0"
  sensorValue = analogRead(analogInPin);            
  // Mappa il valore trasformandolo in numero
  outputValue = map(sensorValue, 0, 1023, 0, 1023);  
  // Cambia il valore di output dell'analogico
  analogWrite(analogOutPin, outputValue);

if(sensorValue>0){  
  lcd.setCursor(0,0);
  lcd.clear();
         lcd.print("Valore = " );
         lcd.setCursor(9,0);      
         lcd.print(sensorValue);
         
       // ---------------------------------------------------------------------------------------- //  
     
    
  if (client.connect()) {
    lcd.setCursor(0,2);
    lcd.print("Connesso!              ");
    // Make a HTTP request:
    client.println("GET /search?q=arduino HTTP/1.0");
    client.println();
    digitalWrite(11, HIGH);
  }

  if (!client.connected()) {
    lcd.setCursor(0,2);
    lcd.print("Disconnesso");
    client.stop();
  digitalWrite(11, HIGH);  
  delay(100);              
  digitalWrite(11, LOW);   
  delay(100);
  }
       
  // --------------------------------------------------------------------------------------------- //

}
else{
  lcd.setCursor(0,0);
  lcd.clear();
    lcd.setCursor(0,0);
         lcd.print("Spento" );
         digitalWrite(11, LOW);
  
   // --------------------------------------------------------------------------------------------- //  
  

  if (client.connect()) {
    lcd.setCursor(0,2);
    lcd.print("Connesso!          ");
    client.println("GET /search?q=arduino HTTP/1.0");
    client.println();
    digitalWrite(11, HIGH);
  }

  if (!client.connected()) {
    lcd.setCursor(0,2);
    lcd.print("Disconnesso");
    client.stop();
    digitalWrite(11, LOW);
  }

  // --------------------------------------------------------------------------------------------- //
  
}
delay(500);
}

Potrei dire una cavolata ma mi sembra di aver letto da qualche parte che le librerie ethernet comuni per arduino funzionano solo con gli ethernet shield basati sul chip w5100 mentre la chipmax se non erro usa un adattatore integrato del pic e quindi avrebbe bisogno delle sue librerie.

dnviti1994: 1) Io non possiedo arduino originale, ma una variante migliorata chiamata "ChipKit Max32" prodotta dalla Digilenc e che si programma esattamente come Arduino, con connesso, ovviamente, il relativo Network Shield sempre della Digilenc

La chipKIT non è una scheda Arduino né la sua versione evoluta ma una scheda diversa, basata su un chip differente e prodotta da un altro fabbricante. Sarebbe come dire che la Wiring è una Arduino solo perché ha gli stessi connettori.

Ti quoto quanto detto da Massimo Banzi un annetto e mezzo fa sulla chipKIT: [quote author=Massimo Banzi link=topic=66553.msg488655#msg488655 date=1310724631] Ciao

La chipkit non è un'Arduino... è una scheda con la forma di Arduino che ha un linguaggio più o meno compatibile. L'hardware va a 3.3v e molti shield non vanno...(o rischiano di danneggiarla) (...)

m [/quote] http://arduino.cc/forum/index.php/topic,66553.msg488655.html#msg488655

Detto questo, la discussione è OT dato che questo è il forum su cui si parla di Arduino e non di altre schede.

in ogni caso, ho le sue librerie col suo ambiente di sviluppo modificato dalla digilenc, voi siete in grado di darmi una mano? Voglio dire, il programma è fatto bene? ci sono errori? mi basterebbe sapere questo :) Poi penso che acquisterò un arduino originale, queste altre schede non hanno supporto sufficiente e hanno problemi infiniti se succede qualcosa...

UP! Per favore, aiutatemi :(

Ma non credo che potrai trovare aiuto qui, la libreria che richiami è per il chip w5100 lavora sui registri di quel micro, negli schemi delle tue schede non vedo il chip, prenditi una shield R3 di arduino o cerca in rete su qualche forum (se c'è) qualche risposta la troverai

ciao