// підключаємо бібліотеки для роботи з рідкокристалічним дисплеєм та годинником
#include "LiquidCrystal_I2C.h"
#include "RTClib.h"
int time_year;
int time_month;
int time_day;
int time_hour;
int time_minute;
int time_second;
//зміні для роботи з кнопкою
int butt = 3;
int butt_flug;
int flug = 0; //флажок для нормального відпрацювання натиску кнопки
// значення з потенціометрів у вольтах
int val_pot1;
int val_pot2;
// ініціалізація годинника реального часу
RTC_DS1307 rtc;
// ініціалізація РК дисплея
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
Serial.begin(9600); // відкриваємо компорт на 9600 бод
// перевірка на працездатність годинника
if (! rtc.begin()) {
Serial.println("Помилка роботи годинника!");
Serial.flush();
abort();
}
pinMode(butt, INPUT_PULLUP);
// вмикаємо сам РК-дисплей та вмикаємо на ньому підсвітку
lcd.init();
lcd.backlight();
}
void loop() {
// встановлюємо реальний час (той що зараз)
DateTime now = rtc.now();
// присвоємо до змінних час (рік, місяць...)
time_year = now.year();
time_month = now.month();
time_day = now.day();
time_hour = now.hour();
time_minute = now.minute();
time_second = now.second();
// встановлюємо курсор на 4 піксель нульового рядка (нумерація почин. з 0)
lcd.setCursor(4, 0);
// виводимо дату у відповідному форматі на дисплей
lcd.print(time_day);
lcd.print(":");
lcd.print(time_month);
lcd.print(":");
lcd.print(time_year);
// встановлюємо курсор у вказані координати
lcd.setCursor(4, 1);
// виводимо час у відповідному форматі
lcd.print(time_hour);
lcd.print(":");
lcd.print(time_minute);
lcd.print(":");
lcd.print(time_second);
// зчитуємо сигнал з кнопки
butt_flug = !digitalRead(butt);
//зчитуємо сигнали з потенціометрів та перетворюємо їх значення в напругу
int pot1 = analogRead(A0);
int pot2 = analogRead(A1);
float val_pot1 = 5.0 / 1024.0 * pot1;
float val_pot2 = 5.0 / 1024.0 * pot2;
// задаємо умову. Коли кнопку натиснено, то вивести на дисплей показання з потенціометрів на 3 секунди
if (butt_flug == 1 && flug == 0) {
flug == 1;
lcd.clear(); // попередньо очищуємо дисплей від часу
lcd.setCursor(6, 0);
lcd.print(val_pot1);
lcd.setCursor(6, 1);
lcd.print(val_pot2);
delay(3000);
}
// вимкнення кнопки
if (butt_flug == 0 && flug == 1) {
flug == 0;
lcd.clear(); // очистити вміст диспелею від інформації з потенціометів, коли кнопка вже не натиснена
}
// виводимо на дисплей інформацію кожну секунду
delay(1000);
}