#define CLK 5 // назначаем пины
#define DIO 6
#define BN1 2
#define BN2 3
#define BN3 4
#define BN4 7
#define OUTPUT_my 8
#include <EncButton.h> // подключаем библиотеки
#include <GyverTM1637.h>
GyverTM1637 disp(CLK, DIO); //создаем объекты
Button btn1(BN1);
Button btn2(BN2);
Button btn3(BN3);
Button btn4(BN4);
//описываем переменные
int disp_v=0; //здесь храним значение для вывода на дисплей
int f_state=0; //0-привествие(кнопки не работают) 1-рабочий режим(ввод запрещен) 2-ввод значений
void setup() {
pinMode(OUTPUT_my,OUTPUT);
digitalWrite(OUTPUT_my, 1);
disp.clear(); // очистка и активация дисплея
disp.brightness(3); // яркость, 0 - 7 (минимум - максимум)
hello_f();
disp.displayInt(0);
f_state=2;
}
void loop() {
btn1.tick();
btn2.tick();
btn3.tick();
btn4.tick();
if (btn1.click() && f_state==2 && disp_v<600) plus_f(); //+10 литров
if (btn3.click() && f_state==2 && disp_v>0) minus_f(); //-10 литров
if (btn4.press() && f_state==1 && disp_v>0) minus_f(); //счетчик
if (btn2.click()) {f_state=1; digitalWrite(OUTPUT_my, 0);} //пуск
if (btn2.hold() && f_state==1) {f_state=2; digitalWrite(OUTPUT_my, 1);} //пауза при hold
if (disp_v==0 && f_state==1) {f_state=2; digitalWrite(OUTPUT_my, 1);} //остановка при 0
}
void hello_f()
{
disp.displayInt(8);
delay(500);
disp.displayInt(88);
delay(500);
disp.displayInt(888);
delay(500);
disp.displayInt(8888);
delay(500);
}
void plus_f()
{
disp_v=disp_v+10; disp.displayInt(disp_v);
}
void minus_f()
{
disp_v=disp_v-10; disp.displayInt(disp_v);
}