Arduino nuova Ethernet shield connessione al server client.connect(server,80)

void setup(){
  
 // Ethernet.begin(mac, ip);
  Serial.begin(9600);
  Serial.println("Inizializzata la seriale!");

Io inserirei una pausa prima dell'inizializzazione della seriale. Pare che molti non riescano a riprogrammare Arduino poiché impegna la seriale all'avvio.

 Serial.println("Inizializzo Ethernet:");
  if (Ethernet.begin(mac) == 0){
    delay(2000);
    Serial.println("Fallita la configurazione Ethernet usando DHCP");
  }

Non capisco il senso di mettere la pausa dentro l'if.

Serial.println("Inizio connessione:");
  if(client.connect(server, 80)){
    Serial.print("Connesso.");
    client.println("GET /search?q=arduino HTTP/1.0");
    client.println();
  } 
  else {
    // Se non si connette al server
    Serial.println("connection failed");
  }

Questo codice è inutile nel setup a meno che non cerchi di effettuare la connessione all'accensione di Arduino, ma beccare l'if è questione di millisecondi. Il risultato sarà sempre "connessione fallita".
Oppure metti un while finché qualcuno non si collega.

void loop(){
 Serial.println("Inizia il loop. . .");
  delay(1000);
  if (connessione==1 && client.available()){
     Serial.println("Connessione del client. . .");
}

Mi sono perso per strada la variabile connessione. Dove la inizializzi? Il compilatore dovrebbe segnarti l'errore.