Help Required - Four MCP9600 Thermocouple Amplifiers on Same I2C Bus

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 all four different I2C addresses.

Could anyone kindly help me modify the Seeed library files. I’m a beginner programmer. I was hoping to modify the MCP9600_basic_demo file? I assume I further have to amend the Seeed_MCP9600.h file too? I wish to read out all four thermocouple temperature values cyclically. Any help would be appreciated.

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”

#define SERIAL SerialUSB
#define SERIAL Serial

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 = ");

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() {

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


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(" ");