#include <LiquidCrystal_I2C.h>
#include "Button.h"
#include "SimpleLCDScreen.h"
//LiquidCrystal_I2C lcd(0x27, 20, 4);
// Инициализация буферизованного LCD
SimpleLCDScreen lcd(0x27, 20, 4);
#define POTENCIOMETER A2
#define MAIN_SCREEN 1
#define SETTINGS_SCREEN 2
// Текущее состояние экрана
int currentScreen = MAIN_SCREEN;
void nextScreen() {
// Увеличиваем номер экрана и переходим к следующему
currentScreen++;
// Если мы превысили доступное число экранов
if (currentScreen > SETTINGS_SCREEN)
currentScreen = MAIN_SCREEN; // Возвращаемся к основному экрану
lcd.clear();
}
void previousScreen() {
// Уменьшаем номер экрана и переходим к предыдущему
currentScreen--;
// Если мы выходим за пределы диапазона
if (currentScreen < MAIN_SCREEN)
currentScreen = SETTINGS_SCREEN; // Переходим к последнему экрану
lcd.clear();
}
int settingsPos = 0;
Button backButton(2);
Button nextButton(3);
Button upButton(4);
Button downButton(5);
void setup() {
lcd.init();
pinMode(POTENCIOMETER, INPUT);
}
void loop() {
if (backButton.read()) {
previousScreen();
}
if (nextButton.read()) {
nextScreen();
}
int potenc = analogRead(POTENCIOMETER);
switch (currentScreen) {
case MAIN_SCREEN:
lcd.print(0, "Tem: " + (String)12 + "C" + " Auto");
lcd.print(1, "Hum: " + (String)100 + "%");
lcd.print(2, "Sun: " + (String)potenc + "%");
break;
case SETTINGS_SCREEN:
settings_screen_render();
break;
}
}
void settings_screen_render()
{
if (backButton.read()) {
previousScreen();
}
if (downButton.read()) {
if (settingsPos < 2) {
settingsPos++;
}
}
if (upButton.read()) {
if (settingsPos > 0) {
settingsPos--;
}
}
String arrow = "->";
String s[3] = {" ", " ", " "};
s[settingsPos] = arrow;
lcd.print(0, " Settings");
lcd.print(1, s[0] + " Tone enabled: " + String(true ? "ON" : "OFF"));
lcd.print(2, s[1] + " Automate: " + String(false ? "ON" : "OFF"));
lcd.print(3, s[2] + " Load screen: " + String(false ? "ON" : "OFF"));
}