#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
// подключение библиотек для работы с DS18B20
#include <OneWire.h>
#include <DallasTemperature.h>
//#define OLED_RESET 7
Adafruit_SSD1306 display(128,64,&Wire,4);
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
#define TEMP1 2 // вывод, к которому подключён DS18B20
#define TEMP2 3 // вывод, к которому подключён DS18B20
#define TEMPERATURE_PRECISION 12 // точность измерений (9 ... 12)
OneWire oneWire1(TEMP1);
OneWire oneWire2(TEMP2);
DallasTemperature sensor1(&oneWire1);
DallasTemperature sensor2(&oneWire2);
DeviceAddress Thermometer1;
DeviceAddress Thermometer2;
float temp1 = 0.0; // текущее значение температуры
float temp2 = 0.0; // текущее значение температуры
float temp3 = 0.0;
float temp4 = 0.0;
float temp5 = 0.0;
//float min_temp = 100.0; // минимальное значение температуры
//float max_temp = 0.0; // максимальное значение температуры
void setup() {
Serial.begin(9600);
Serial.println("POKAZANIYA");
display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // инициализация дисплея по интерфейсу I2C, адрес 0x3C (для OLED 128x32)
display.clearDisplay(); // очистка дисплея
display.setTextColor(WHITE); // установка цвета текста
display.setTextSize(1,1); // установка размера шрифта
display.setCursor(25, 0); // установка курсора в позицию X = 0; Y = 0
display.println("POKAZANIYA");
display.display();
sensor1.begin(); // инициализация DS18B20
sensor1.getAddress(Thermometer1, 0); // адрес DS18B20 (поиск по индексу)
sensor1.setResolution(Thermometer1, TEMPERATURE_PRECISION);// установка точности измерения 9...12 разрядов
sensor2.begin(); // инициализация DS18B20
sensor2.getAddress(Thermometer2, 0); // адрес DS18B20 (поиск по индексу)
sensor2.setResolution(Thermometer2, TEMPERATURE_PRECISION);
}
void loop() {
sensor1.requestTemperatures(); // считывание значение температуры
sensor2.requestTemperatures(); // считывание значение температуры
temp1 = sensor1.getTempC(Thermometer1); // температура в градусах Цельсия
temp2 = sensor2.getTempC(Thermometer2);
// if (temp > max_temp) max_temp = temp; // обновление минимального значения температуры
// if (temp < min_temp) min_temp = temp; // обновление максимального значения температуры
display.setCursor(0, 7); // установка курсора в позицию X = 0; Y = 0
display.print(F("DATCHIK 1:"));
display.print(String(temp1)); // выводим значение температуры на экран
display.print((char)247); // и рисуем
display.println("C"); // знак цельсия
display.setCursor(0, 18); // установка курсора в позицию X = 0; Y = 0
display.print(F("DATCHIK 2:"));
display.print(String(temp2)); // выводим значение температуры на экран
display.print((char)247); // и рисуем
display.println("C"); // знак цельсия
display.setCursor(0, 27); // установка курсора в позицию X = 0; Y = 0
display.print(F("DATCHIK 3:"));
display.print(String(temp3)); // выводим значение температуры на экран
display.print((char)247); // и рисуем
display.println("C"); // знак цельсия
display.setCursor(0, 36); // установка курсора в позицию X = 0; Y = 0
display.print("DATCHIK 4:");
display.print(String(temp4)); // выводим значение температуры на экран
display.print((char)247); // и рисуем
display.println("C"); // знак цельсия
display.setCursor(0, 45); // установка курсора в позицию X = 0; Y = 0
display.print("DATCHIK 5:");
display.print(String(temp5)); // выводим значение температуры на экран
display.print((char)247); // и рисуем
display.println("C"); // знак цельсия
//display.println("Max " + String (max_temp)); // выводим на OLED максимальную температуру
//display.print("Min " + String (min_temp)); // и минимальную температуру*/
display.display(); // всё это отображаем на экране
delay(3000);
}Loading
ds18b20
ds18b20
Loading
ds18b20
ds18b20