Итерация через 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...
@NRav, 👍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()
};
,
@chrisl
Смотрите также:
- Как масштабировать растровое изображение (массив uint8_t) в Arduino?
- Возможно ли иметь массив массивов int?
- Ошибка: invalid application of 'sizeof' to incomplete type 'int []' при попытке вычислить размер массива в библиотеке
- Инициализация массива структур
- Не нашел датчик отпечатков пальцев :( Arduino Mega 2560 Adafruit Fingerprint Sensor
- Невозможно создать массив типа const char*
- Почему Adafruit motor shield не крутит моторы?
- Работает ли конструкция int array[100] = {0} на Arduino?
Хорошо! Я пробовал это, и он компилируется... но как мне пройти через этот массив? Я попробовал
for(int i = 0; i<8; i++){thermocouples[i].setThermocoupleType(MAX31856_TCTYPE_T);}
, и он говорит, что этонедействительно
, @NRavневажно... разобрался с проблемой. Спасибо за руководство!, @NRav