#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
Повідомлень: 433

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);
}

Неактивний

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

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

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