Help Needed to Modify Seeed MCP9600 Demo File to Accommodate Four MCP9600 Devices

I wish to connect four Seeed I2C Thermocouple Amplifiers (MCP9600) to an Arduino Uno, all sharing the same I2C bus. I understand how to modify the MCP9600 jumper (potential divider) settings, to give me four different I2C addresses of 0x60, 0x63, 0x65 and 0x67.

Could anyone kindly help me modify the Seeed example MCP9600_4channel_INT_demo.ino file, to accommodate all four MCP9600 devices. I’m a beginner programmer. Any help would be appreciated. https://github.com/Seeed-Studio/Seeed_MCP9600

I’ve finally figured it out, so to assist anyone else wishing to connect four MCP9600 thermocouples to an Arduino, here’s my code. Note I amended the Seeed MCP9600 underside PCB jumper settings to give the following I2C addresses; (0x60) kept the default middle-to-right solder bridge, (0x63) cut the default middle-to-right solder bridge and replaced it by a 0603 SMT 3.57k resistor, (0x65) cut the default middle-to-right solder bridge and replaced it by a 0603 SMT 10.2k resistor, (0x67) cut the default middle-to-right solder bridge and soldered the middle-to-left jumpers together. I hope this helps anyone.

#include “Seeed_MCP9600.h”

#ifdef ARDUINO_SAMD_VARIANT_COMPLIANCE
#define SERIAL SerialUSB
#else
#define SERIAL Serial
#endif

const int N_SENSOR = 4;
MCP9600 sensors[N_SENSOR] = {MCP9600(0x60), MCP9600(0x63), MCP9600(0x65), MCP9600(0x67)};

err_t sensors_basic_config() {
err_t ret = NO_ERROR;

for (int i = 0; i < N_SENSOR; i++) {
CHECK_RESULT(ret, sensors[i].set_filt_coefficients(FILT_MID));
CHECK_RESULT(ret, sensors[i].set_cold_junc_resolution(COLD_JUNC_RESOLUTION_0_25));
CHECK_RESULT(ret, sensors[i].set_ADC_meas_resolution(ADC_14BIT_RESOLUTION));
CHECK_RESULT(ret, sensors[i].set_burst_mode_samp(BURST_32_SAMPLE));
CHECK_RESULT(ret, sensors[i].set_sensor_mode(NORMAL_OPERATION));
SERIAL.print("err_t ret = ");
SERIAL.println(ret);
}

return ret;
}

err_t get_temperature(MCP9600 * sensor, float * value) {
err_t ret = NO_ERROR;
float hot_junc = 0;
float junc_delta = 0;
float cold_junc = 0;

CHECK_RESULT(ret, sensor->read_hot_junc(&hot_junc));
CHECK_RESULT(ret, sensor->read_junc_temp_delta(&junc_delta));
CHECK_RESULT(ret, sensor->read_cold_junc(&cold_junc));

*value = hot_junc;

return ret;
}

void setup() {
SERIAL.begin(9600);
delay(10);

for (int i = 0; i < N_SENSOR; i++) {
if (sensors[i].init(THER_TYPE_K)) {
SERIAL.println(“Sensor Initialisation Failed!”);
}
}

sensors_basic_config();
}

void loop() {
float temps[N_SENSOR] = {0};

for (int i = 0; i < N_SENSOR; i++) {
get_temperature(&(sensors[i]), &(temps[i]));
}

for (int i = 0; i < N_SENSOR; i++) {
SERIAL.print(i);
SERIAL.print(" ");
SERIAL.println(temps[i]);
}

SERIAL.println();
delay(1000);
}