//#include "Arduino.h"
//#include "GyverMAX6675.h"
#include "EncButton.h"
#include "GyverTimer.h"
#include "LiquidCrystal.h"
// LCD pin
#define RS 12
#define EN 11
#define D4 6
#define D5 5
#define D6 4
#define D7 3
// Пины модуля MAX6675K
//#define CLK_PIN 9 // Пин SCK
//#define DATA_PIN 7 // Пин SO
//#define CS_PIN 8 // Пин CS
#define PWM_fun 10
byte array[] = { 0, 0 };
bool lcdupdate = 0;
bool change = 0;
bool enchold = 0;
bool start = 0;
//int tsave = 0;
// указываем пины в порядке SCK SO CS
//GyverMAX6675<CLK_PIN, DATA_PIN, CS_PIN> sens;
LiquidCrystal lcd(RS, EN, D4, D5, D6, D7);
EncButton eb(A0, A1, A2);
GTimer myTimer0(MS); // создать миллисекундный таймер
GTimer myTimer1(MS); // создать миллисекундный таймер
GTimer myTimer2(MS); // создать миллисекундный таймер
void LCD();
void action();
//void tempRead();
void setup() {
lcd.begin(16, 2);
eb.setHoldTimeout(2000); // задержка на кнопке энкодера для удержания
myTimer0.setInterval(500); // настроить интервал 0
// myTimer1.setInterval(500); // настроить интервал 1
// myTimer2.setInterval(500); // настроить интервал 2
// показаны значения по умолчанию
/* eb.setBtnLevel(LOW);
eb.setClickTimeout(500);
eb.setDebTimeout(50);
eb.setHoldTimeout(500);
eb.setStepTimeout(200);
eb.setEncReverse(0);
eb.setEncType(EB_STEP4_LOW);
eb.setFastTimeout(30);*/
//строка первая она же 0
//[H>255 Fun>255 ]
// 0123456789012345
lcd.setCursor(0, 0); //col , row
lcd.print("H"); //0 отступаем место для стрелки 1
lcd.setCursor(6, 0);
lcd.print("Fun"); //678 место для стрелки 9
lcd.setCursor(2, 0); //wr
lcd.print(array[0]); //234 [255] 5 пробел
lcd.setCursor(9, 0);
lcd.print("=");
lcd.setCursor(1, 0);
lcd.print("=");
//строка 2 она же 1
//[Temp=1000 C OFF]
// 0123456789012345
lcd.setCursor(0, 1);
lcd.print("Temp="); //01234
lcd.setCursor(10, 1);
lcd.print("C"); //10
lcd.setCursor(10, 0); //wr
lcd.print(array[1]); //10 11 12
// lcd.setCursor(13, 1);
//lcd.print("Temp=");
lcd.setCursor(13, 1);
lcd.print("OFF");
lcd.setCursor(12, 1);
lcd.print("=");
}
void loop() {
eb.tick();
action();
if (lcdupdate) LCD();
if (myTimer0.isReady()) { // таймер
//tempRead();
}
}
void action() {
if (change and !enchold) {
if (eb.left()) {
array[0] = +51;
lcdupdate = 1;
}
if (eb.right()) {
array[0] = -51;
lcdupdate = 1;
}
}
if (!change and !enchold) {
if (eb.left()) {
array[1] = +51;
lcdupdate = 1;
}
if (eb.right()) {
array[1] = -51;
lcdupdate = 1;
}
}
if (eb.click()) {
change = !change;
enchold = 0;
lcdupdate = 1;
}
if (eb.hold()) {
enchold = 1;
lcdupdate = 1;
}
}
void LCD() {
lcd.setCursor(10, 0); //wr
lcd.print(" "); //10 11 12
lcd.setCursor(10, 0); //wr
lcd.print(array[1]); //10 11 12
lcd.setCursor(2, 0); //wr
lcd.print(" "); //234 [255] 5 пробел
lcd.setCursor(2, 0); //wr
lcd.print(array[0]); //234 [255] 5 пробел
lcdupdate = 0;
}
/*void tempRead() {
int tsave = sens.getTempInt();
lcd.setCursor(5, 1); //delete
lcd.print(" "); //5678 space 9
lcd.setCursor(5, 1); //write
lcd.print(tsave); //5678 space 9
}*/
//if (sens.readTemp()) { // Читаем температуру
// Serial.print("Temp: "); // Если чтение прошло успешно - выводим в Serial
//Serial.print(sens.getTemp()); // Забираем температуру через getTemp
//Serial.print(sens.getTempInt()); // или getTempInt - целые числа (без float)
// Serial.println(" *C");
// } else Serial.println("Error"); // ошибка чтения или подключения - выводим лог