//LCD Library
#include <LiquidCrystal.h>
//Stepper Motor Library
//#include <AccelStepper.h>
//LCD Pins
const int rs = 25, en = 5, d4 = 6, d5 = 26, d6 = 7, d7 = 27;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
//Custom Characters for LCD
byte Heart[] = {
B00000,
B01010,
B11111,
B11111,
B01110,
B00100,
B00000,
B00000
};
byte amongi[] = {
B00110,
B01111,
B11000,
B11111,
B11111,
B11111,
B10001,
B10001
};
//PUSHBUTTONS
//Button 1
const int verticalScroll = 28;
int verticalScrollState = HIGH;
//Button 2
const int enter = 30;
int enterState = HIGH;
//Button 3
const int horizontalScroll = 31;
int horizontalScrollState = HIGH;
//Cursor Positions
int cursorPosition = -1;
int profile = 1;
//Menu Names
const char menu1[] = "Menu 1:";
const char menu2[] = "Menu 2:";
void setup() {
Serial.begin(9600);
//LCD Setup
lcd.begin(16, 2);
lcd.print("Welcome: Press");
lcd.setCursor(0, 1);
lcd.print("down to start");
//Custom Character
lcd.createChar(0, Heart);
lcd.createChar(1, amongi);
//Button
pinMode(verticalScroll, INPUT_PULLUP);
pinMode(enter, INPUT_PULLUP);
pinMode(horizontalScroll, INPUT_PULLUP);
//Homing Switches
//Pneumatics Position Check Switch
//Stepper Motor Homing
}
void loop() {
verticalScrollState = digitalRead(verticalScroll);
if (verticalScrollState == LOW) {
cursorPosition = (cursorPosition + 1) % 3;
switch (cursorPosition) {
case 0:
delay(100);
homeMenu();
break;
case 1:
delay(100);
menu(menu1);
break;
case 2:
delay(100);
menu(menu2);
break;
}
} else {
Serial.println("No Update");
}
}
void homeMenu() {
lcd.setCursor(0, 0);
lcd.print("Home Menu ");
lcd.setCursor(0, 1);
lcd.print(">Home all Axes ");
delay(100);
verticalScrollState = digitalRead(verticalScroll);
while (verticalScrollState == HIGH) {
enterState = digitalRead(enter);
if (enterState == LOW) {
//Homing Axes
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Homing...");
delay(5000);
homeMenu();
}
verticalScrollState = digitalRead(verticalScroll);
}
}
void menu(char menuName[]) {
lcd.setCursor(0, 0);
lcd.print(" ");
lcd.setCursor(0, 0);
lcd.print(menuName);
lcd.setCursor(0, 1);
lcd.print(">Start ");
delay(100);
verticalScrollState = digitalRead(verticalScroll);
while (verticalScrollState == HIGH) {
enterState = digitalRead(enter);
if (enterState == LOW) {
profile = cursorPosition;
cursorPosition = 0;
start();
}
verticalScrollState = digitalRead(verticalScroll);
}
}
void start() {
lcd.setCursor(0, 0);
lcd.print("Start Job?");
lcd.setCursor(0, 1);
lcd.print(">NO YES");
delay(100);
while (true) {
horizontalScrollState = digitalRead(horizontalScroll);
if (horizontalScrollState == LOW) {
if (cursorPosition == 0) {
lcd.setCursor(0, 1);
lcd.print(" NO >YES");
} else {
lcd.setCursor(0, 1);
lcd.print(">NO YES");
}
cursorPosition = (cursorPosition + 1) % 2;
delay(200);
}
enterState = digitalRead(enter);
if (enterState == LOW) {
if (cursorPosition == 0) {
lcd.clear();
cursorPosition = 0;
break;
} else {
weldingProfile();
break;
}
}
}
cursorPosition = 0;
homeMenu();
}
void weldingProfile() {
switch(profile) {
case 1:
Serial.println("case1");
delay(2000);
break;
case 2:
Serial.println("case2");
delay(2000);
break;
}
}
mega:SCL
mega:SDA
mega:AREF
mega:GND.1
mega:13
mega:12
mega:11
mega:10
mega:9
mega:8
mega:7
mega:6
mega:5
mega:4
mega:3
mega:2
mega:1
mega:0
mega:14
mega:15
mega:16
mega:17
mega:18
mega:19
mega:20
mega:21
mega:5V.1
mega:5V.2
mega:22
mega:23
mega:24
mega:25
mega:26
mega:27
mega:28
mega:29
mega:30
mega:31
mega:32
mega:33
mega:34
mega:35
mega:36
mega:37
mega:38
mega:39
mega:40
mega:41
mega:42
mega:43
mega:44
mega:45
mega:46
mega:47
mega:48
mega:49
mega:50
mega:51
mega:52
mega:53
mega:GND.4
mega:GND.5
mega:IOREF
mega:RESET
mega:3.3V
mega:5V
mega:GND.2
mega:GND.3
mega:VIN
mega:A0
mega:A1
mega:A2
mega:A3
mega:A4
mega:A5
mega:A6
mega:A7
mega:A8
mega:A9
mega:A10
mega:A11
mega:A12
mega:A13
mega:A14
mega:A15
stepper1:A-
stepper1:A+
stepper1:B+
stepper1:B-
lcd1:VSS
lcd1:VDD
lcd1:V0
lcd1:RS
lcd1:RW
lcd1:E
lcd1:D0
lcd1:D1
lcd1:D2
lcd1:D3
lcd1:D4
lcd1:D5
lcd1:D6
lcd1:D7
lcd1:A
lcd1:K
drv1:ENABLE
drv1:MS1
drv1:MS2
drv1:MS3
drv1:RESET
drv1:SLEEP
drv1:STEP
drv1:DIR
drv1:GND.1
drv1:VDD
drv1:1B
drv1:1A
drv1:2A
drv1:2B
drv1:GND.2
drv1:VMOT
stepper2:A-
stepper2:A+
stepper2:B+
stepper2:B-
drv2:ENABLE
drv2:MS1
drv2:MS2
drv2:MS3
drv2:RESET
drv2:SLEEP
drv2:STEP
drv2:DIR
drv2:GND.1
drv2:VDD
drv2:1B
drv2:1A
drv2:2A
drv2:2B
drv2:GND.2
drv2:VMOT
stepper3:A-
stepper3:A+
stepper3:B+
stepper3:B-
drv3:ENABLE
drv3:MS1
drv3:MS2
drv3:MS3
drv3:RESET
drv3:SLEEP
drv3:STEP
drv3:DIR
drv3:GND.1
drv3:VDD
drv3:1B
drv3:1A
drv3:2A
drv3:2B
drv3:GND.2
drv3:VMOT
vcc1:VCC
gnd1:GND
r2:1
r2:2
r1:1
r1:2
btn1:1.l
btn1:2.l
btn1:1.r
btn1:2.r
btn2:1.l
btn2:2.l
btn2:1.r
btn2:2.r
btn3:1.l
btn3:2.l
btn3:1.r
btn3:2.r