#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2); // Устанавливаем дисплей
int BTN = 2; //кнопка на 2 цифровой пин
int progmod = 0; // переменная записи включения/переключения программы по умолчанию - 0
int a = 0; //переменная хран 0
boolean lb = LOW;//ХРАНИМ ПРЕД ЗНАЧ КНОПКИ
boolean cb = LOW;//ХРАНИМ ТЕК ЗНАЧ КНОПКИ
int PWR = 12;// КНОПКА ПИТАНИЯ
int STG = 4;
int pwrmod = 0;// переменная отв за вкл ус-ва и за откл,вход в настройки
int pwrlast = LOW;
int pwrcurrent = LOW;
int SLAST = LOW;
int SCURRENT = LOW;
int abc = 0;
using custom = int[4];
custom cust;
int MAS = 0;
boolean debounce(boolean last){
boolean current = digitalRead(BTN);
if (last != current){
delay(5);
current = digitalRead(BTN);
return current;
}
}
boolean debounce2(boolean pwr_z){
boolean on = digitalRead(PWR);
if (on != pwr_z){
delay(5);
on = digitalRead(PWR);
return on;
}
}
boolean debounce3(boolean SLS){
boolean SCURRENT = digitalRead(STG);
if (SCURRENT!= SLS){
delay(5);
SCURRENT = digitalRead(STG);
return SCURRENT;
}
}
void setup()
{
pinMode(BTN,INPUT);//подключаем кнопку через СТЯГИВАЮЩИЙ резистор
pinMode(PWR,INPUT);//Кнопка питания через стяг резистор.
pinMode(STG,INPUT);
}
void loop(){
pwrcurrent = debounce2(pwrlast);
if(pwrcurrent == HIGH & pwrlast == LOW ){
lcd.init();
lcd.backlight();// Включаем подсветку дисплея
lcd.setCursor(a,a);
pwrmod+=1;
lcd.print("LOAD V 1.0.1");
delay(1000);
cleaner();
if(pwrmod == 3){
pwrmod = 0;
cleaner();
}
}
if(pwrmod == 2){
lcd.setCursor(0,0);
lcd.print("CUSTOM PROG");
lcd.setCursor(12,0);
lcd.print(MAS);
lcd.setCursor(0,1);
lcd.print("SPINRATE:");
lcd.setCursor(10,1);
lcd.print(cust[MAS]);
}
cb = debounce(lb);
if(pwrmod == 2 & cb == HIGH & lb == LOW){
cust[MAS]++;
lcd.setCursor(10,1);
}
SCURRENT = debounce3(SLAST);
if(pwrmod == 2 & SCURRENT == HIGH & SLAST == LOW){
MAS++;
if(MAS >= 4){
MAS = 0;
}
}
cb = debounce(lb);
if(cb == HIGH & lb == LOW & progmod<4 & pwrmod>0 & pwrmod != 2){
cleaner();
lcd.setCursor(a,a);
lcd.print("PROG");
progmod += 1;
lcd.setCursor(5,a);
lcd.print(progmod);
delay(500);
if(progmod >=4){
progmod = 0;
}
}
lb = cb;
pwrlast = pwrcurrent;
SLAST = SCURRENT;
}
void cleaner(){
lcd.clear();
return;
}