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);
}