Я использую Arduino Mega2560 и MCP3424 со следующей библиотекой (https://github.com/stevemarple/MCP342x) для чтения данных с термопар. Это прекрасно работает для одного канала. Но когда я пытаюсь добавить второй канал (фактически мне нужны все 4 канала) ) Я получаю неправильные данные.
Что я не прав?
Я попытался создать 2 объекта MCP342x с одинаковым адресом и настроить их отдельно, но это не сработало.
Ниже немного изменен пример GeneralCallConversion из библиотеки
uint8_t address = 0x6E;
MCP342x adc_ch1 = MCP342x(address);
MCP342x adc_ch2 = MCP342x(address);
// Configuration settings
MCP342x::Config config1(MCP342x::channel1, MCP342x::oneShot,
MCP342x::resolution18, MCP342x::gain8);
MCP342x::Config config2(MCP342x::channel2, MCP342x::oneShot,
MCP342x::resolution18, MCP342x::gain8);
// Configuration/status read back from the ADC
MCP342x::Config status1;
MCP342x::Config status2;
//some code here
// Configure the device with the desired settings. If there are
// multiple devices you must do this for each one.
adc_ch1.configure(config1);
adc_ch2.configure(config2);
// some code here
void setup(void)
{some code here}
void loop(void)
{
long value1 = 0;
long value2 = 0;
uint8_t err1;
uint8_t err2;
if (startConversion) {
MCP342x::generalCallConversion();
startConversion = false;
}
err1 = adc_ch1.read(value1, status1);
err2 = adc_ch2.read(value2, status2);
if (!err1 && !err2 && status1.isReady() && status2.isReady()) {
Serial.print("Value: ");
Serial.print(value1);
Serial.print(" ");
Serial.println(value2);
startConversion = true;
}
delay(5000);
}
Выходные показания примерно на два порядка меньше, чем они должны быть.