#include <Wire.h> // I2C
#include <OneWire.h>
#include <Adafruit_GFX.h> // Включить графическую библиотеку Adafruit
#include <Adafruit_SSD1306.h> // Включить драйвер OLED Adafruit SSD1306
//#include <microDS3231.h>
//#include <Time.h> // для работы с модулем часов реального времени
//#include <TimeLib.h> // для работы с модулем часов реального времени
#include <DallasTemperature.h>
MicroDS3231 rtc;
#define button1 7
#define button2 6
#define ONE_WIRE_BUS_1 10
#define ONE_WIRE_BUS_2 9
OneWire oneWire_in(ONE_WIRE_BUS_1);
OneWire oneWire_out(ONE_WIRE_BUS_2);
DallasTemperature sensors(&oneWire_in);
DallasTemperature sensors_out(&oneWire_out);
#define ssd1306_128_32
Adafruit_SSD1306 display(128, 32, &Wire, -1);//Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
void setup() {
Serial.begin(9600);
pinMode(button1, INPUT_PULLUP);
pinMode(button2, INPUT_PULLUP);
delay(1000);
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
// Очистить дисплей.
display.clearDisplay();
display.display();
display.cp437(true);
display.setTextColor(WHITE, BLACK);
}
char Time[] = " : ";
char Calendar[] = " / /20 ";
char temperature[] = " 00.00";
char temperature_msb;
byte i, second, minute, hour, day, date, month, year, temperature_lsb;
void TimeAdjust(){ //функция корректировки времени через кнопки
/*
int buttonH = digitalRead(kn_H);
int buttonM = digitalRead(kn_M);
//DateTime now;
now.second = ss;
now.minute = mm;
now.hour = hh;
now.date = dd ;
now.month =bb;
now.year = yy;
//RTC.read(Now);
// rtc.getHours()= now.Hour;
// int getMinutes=Now.getMinutes;
//int getSeconds =Now.getSeconds;
if (buttonH == LOW){
if (hh== 23){hh=0;}
else {hh=hh+1;};
}else {
if (mm== 59){mm=0;}
else {mm=mm +1;};
};
//rtc.setTime(now);
int buttonH = digitalRead(kn_H);
int buttonM = digitalRead(kn_M);
// delay(3000);
if(buttonH == LOW && buttonM == LOW)
{temp_s();} // вызов функции корректировки времени
else
{TimeAdjust();} // вызов функции корректировки времени
Serial.print("сек - ");
Serial.print(rtc.getSeconds());
*/
}
void temp() {
sensors.begin();
sensors.requestTemperatures();
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(0,0);
display.print("T room:");
display.setTextSize(3);
display.setTextColor(WHITE);
display.setCursor(19,10);
display.print(sensors.getTempCByIndex(0));
display.display();
// Serial.print("T room:");
// Serial.println(sensors.getTempCByIndex(0));
}
void temp_s(){
sensors_out.begin();
sensors_out.requestTemperatures();
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(0,0);
display.print("T street:");
display.setTextSize(3);
display.setTextColor(WHITE);
display.setCursor(19,10);
display.print(sensors_out.getTempCByIndex(0));
display.display();
// Serial.print("T street:");
// Serial.println(sensors_out.getTempCByIndex(0));
//delay(500);
}
void clock_time () {
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(0,7);
display.print("Time:");
display.setTextSize(2);
display.setCursor(31,0);
display.print(rtc.getTimeString());
display.setCursor(5,18);
display.print(rtc.getDateString());
display.display();
}
void loop() {
TimeAdjust(); // // вызов функции корректировки времени
// BrightnessCheck(); // вызов функции установки яркости
{clock_time();}; //вызов функции отображения времени
if (rtc.getSeconds() > 15 && rtc.getSeconds()<20 )
{temp_s();} ///вызов функции отображения температуры out
else if (rtc.getSeconds()> 40 && rtc.getSeconds()<48)
{temp ();} //вызов функции отображения температуры in
}