// 3 úrovňové menu (stránka, podstránka, hodnoty)
#include <LiquidCrystal.h>
LiquidCrystal lcd(2, 3, 4, 5, 6, 7);
unsigned long buttontime = 0;
byte value = 0;
byte page = 0;
byte subpage = 0;
byte isinmenupage = 0;
byte value2 = 0;
bool state = 0;
byte alter = 0;
String item1 = "NULL";
String item2 = "NULL";
unsigned long present = 0;
unsigned long past = 0;
unsigned long past2 = 0;
byte amps = 10;
byte kw = 10;
byte poles = 4;
byte rpm = 2000;
byte nm = 10;
void setup() {
pinMode(8, INPUT_PULLUP); // up
pinMode(9, INPUT_PULLUP); // down
pinMode(10, INPUT_PULLUP); // enter
pinMode(11, INPUT_PULLUP); // back
lcd.begin(16, 2);
lcd.print("Liquid Crystal");
lcd.setCursor(0, 1);
lcd.print("Display Menu");
delay(2000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Powered by:");
lcd.setCursor(0, 1);
lcd.print("Arduino Nano");
delay(2000);
lcd.clear();
lcd.setCursor(0, 0);
}
void loop() {
present = millis();
buttontime = present - past2;
if(digitalRead(8) == LOW && value < 255) {
delay(500);
value = value - 1;
if(isinmenupage == 2) {
value2 = value2 + 1;
}
if(isinmenupage == 1) {
value2 = 0;
subpage = 0;
}
}
if(digitalRead(9) == LOW && value < 5) {
delay(500);
value = value + 1;
if(isinmenupage == 2) {
value2 = value2 - 1;
}
}
if(digitalRead(10) == LOW) {
delay(200);
past2 = present;
isinmenupage = isinmenupage + 1;
}
if(digitalRead(11) == LOW) {
delay(200);
isinmenupage = isinmenupage - 1;
}
if(value >= 5 && value < 200) {
value = 0;
}
if(value >= 255 && value >= 5) {
value = 4;
}
if(isinmenupage == 0) {
page = value;
}
if(isinmenupage == 1) {
subpage = value;
}
if(isinmenupage >= 3) {
isinmenupage = 2;
}
if(page == 0) {
item1 = "Motor configs:";
if(buttontime < 700) {
switch(subpage) {
case 0:
item2 = "Max Speed: RPM";
value2 = rpm;
break;
case 1:
item2 = "Max Torque: NM";
value2 = nm;
break;
case 2:
item2 = "Max Power: kW";
value2 = kw;
break;
case 3:
item2 = "Pole count:";
value2 = poles;
break;
case 4:
item2 = "Max Current: A";
value2 = amps;
break;
}
}
if(buttontime > 700) {
switch(subpage) {
case 0:
item2 = "Max Speed: RPM";
rpm = value2;
break;
case 1:
item2 = "Max Torque: NM";
nm = value2;
break;
case 2:
item2 = "Max Power: kW";
kw = value2;
break;
case 3:
item2 = "Pole count:";
poles = value2;
break;
case 4:
item2 = "Max Current: A";
amps = value2;
break;
}
}
}
if(isinmenupage == 2 && present - past >= 100) {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(item2);
lcd.setCursor(0, 1);
lcd.print(value2);
past = present;
}
if(present - past >= 100 && isinmenupage <= 1) {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(item1);
lcd.setCursor(0, 1);
lcd.print(item2);
past = present;
}
}
Enter
Down
Up
Back