День добрый. Строю баню и хочу сразу сделать ее немного умной. задачей стоит соединить несколько ардуино нано по шине 1 wire. где каждая будет отвечать за свое назначение.
1-я (slave)принимать значение со всех кнопок переключателей и тд, сохранять значения в массив к которому будет доступ у всех ардуино на шине
2-я (slave )принимать значение с датчиков температур ds18b20(порядка 20 шт) и сохранять в массив к которому будет доступ у всех ардуино на шине
3-я (master) считывать значения из массивов 1 и 2 ардуино и в зависимости от сценария управлять 16 канальным реле
Начал с той что считывает температуру. после как добавляю библиотеку
#include <Wire.h>
#include <iarduino_I2C_connect.h>
iarduino_I2C_connect I2C2;
возникает ошибка компиляции " exit status 1
Ошибка компиляции для платы Arduino Nano." не указывающей на строку. подозреваю
что как то не получается работать библиотекам вместе.
дайте пожалуйста подсказку как решить проблемму. Сильно не пинайте, может за глупый вопрос.
#include <Wire.h>
#include <iarduino_I2C_connect.h>
iarduino_I2C_connect I2C2;
#include <microDS18B20.h>
#define DS_PIN 2 // пин подключения датчиков температуры
float array_sensors[20]; // создаем массив с 20 ю ячейками. отсчет идет от 0.
// Уникальные адреса датчиков - считать можно в примере address_read
uint8_t s1_addr[] = {0x28, 0xFF, 0xE5, 0x46, 0x88, 0x16, 0x3, 0x4A}; // адрес 1 датчика
uint8_t s2_addr[] = {0x28, 0xFF, 0x36, 0x94, 0x65, 0x15, 0x2, 0x80};
uint8_t s3_addr[] = {0x28, 0xFF, 0x36, 0x94, 0x65, 0x15, 0x2, 0x80};
uint8_t s4_addr[] = {0x28, 0xFF, 0x36, 0x94, 0x65, 0x15, 0x2, 0x80};
uint8_t s5_addr[] = {0x28, 0xFF, 0x36, 0x94, 0x65, 0x15, 0x2, 0x80};
uint8_t s6_addr[] = {0x28, 0xFF, 0x36, 0x94, 0x65, 0x15, 0x2, 0x80};
uint8_t s7_addr[] = {0x28, 0xFF, 0x36, 0x94, 0x65, 0x15, 0x2, 0x80};
uint8_t s8_addr[] = {0x28, 0xFF, 0x36, 0x94, 0x65, 0x15, 0x2, 0x80};
uint8_t s9_addr[] = {0x28, 0xFF, 0x36, 0x94, 0x65, 0x15, 0x2, 0x80};
uint8_t s10_addr[] = {0x28, 0xFF, 0x36, 0x94, 0x65, 0x15, 0x2, 0x80};
uint8_t s11_addr[] = {0x28, 0xFF, 0x36, 0x94, 0x65, 0x15, 0x2, 0x80};
uint8_t s12_addr[] = {0x28, 0xFF, 0x36, 0x94, 0x65, 0x15, 0x2, 0x80};
uint8_t s13_addr[] = {0x28, 0xFF, 0x36, 0x94, 0x65, 0x15, 0x2, 0x80};
uint8_t s14_addr[] = {0x28, 0xFF, 0x36, 0x94, 0x65, 0x15, 0x2, 0x80};
uint8_t s15_addr[] = {0x28, 0xFF, 0x36, 0x94, 0x65, 0x15, 0x2, 0x80};
uint8_t s16_addr[] = {0x28, 0xFF, 0x36, 0x94, 0x65, 0x15, 0x2, 0x80};
uint8_t s17_addr[] = {0x28, 0xFF, 0x36, 0x94, 0x65, 0x15, 0x2, 0x80};
uint8_t s18_addr[] = {0x28, 0xFF, 0x36, 0x94, 0x65, 0x15, 0x2, 0x80};
uint8_t s19_addr[] = {0x28, 0xFF, 0x36, 0x94, 0x65, 0x15, 0x2, 0x80};
uint8_t s20_addr[] = {0x28, 0xFF, 0x36, 0x94, 0x65, 0x15, 0x2, 0x80};
MicroDS18B20<DS_PIN, s1_addr> sensor1; // Создаем термометр с адресацией
MicroDS18B20<DS_PIN, s2_addr> sensor2; // Создаем термометр с адресацией
MicroDS18B20<DS_PIN, s3_addr> sensor3;
MicroDS18B20<DS_PIN, s4_addr> sensor4;
MicroDS18B20<DS_PIN, s5_addr> sensor5;
MicroDS18B20<DS_PIN, s6_addr> sensor6;
MicroDS18B20<DS_PIN, s7_addr> sensor7;
MicroDS18B20<DS_PIN, s8_addr> sensor8;
MicroDS18B20<DS_PIN, s9_addr> sensor9;
MicroDS18B20<DS_PIN, s10_addr> sensor10;
MicroDS18B20<DS_PIN, s11_addr> sensor11;
MicroDS18B20<DS_PIN, s12_addr> sensor12;
MicroDS18B20<DS_PIN, s13_addr> sensor13;
MicroDS18B20<DS_PIN, s14_addr> sensor14;
MicroDS18B20<DS_PIN, s15_addr> sensor15;
MicroDS18B20<DS_PIN, s16_addr> sensor16;
MicroDS18B20<DS_PIN, s17_addr> sensor17;
MicroDS18B20<DS_PIN, s18_addr> sensor18;
MicroDS18B20<DS_PIN, s19_addr> sensor19;
MicroDS18B20<DS_PIN, s20_addr> sensor20;
void setup() {
Serial.begin(9600);
//Wire.setClock(400000); // устанавливаем скорость передачи данных по шине I2C = 400кБит/с
Wire.begin(0x03); // инициируем подключение к шине I2C в качестве ведомого (slave) устройства, с указанием своего адреса на шине.
I2C2.begin(array_sensors); // инициируем возможность чтения/записи данных по шине I2C, из/в указываемый массив
}
void loop() {
sensor1.requestTemp(); // Запрашиваем преобразование температуры для 1 го датчика
sensor2.requestTemp();
sensor3.requestTemp();
sensor4.requestTemp();
sensor5.requestTemp();
sensor6.requestTemp();
sensor7.requestTemp();
sensor8.requestTemp();
sensor9.requestTemp();
sensor10.requestTemp();
sensor11.requestTemp();
sensor12.requestTemp();
sensor13.requestTemp();
sensor14.requestTemp();
sensor15.requestTemp();
sensor16.requestTemp();
sensor17.requestTemp();
sensor18.requestTemp();
sensor19.requestTemp();
sensor20.requestTemp();
delay(1000); // ожидаем результат
array_sensors[0] = sensor1.getTemp(); // сохраняем значение температуры 1го датчика в первую ячейку массива
array_sensors[1] = sensor1.getTemp();
array_sensors[2] = sensor1.getTemp();
array_sensors[3] = sensor1.getTemp();
array_sensors[4] = sensor1.getTemp();
array_sensors[5] = sensor1.getTemp();
array_sensors[6] = sensor1.getTemp();
array_sensors[7] = sensor1.getTemp();
array_sensors[8] = sensor1.getTemp();
array_sensors[9] = sensor1.getTemp();
array_sensors[10] = sensor1.getTemp();
array_sensors[11] = sensor1.getTemp();
array_sensors[12] = sensor1.getTemp();
array_sensors[13] = sensor1.getTemp();
array_sensors[14] = sensor1.getTemp();
array_sensors[15] = sensor1.getTemp();
array_sensors[16] = sensor1.getTemp();
array_sensors[17] = sensor1.getTemp();
array_sensors[18] = sensor1.getTemp();
array_sensors[19] = sensor1.getTemp();
//Serial.println(array_sensors[1]); //вывод значения температуры из 1 ячейки массива
}