Using Multiple Divices

I am new to Arduino and have run into a couple problems. I have an Arduino Uno R3, ethernet shield, BMP180 temperature sensor, and an LCD display.

What I want to do is have the arduino read the temperature, and then display on both a website (run off the SD card) and LCD screen. I was able to get the screen to display the temperature, and I have been able to create a website from the SD card that reads the analog signals along with the status of all the outputs, but when I put the two together, the webpage will not connect.

The webpage sketch includes the SPI, Ethernet, and SD libraries, but when I include the Wire library, I run into problems. Is this due to contradictions of pin usage? If so, how can I get all the devices communicating correctly?

I appreciate any help I can get!

I run into problems.

What problems?

The SD SD library uses the wire library anyway.

So far, the two consistent problems are that it gets stuck on the SD card initialization, or if the card is able to initialize, it cannot get a client. I put in a couple serial message checks at those two points and the program will get stuck on one of those two loops.

Here is the initialization portion and the beginning of the main loop. There is a bunch more code after this that dictates how to handle web inputs, but they work fine if the temperature sensor code is not there.

void setup()
{
    // disable Ethernet chip
    pinMode(10, OUTPUT);
    digitalWrite(10, HIGH);
    
    Serial.begin(9600);       // for debugging
    
    // initialize SD card
    Serial.println("Initializing SD card...");
    if (!SD.begin(4)) {
        Serial.println("ERROR - SD card initialization failed!");
        return;    // init failed
    }
    Serial.println("SUCCESS - SD card initialized.");
    // check for index.htm file
    if (!SD.exists("index.htm")) {
        Serial.println("ERROR - Can't find index.htm file!");
        return;  // can't find index file
    }
    Serial.println("SUCCESS - Found index.htm file.");
    // switches on pins 2, 3 and 5
    pinMode(2, INPUT);
    pinMode(3, INPUT);
    pinMode(5, INPUT);
    // LEDs
    pinMode(6, OUTPUT);
    pinMode(7, OUTPUT);
    pinMode(8, OUTPUT);
    pinMode(9, OUTPUT);

    if(temp.begin())
      Serial.println("BMP180 init success");
    else {
      Serial.println("BMP180 inint fail\n\n");
      while(1);
    }

    Ethernet.begin(mac, ip);  // initialize Ethernet device
    server.begin();           // start to listen for clients

}

void loop()
{

  status = temp.startTemperature();
  if (status != 0) {
    delay(status);
    status = temp.getTemperature(T);
    if(status != 0) {
      // Print out the measurement:
      Serial.print("temperature: ");
      Serial.print((9.0/5.0)*T+32.0,2);
      Serial.println(" deg F");
    }
    else Serial.println("error getting temp");
  }
  else Serial.println("error starting temp");
  
    EthernetClient client = server.available();  // try to get client
    if(!client)
      Serial.println("Cannot get client");
    else
      Serial.println("Got client");

    if (client) {  // got client?
        boolean currentLineIsBlank = true;
        while (client.connected()) {

The SD card uses SPI, not I2C.

Well, if you don't tell us what pins, we can't guess what the conflicts are. On the Uno the I2C pins are A4 and A5. No other pins are possible, but you probably already know how to plug in the BMP180.

MorganS:
The SD card uses SPI, not I2C.

Your right of course, sorry.