// MACRO-START * MACRO-START * MACRO-START * MACRO-START * MACRO-START * MACRO-START *
#define dbg(myFixedText, variableName) \
Serial.print( F(#myFixedText " " #variableName"=") ); \
Serial.println(variableName);
#define dbgi(myFixedText, variableName,timeInterval) \
{ \
static unsigned long intervalStartTime; \
if ( millis() - intervalStartTime >= timeInterval ){ \
intervalStartTime = millis(); \
Serial.print( F(#myFixedText " " #variableName"=") ); \
Serial.println(variableName); \
} \
}
#define dbgc(myFixedText, variableName) \
{ \
static long lastState; \
if ( lastState != variableName ){ \
Serial.print( F(#myFixedText " " #variableName" changed from ") ); \
Serial.print(lastState); \
Serial.print( F(" to ") ); \
Serial.println(variableName); \
lastState = variableName; \
} \
}
#define dbgcf(myFixedText, variableName) \
{ \
static float lastState; \
if ( lastState != variableName ){ \
Serial.print( F(#myFixedText " " #variableName" changed from ") ); \
Serial.print(lastState); \
Serial.print( F(" to ") ); \
Serial.println(variableName); \
lastState = variableName; \
} \
}
// MACRO-END * MACRO-END * MACRO-END * MACRO-END * MACRO-END * MACRO-END * MACRO-END *
#include <LiquidCrystal_I2C.h>
#include <Wire.h>
LiquidCrystal_I2C lcd (0x27, 16, 2);
bool chosen = false; //choosed
bool chosen2 = false; //choosed2
int Key_Back = 10; //Back Button
int Key_ok = 11; //Enter Button
int Key_Down = 12; // Down Button
int Key_Up = 13; //Up Button
unsigned int menu = 1;
unsigned int subMenu = 1;
unsigned int subMenu2 = 1;
const byte pressed = LOW;
const byte Unpressed = HIGH;
long debounceTime = 200;
//////////////////////////////////////////////////////////////////////////////////////////////////
void setup() {
Serial.begin(115200);
Serial.println("Setup-Start");
lcd.init();
lcd.backlight();
pinMode (Key_Back, INPUT_PULLUP);
pinMode (Key_ok, INPUT_PULLUP);
pinMode (Key_Down, INPUT_PULLUP);
pinMode (Key_Up, INPUT_PULLUP);
menu = 1;
subMenu = 1;
subMenu2 = 1;
updateMenu();
}
////////////////////////////////////////////////////////////////////////////////////////
void loop() {
dbgc("01:",chosen);
dbgc("02:",menu);
dbgc("03:",subMenu);
if (!chosen) { //vybrane
if (digitalRead(Key_Down) == pressed) {//if (!digitalRead(Key_Down)) {
Serial.println("! chosen key_Down");
menu++;
if (menu == 3) {
menu = 1;
}
updateMenu();
delay(debounceTime);
while (digitalRead(Key_Down) == pressed);
}
if (!digitalRead(Key_Up)) {
Serial.println("! chosen key_Up");
menu--;
if (menu == 0) {
menu = 2;
}
updateMenu();
delay(debounceTime);
while (!digitalRead(Key_Up));
}
}
else {
if (!digitalRead(Key_Down)) {
Serial.println("CHOSEN key_Down");
subMenu++;
if (subMenu == 4) {
subMenu = 1;
}
updateSubMenu();
delay(debounceTime);
while (!digitalRead(Key_Down));
}
if (!digitalRead(Key_Up)) {
Serial.println("CHOSEN key_Up");
subMenu--;
if (subMenu == 0){
subMenu = 2;
}
updateSubMenu();
delay(debounceTime);
while (!digitalRead(Key_Up));
}
}
if (!digitalRead(Key_ok)) {
Serial.println("Key_ok");
if (!chosen) {
subMenu = 1;
chosen = true;
updateSubMenu();
}
else {
if (subMenu == 1){
chooseSpool();
}
if (subMenu == 2) {
chooseFile();
}
delay(debounceTime);
while (!digitalRead(Key_ok));
}
}
if (!digitalRead(Key_Back)) {
Serial.println("Key_ok");
if (chosen) {
chosen = false;
updateMenu();
}
else {
delay(debounceTime);
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");
}Enter
Down
Back
UP