#1 2023-02-15 13:59:49

Sino
Учасник
Зареєстрований: 2022-11-23
Повідомлень: 2

Термометр на 2 датчика ds18b20 дисплей 0,96" SSD1306

Доброго всем времени. Есть скетч, который выводит на экранчик температуру в реальном времени. Нужна помощь в редактировании, что бы температура выводилась с 2х датчиков, подключённых на разные пины. Второй датчик на 11 пине.

Библиотека дисплея

#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 10 // номер пина к которому подключен DS18B20
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
#include <OLED_I2C.h>
OLED  myOLED(8, 9, 8); // 8pin - SDA , 9pin - SCL
extern uint8_t MegaNumbers[]; // Подключение больших шрифтов
void setup()
{
  sensors.begin(); 
  myOLED.begin();
}
void loop()
{
sensors.requestTemperatures();
myOLED.clrScr(); // очищаем экран
myOLED.setFont(MegaNumbers);
myOLED.print(String(sensors.getTempCByIndex(0) , 1), CENTER, 9);   // Отображение температуры
myOLED.update();
delay(100);
}

Неактивний

#2 2023-02-15 14:24:07

Honey
Учасник
З Київ
Зареєстрований: 2020-09-26
Повідомлень: 452

Re: Термометр на 2 датчика ds18b20 дисплей 0,96" SSD1306

Датчики можна почепити на одну шину, тоді: sensors.getTempCByIndex(0); sensors.getTempCByIndex(1);
А якщо потрібно дві окремі шини, тоді так:

#define ONE_WIRE_BUS1 10
#define ONE_WIRE_BUS2 11
OneWire oneWire1(ONE_WIRE_BUS1);
OneWire oneWire2(ONE_WIRE_BUS2);
DallasTemperature sensors1(&oneWire1);
DallasTemperature sensors2(&oneWire2);
...
sensors1.begin();
sensors2.begin();
...
sensors1.getTempCByIndex(0);
sensors2.getTempCByIndex(0);

Неактивний

#3 2023-02-15 15:47:24

Sino
Учасник
Зареєстрований: 2022-11-23
Повідомлень: 2

Re: Термометр на 2 датчика ds18b20 дисплей 0,96" SSD1306

Спасибо. Получилось, туплю на очевидные вещи. roll

de2ea83d46691e33da649be1cb18e68d.png

#include <OneWire.h>
#include <DallasTemperature.h>
//#define ONE_WIRE_BUS 10 // номер пина к которому подключен DS18B20
#define ONE_WIRE_BUS1 10
#define ONE_WIRE_BUS2 11
OneWire oneWire1(ONE_WIRE_BUS1);
OneWire oneWire2(ONE_WIRE_BUS2);
DallasTemperature sensors1(&oneWire1);
DallasTemperature sensors2(&oneWire2);
//OneWire oneWire(ONE_WIRE_BUS);
//DallasTemperature sensors(&oneWire);
#include <OLED_I2C.h>
OLED  myOLED(8, 9, 8); // 8pin - SDA , 9pin - SCL
extern uint8_t BigNumbers[];
//extern uint8_t MegaNumbers[]; // Подключение больших шрифтов
void setup()
{
  sensors1.begin();
  sensors2.begin();
   // sensors.begin(); 
  myOLED.begin();
}
void loop()
{
sensors1.requestTemperatures();

sensors2.requestTemperatures();
myOLED.clrScr(); // очищаем экран
myOLED.setFont(BigNumbers);
myOLED.print(String(sensors1.getTempCByIndex(0) , 1), LEFT, 22);   // Отображение температуры
myOLED.print(String(sensors2.getTempCByIndex(0) , 1), RIGHT, 22);   // Отображение температуры
myOLED.update();
delay(100);
}

Неактивний

#4 2025-11-25 20:45:07

Denis-d20
Гість

Re: Термометр на 2 датчика ds18b20 дисплей 0,96" SSD1306

Доброго часу суток . Халепка наступна: працювала в мене в машині схемка... міряла температуру зовнішню і антифризу + показувала рівень газу в балоні. Еолись перепаював датчики рівня самостійно . Вирішив не паритись переробити під стандартний заволський датчик проблем ніяких з тим не виникло... Проблемка виникла в тому , шо, просто помінявши значення від ацп не зміг звязатись зі старою платою (Arduino nano) купив нову ... ацп працює все гаразд а от дачиків температури ну ніяк не хоче бачити... Чи там їх якось прписати чи ініціалізувати потрібно я не памятаю . Нагадайте або поправте будь ласка

#5 2025-11-25 21:15:45

Denis-d20
Гість

Re: Термометр на 2 датчика ds18b20 дисплей 0,96" SSD1306

Denis-d20 пише:

Доброго часу суток . Халепка наступна: працювала в мене в машині схемка... міряла температуру зовнішню і антифризу + показувала рівень газу в балоні. Еолись перепаював датчики рівня самостійно . Вирішив не паритись переробити під стандартний заволський датчик проблем ніяких з тим не виникло... Проблемка виникла в тому , шо, просто помінявши значення від ацп не зміг звязатись зі старою платою (Arduino nano) купив нову ... ацп працює все гаразд а от дачиків температури ну ніяк не хоче бачити... Чи там їх якось прписати чи ініціалізувати потрібно я не памятаю . Нагадайте або поправте будь ласка

#6 2025-11-25 22:00:47

jokeer
Гість

Re: Термометр на 2 датчика ds18b20 дисплей 0,96" SSD1306

Ви жжотє.
У вас була якась схема з датчиками. Ви там щось перепаяли і тепер вона працює не так як хочеться.
Навіть не знаю, чим можна допомогти ..
Скоріш за все якісь не такі датчики, але це не точно.

#7 2025-11-25 23:20:35

jokeer
Гість

Re: Термометр на 2 датчика ds18b20 дисплей 0,96" SSD1306

Скоріше за все датчики - китайські клони, і вони дійсно можуть працювати трохи не так справжні.

#8 2025-11-26 09:31:44

Honey
Учасник
З Київ
Зареєстрований: 2020-09-26
Повідомлень: 452

Re: Термометр на 2 датчика ds18b20 дисплей 0,96" SSD1306

Датчики ніяк ініціалізувати не потрібно. А ви все точно скопіювали зі старої: і схему, і прошивку, і EEPROM? (раптом ідентифікатори датчиків в EEPROM зберігались)

Неактивний

Швидке повідомлення

Введіть повідомлення і натисніть Надіслати

Підвал форуму