#include <TinyWireM.h>
#include <Tiny4kOLED.h>
uint8_t width = 128;
uint8_t height = 64;
char *myStrings[] = {
"1_This","2_This","3_This","4_This",
"5_This","6_This","7_This","8_This",
"9_This","10_This","11_This","12_This",
"13_This","14_This","15_This","16_This",
"17_This","18_This","19_This","20_This",
"21_This","22_This","23_This","24_This"};
const int buttonL = 5; // вывод для кнопки
const int buttonR = 3; // вывод для кнопки
const int buttonLR = 4; // вывод для кнопки
const int pas_1 = 2; // 1 цифра пароля (от 0 до 9)
const int pas_2 = 2; // 2 цифра пароля (от 0 до 9)
const int pas_3 = 8; // 3 цифра пароля (от 0 до 9)
const int pas_4 = 8; // 4 цифра пароля (от 0 до 9)
int buttonStateL = 0; // статус кнопки - нажата или отпущена
int buttonStateR = 0;
int buttonStateLR = 0;
int i=23;
int pas_ST_1 = 0, pas_ST_2 = 0, pas_ST_3 = 0, pas_ST_4 = 0,
flag_menu = 60, flag_RES_DISP = 0, msecs = 100;
int account_number = 0, flag_RES_ACC = 0, timer = 0;
int address_FLAG = 1, flag_EEPROM = 125, seconds = 0;
int seconds1 = 10, seconds2 = 20;
void pass_menu(){ //функция для меню ввода пароля, вывод на дисплей
oled.clear();
oled.setFont(FONT6X8P);
oled.setCursor(0,8);
oled.print(F("Pass:"));
oled.setCursor(60,8);
oled.print(pas_ST_1, DEC);
oled.setCursor(73,8);
oled.print(pas_ST_2, DEC);
oled.setCursor(86,8);
oled.print(pas_ST_3, DEC);
oled.setCursor(99,8);
oled.print(pas_ST_4, DEC);
oled.setCursor(flag_menu,26);
oled.print(F("^"));
}
void scan_buttons(){ //функция сканирование кнопок
buttonStateLR = digitalRead(buttonLR);
buttonStateR = digitalRead(buttonR);
buttonStateL = digitalRead(buttonL);
}
//============================================================================================
void setup() {
oled.begin(width, height, sizeof(tiny4koled_init_128x64br), tiny4koled_init_128x64br);
oled.clear();
oled.on();
oled.setFont(FONT6X8P);
oled.setCursor(5, 3);
oled.print("LEDGER");
delay(2000);
oled.clear();
oled.setFont(FONT6X8P);
pinMode(buttonL, INPUT); // режим вывода
pinMode(buttonR, INPUT);
pinMode(buttonLR, INPUT);
pass_menu ();
}
void loop() {
scan_buttons(); //сканирование кнопок
//обновление дисплея при изменении значения пароля
if(flag_RES_DISP == 1){ pass_menu(); flag_RES_DISP = 0;}
if(buttonStateLR == HIGH && (flag_menu >= 59 && flag_menu < 100)){ //переход к следующему числу пароля
flag_menu+=13; if(flag_menu < 100){ flag_RES_DISP = 1;} delay(msecs);}
if(flag_menu == 60){ //выбор 1 числа пароля
if(buttonStateR == HIGH){ pas_ST_1++; flag_RES_DISP = 1; delay(msecs);}
if(buttonStateL == HIGH){ pas_ST_1--; flag_RES_DISP = 1; delay(msecs);}
if(pas_ST_1 > 9){ pas_ST_1 = 0;} if(pas_ST_1 < 0){ pas_ST_1 = 9;}
}
if(flag_menu == 73){ //выбор 2 числа пароля
if(buttonStateR == HIGH){ pas_ST_2++; flag_RES_DISP = 1; delay(msecs);}
if(buttonStateL == HIGH){ pas_ST_2--; flag_RES_DISP = 1; delay(msecs);}
if(pas_ST_2 > 9){ pas_ST_2 = 0;} if(pas_ST_2 < 0){ pas_ST_2 = 9;}
}
if(flag_menu == 86){ //выбор 3 числа пароля
if(buttonStateR == HIGH){ pas_ST_3++; flag_RES_DISP = 1; delay(msecs);}
if(buttonStateL == HIGH){ pas_ST_3--; flag_RES_DISP = 1; delay(msecs);}
if(pas_ST_3 > 9){ pas_ST_3 = 0;} if(pas_ST_3 < 0){ pas_ST_3 = 9;}
}
if(flag_menu == 99){ //выбор 4 числа пароля
if(buttonStateR == HIGH){ pas_ST_4++; flag_RES_DISP = 1; delay(msecs);}
if(buttonStateL == HIGH){ pas_ST_4--; flag_RES_DISP = 1; delay(msecs);}
if(pas_ST_4 > 9){ pas_ST_4 = 0;} if(pas_ST_4 < 0){ pas_ST_4 = 9;}
}
if(flag_menu == 112 && buttonStateLR == HIGH){ //подтверждение пароля
if(pas_ST_1 == pas_1 && pas_ST_2 == pas_2 && pas_ST_3 == pas_3 && pas_ST_4 == pas_4){
flag_menu = 125; flag_RES_ACC = 1; delay(msecs); }
}
scan_buttons(); //сканирование кнопок
if(flag_menu == 125){
if (buttonStateL == HIGH)
{ oled.clear();
i--;
oled.setFont(FONT6X8P);
oled.setCursor(5, 3);
oled.print(myStrings[i]);
delay(100);
}
// если кнопка R нажата, то её состояние HIGH:
if (buttonStateR == HIGH)
{ oled.clear();
i++;
oled.setFont(FONT6X8P);
oled.setCursor(5, 3);
oled.print(myStrings[i]);
delay(100);
}
if (i>22) {i=-1;}
}
}