Determining i2c Address for Sparkfun TMP006 Sensor

I am using the TMP006 thermopile to collect thermal data on a target area, using the library provided on Sparkfun’s website. The code works fine, but I have to make a modification. The i2c address is defined in the code as 0x40. It then instructs you to put the outputs into pins A4 and A3. When I do this, all is well, but I need pin A4 and A5 to connect two arduinos together. When I change the pin, the i2c address must change because the program hangs when it first uses the new i2c address in TMP006_config(). I had tried using nick gammon’s i2c address finder, but it couldn’t find an i2c-using device. Any ideas or methods for determing i2c addresses? Thanks!

The declaration:

#include <SPI.h>
#include <SD.h>
#include <stdint.h>
#include <math.h>
#include <Wire.h>
#include "I2C_16.h"
#include "TMP006.h"
Sd2Card card;
SdVolume volume;
SdFile root;
File userFile;

uint8_t sensor1 = 0x40; // I2C address of TMP006, can be 0x40-0x47      //  <--Declaration. I have tried the suggested 
uint16_t samples = 4; // # of samples per reading, can be 1/2/4/8/16     //values to no avail. There is only 8, right?
int wait = 15;
int sensorValue;
int sound[5];
int temp[5];
boolean go = true;
String userInput;
boolean pool;

int delay3 = 0;
int delay4 = 0;
int delay5 = 0;
int delay6 = 0;
int delay7 = 0;
int delay8 = 0;
float count;
float seconds;

void setup()
  pinMode(10, OUTPUT);
  digitalWrite(10, HIGH);
  Serial.println("Searching for SD Card...");
  if (!SD.begin(10)) {
    Serial.println("Cannot find SD card.");
  while (!Serial) {                                                      // Open serial communications and wait for port to open:
  Serial.println("\nInitializing SD card...");
  if (!card.init(SPI_HALF_SPEED, 10)) {                                  //***10 used to be: chipSelect***
    Serial.println("initialization failed.");
    go = false;
  else {
    Serial.println("Card Initialized");
  int sensor_temp = readDieTempC(sensor1);
  config_TMP006(sensor1, samples);                                 //***Hangs here

Code I use from Library:

// Configures sensor, use before reading from it
void config_TMP006(uint8_t addr, uint16_t samples)
  write16(addr, TMP006_CONFIG, samples | TMP006_CFG_MODEON | TMP006_CFG_DRDYEN);

// Calculate object temperature based on raw sensor temp and thermopile voltage
double readObjTempC(uint8_t addr) 
  double Tdie = readRawDieTemperature(addr);
  double Vobj = readRawVoltage(addr);
  Vobj *= 156.25;  // 156.25 nV per LSB
  Vobj /= 1000000000; // nV -> V
  Tdie *= 0.03125; // convert to celsius
  Tdie += 273.15; // convert to kelvin

  // Equations for calculating temperature found in section 5.1 in the user guide
  double tdie_tref = Tdie - TMP006_TREF;
  double S = (1 + TMP006_A1*tdie_tref + 
  S *= TMP006_S0;
  S /= 10000000;
  S /= 10000000;

  double Vos = TMP006_B0 + TMP006_B1*tdie_tref + 

  double fVobj = (Vobj - Vos) + TMP006_C2*(Vobj-Vos)*(Vobj-Vos);

  double Tobj = sqrt(sqrt(Tdie * Tdie * Tdie * Tdie + fVobj/S));

  Tobj -= 273.15; // Kelvin -> *C
  return Tobj;

When I change the pin, the i2c address must change

If you are using an I2C device, it MUST be connected to the I2C pins. Changing the pins it is connected to is NOT a possibility, unless you have an Arduino with multiple I2C ports (like the Due). If you do, then you need to change the I2C instance, not the device address.