Итерация через 8 датчиков термопары (MAX31856)

У меня 8xMAX31856, и я пытаюсь использовать библиотеку Adafruit. Вместо того, чтобы каждый раз записывать в код все 8 каналов термопары (и тратить память впустую), я хочу хранить объекты в массиве и периодически перебирать их.

Вот мой код:

Adafruit_MAX31856 TCouple1 = Adafruit_MAX31856(2,11,12,13);
Adafruit_MAX31856 TCouple2 = Adafruit_MAX31856(3,11,12,13);
Adafruit_MAX31856 TCouple3 = Adafruit_MAX31856(4,11,12,13);
Adafruit_MAX31856 TCouple4 = Adafruit_MAX31856(5,11,12,13);
Adafruit_MAX31856 TCouple5 = Adafruit_MAX31856(6,11,12,13);
Adafruit_MAX31856 TCouple6 = Adafruit_MAX31856(7,11,12,13);
Adafruit_MAX31856 TCouple7 = Adafruit_MAX31856(8,11,12,13);
Adafruit_MAX31856 TCouple8 = Adafruit_MAX31856(9,11,12,13);

char* thermocouples[] = {TCouple1, TCouple2, TCouple3, TCouple4, TCouple5, TCouple6, TCouple7, TCouple8};

однако при компиляции я столкнулся с этой ошибкой:

cannot convert 'Adafruit_MAX31856' to 'char*' in initialization

Почему я не могу хранить эти переменные в массиве и вызывать их позже? Есть ли другой способ сделать это? Они работают на логике SPI...

, 👍1


1 ответ


Лучший ответ:

1

Вы МОЖЕТЕ хранить их в массиве, но НЕ в массиве указателей на символы. Это просто неправильный тип. Попробуйте

Adafruit_MAX31856 thermocouples[] = {TCouple1, ...}

или даже отказаться от первых объявлений и использовать

Adafruit_MAX31856 thermocouples[] = {
    Adafruit_MAX31856(2,11,12,13),
    Adafruit_MAX31856(3,11,12,13),
    Adafruit_MAX31856(4,11,12,13),
    ...
};

У меня не установлена эта библиотека, но я попытался скомпилировать этот шаблон с библиотекой Bounce2, и он работает. Это выглядит так:

Bounce buttons[] = {
    Bounce(),
    Bounce(),
    Bounce()
};
,

Хорошо! Я пробовал это, и он компилируется... но как мне пройти через этот массив? Я попробовал for(int i = 0; i<8; i++){thermocouples[i].setThermocoupleType(MAX31856_TCTYPE_T);}, и он говорит, что это недействительно, @NRav

неважно... разобрался с проблемой. Спасибо за руководство!, @NRav