То есть функция tempa() не возвращает данные при вызове, как это у функций обычно делается, а записывает их в глобальную переменную?
создаешь несколько экземпляров классов, по количеству датчиков. Вместо Код (C++): OneWire ds(10); пишешь Код (C++): OneWire ds1(10); // 10 - номер пина OneWire ds2(11); OneWire ds3(9); Соответственно, все дальнейшие куски кода создаешь в нескольких экземплярах. P.S. Да, это маразм
Просто там где будет стоять термостат я зимой появится не смогу и датчики поменять а дедушка с бабушкой смогут
А прям нету поного кода а то я пока неочень сильно разбераюсь поменять код добавить могу но с нуля пока немогу
Код (C++): OneWire ds[3] = { // Создаем шины OneWire(9), OneWire(10), OneWire(11), }; DallasTemperature sensors[3] = { // Инициализируем градусники DallasTemperature(&ds[0]), DallasTemperature(&ds[1]), DallasTemperature(&ds[2]), }; Код (C++): int avr = 0; for (byte i = 0; i < 3 ; i++) { sensors[i].requestTemperatures(); avr += sensors[i].getTempCByIndex(0); // Суммируем показания всех градусников } avr = avr/3; // Средняя температура по больнице
Ты начни, как-нибудь. Пусть с одним датчиком, но что бы уже работало. И скинь сюда рабочий скетч. А то как-то вилами на воде.
вот типо этого но чтобы адреса не прописывать и на разные пины Код (C++): #include <OneWire.h> #include <DallasTemperature.h> #include <LiquidCrystal.h> OneWire oneWire(15); // вход датчиков 18b20 DallasTemperature ds(&oneWire); LiquidCrystal lcd(8, 9, 4, 5, 6, 7); DeviceAddress sensor1 = {0x28, 0xA8, 0x3E, 0xF9, 0x05, 0x0, 0x0, 0x12}; DeviceAddress sensor2 = {0x28, 0xE6, 0xBD, 0x3B, 0x05, 0x0, 0x0, 0xCF}; void setup() { // Serial.begin(9600); ds.begin(); lcd.begin(16, 2); lcd.clear(); } void loop() { ds.requestTemperatures(); // считываем температуру с датчиков lcd.setCursor(0, 0); lcd.print("Sensor 1: "); lcd.print(ds.getTempC(sensor1)); // отправляем температуру lcd.print("C"); lcd.setCursor(0, 1); lcd.print("Sensor 2: "); lcd.print(ds.getTempC(sensor2)); lcd.print("C"); }