Carga de librerias de componentes no presentes.

Buenas.

Disculpen si las preguntas son triviales pero no pude encontrar respuesta a ellas. (todavía no me llego el hardware para hacer las pruebas en directo)

La intención es hacer un proyecto usando UNO + W5100 o UNO + CC3000 . La idea es hacerlo lo mas compatible entre módulos (w5100 o el CC3000).

La consulta es:

Qué sucede cuando cargo una librera (supongamos la del CC3000) y este hardware no esta conectado al Arduino? En el caso de que el programa siga funcionando, existe forma de consultar si la librería se cargo de forma exitosa y de esta forma poder diferencia que hardware tengo conectado (si el W5100 o el CC3000) ?

Desde ya, gracias por su tiempo.

Para responder a eso deberias ver si cada chip tiene algun elemento o ID que lo identifique. Busca en sus hojas de datos a ver si encuentras algun elemento común pero diferente.
Si tu idea es hacer un código tal que detecte si esta una u otra placa, me parece algo desacertado pero bueno quien soy para decir como hacer un proyecto. Tendras tus razones.

el CC3000 tiene una rutina de inicialización de este tipo

#include <Adafruit_CC3000.h>
#include <SPI.h> 

#define ADAFRUIT_CC3000_IRQ   3  // MUST be an interrupt pin!
#define ADAFRUIT_CC3000_VBAT  5
#define ADAFRUIT_CC3000_CS    10

Adafruit_CC3000 cc3000 = Adafruit_CC3000(ADAFRUIT_CC3000_CS, ADAFRUIT_CC3000_IRQ, ADAFRUIT_CC3000_VBAT, SPI_CLOCK_DIVIDER);
#define WLAN_SSID       "charly"        // Maximo 32 caracteres!
#define WLAN_PASS       "contrase"
#define WLAN_SECURITY   WLAN_SEC_WPA2

Serial.begin(115200);
Serial.println("Buscando CC3000!");
Serial.print("Inicializando CC3000 ...");
if (!cc3000.begin())
   { Serial.println("\nImposible inicializar el CC3000!" );
     Serial.flush();
     exit(0);
   }

En cambio una W5100 se configura asi

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

byte mac[] = {  0x00, 0xAA, 0xBB, 0xCC, 0xDE, 0x02 } ;
Y ahora vamos a crear una instancia de cliente Ethernet:

EthernetClient client;

void setup()
   {
       Serial.begin(9600);
       while (!Serial)
          {     ; // Solo para el Leonardo  }
   }

if (Ethernet.begin(mac) == 0)    //Si devuelve error
   {       
        Serial.println("No ha sido possible configurar la Ethernet por DHCP");
        while (true; )    ;            // No sigas, quédate aquí eternamente
   }

La manera simple sería cargar ambas rutinas y esperar a que una diga que no pudo y otra que si.
Pero tendrias falsos positivos porque puede ser que no se conecte una W5100 al router x error de cable o de router y te dira que fallo cuando no lo hizo
O puede que una CC3000 no se conecte a WIFI y sin embargo sea la placa que tienes conectada a tu Arduino.

O sea que Ethernet.begin() te dice si tienes una W5100 presente o no
Al igual que cc3000.begin()
Ambas requieres seteos previos.

Hola surbyte.

Perdón por la demora.

Gracias por tu respuesta!.

Respecto a tu, "quien soy para decir como hacer un proyecto" , la respuesta es fácil. ALGUIEN CON EXPERIENCIA.

Saludos!