#include <LiquidCrystal_I2C.h>
#include <Wire.h>
LiquidCrystal_I2C lcd (0x27, 16, 2);
bool vybrane=false; //choosed
bool vybrane2=false; //choosed2
int Key_ok = 11; //Enter Button
int Key_Back = 10; //Back Button
int Key_Down = 12; // Down Button
int Key_Up = 13; //Up Button
unsigned int menu;
unsigned int subMenu;
unsigned int subMenu2;
//////////////////////////////////////////////////////////////////////////////////////////////////
void setup() {
lcd.init();
lcd.backlight();
pinMode (10, INPUT_PULLUP);
pinMode (11, INPUT_PULLUP);
pinMode (12, INPUT_PULLUP);
pinMode (13, INPUT_PULLUP);
menu = 1;
subMenu = 1;
subMenu2 = 1;
updateMenu();
}
////////////////////////////////////////////////////////////////////////////////////////
void loop() {
if (!vybrane) {
if (!digitalRead(Key_Down)) {
menu++;
if(menu==3)menu=1;
updateMenu();
delay(100);
while (!digitalRead(Key_Down));
}
if (!digitalRead(Key_Up)) {
menu--;
if(menu==0)menu=2;
updateMenu();
delay(100);
while (!digitalRead(Key_Up));
}
} else {
if (!digitalRead(Key_Down)) {
subMenu++;
if(subMenu==4)subMenu=1;
updateSubMenu();
delay(100);
while (!digitalRead(Key_Down));
}
if (!digitalRead(Key_Up)) {
subMenu--;
if(subMenu==0)subMenu=2;
updateSubMenu();
delay(100);
while (!digitalRead(Key_Up));
}
}
if (!digitalRead(Key_ok)) {
if (!vybrane) {
subMenu = 1;
vybrane = true;
updateSubMenu();
} else {
if (subMenu==1)chooseSpool();
if (subMenu==2)chooseFile();
delay(100);
while (!digitalRead(Key_ok));
}
}
if (!digitalRead(Key_Back)) {
if (vybrane) {
vybrane = false;
updateMenu();
} else {
delay(100);
updateMenu();
while (!digitalRead(Key_Back));
}
}
}
void updateMenu() {
switch (menu) {
case 1:
lcd.clear();
lcd.print(">Choose spool");
lcd.setCursor(0, 1);
lcd.print("Choose file");
break;
case 2 :
lcd.clear();
lcd.print("Choose spool");
lcd.setCursor(0, 1);
lcd.print(">Choose file");
break;
}
}
void updateSubMenu() {
switch (subMenu) {
case 1 :
lcd.clear();
lcd.print(">ABS");
lcd.setCursor(0, 1);
lcd.print("PLA");
break;
case 2 :
lcd.clear();
lcd.print("ABS");
lcd.setCursor(0, 1);
lcd.print(">PLA");
break;
case 3 :
lcd.clear();
lcd.print("PLA");
lcd.setCursor(0, 1);
lcd.print(">PETG");
break;
}
}
void chooseSpool () {
switch (subMenu) {
case 1 :
lcd.clear();
lcd.print(">ABS");
lcd.setCursor(0, 1);
lcd.print("PLA");
break;
case 2 :
lcd.clear();
lcd.print("ABS");
lcd.setCursor(0, 1);
lcd.print(">PLA");
break;
case 3 :
lcd.clear();
lcd.print("PLA");
lcd.setCursor(0, 1);
lcd.print(">PETG");
break;
}
}
void chooseFile() {
lcd.clear();
lcd.print(">From SD");
}