#include <Wire.h>
#include <LiquidCrystal_I2C.h>
int val = 0;
int x = 1;
int coup = 0;
int s_style = 6;
int s_size = 22;
int alt = 6;
int order = 102;
int insert = 12;
int cont1 = 11;
int cont2 = 11;
int con_a = 0;
int con_b = 0;
int con_c = 0;
int con_d = 0;
char contact = 'P';
uint8_t arrow[8] = {0x04,0x0E,0x1F,0x00,0x00,0x00,0x00,0x00};
LiquidCrystal_I2C lcd(0x27,10,4);
void setup() {
Serial.begin(9600);
lcd.init();
lcd.backlight();
lcd.createChar(0, arrow);
lcd.setCursor(x,2);
lcd.print("^");
lcd.setCursor(1,1);
lcd.print("C48-");
lcd.setCursor(5,1);
lcd.print(coup);
lcd.setCursor(6,1);
lcd.print(s_style);
lcd.setCursor(7,1);
lcd.print("R");
lcd.setCursor(8,1);
lcd.print(s_size);
lcd.print("-");
lcd.setCursor(11,1);
lcd.print(insert);
lcd.setCursor(13,1);
lcd.print(contact);
lcd.setCursor(14,1);
lcd.print(alt);
lcd.print("-");
lcd.setCursor(16,1);
lcd.print(order);
}
void loop() {
val = analogRead(A0);
delay(200);
Serial.print("Analog Value : ");
Serial.println(val);
if (val < 1) { // LEFT
lcd.setCursor(x,2);
lcd.print(" ");
x--;
lcd.setCursor(x,2);
lcd.print("^");
delay(100);
} else if (val >= 100 && val <= 110) { // RIGHT
lcd.setCursor(x,2);
lcd.print(" ");
x++;
lcd.setCursor(x,2);
lcd.print("^");
}
if (x == 0) x = 18; else if (x == 19) x = 1;
lcd.setCursor(0,2);
lcd.print(" ");
lcd.setCursor(x,2);
lcd.print("^");
if (x >= 1 && x <= 3) {
lcd.setCursor(0,0);
lcd.print(" Serial Designation ");
} else if (x == 5) {
lcd.setCursor(0,0);
lcd.print(" Coupling Style ");
} else if (x == 6) {
lcd.setCursor(0,0);
lcd.print(" Shell Style ");
} else if (x == 7) {
lcd.setCursor(0,0);
lcd.print("Environmental Class");
} else if (x >= 8 && x <= 9) {
lcd.setCursor(0,0);
lcd.print(" Shell Size ");
} else if (x >= 11 && x <= 12) {
lcd.setCursor(0,0);
lcd.print(" Insert Arrangement ");
} else if (x == 13) {
lcd.setCursor(0,0);
lcd.print(" Contact Style ");
} else if (x == 14) {
lcd.setCursor(0,0);
lcd.print("Alt. Shell Positions");
} else if (x >= 16 && x <= 19) {
lcd.setCursor(0,0);
lcd.print(" Order Code ");
} else {
lcd.setCursor(0,0);
lcd.print(" Not Applicable ");
}
if (val >= 15 && val <= 20 && x == 5 || val >= 50 && val <= 60 && x == 5) { // UP || DOWN
lcd.setCursor(5,1);
lcd.print(" ");
if (coup == 0) {
coup = 1;
} else {
coup = 0;
}
lcd.setCursor(5,1);
lcd.print(coup);
}
if (val >= 15 && val <= 20 && x == 6 || val >= 50 && val <= 60 && x == 6) {
lcd.setCursor(6,1);
lcd.print(" ");
if (s_style == 0) {
s_style = 3;
} else if (s_style == 3) {
s_style = 6;
} else {
s_style = 0;
}
lcd.setCursor(6,1);
lcd.print(s_style);
}
if (val >= 15 && val <= 20 && x >= 8 && x <= 10) {
s_size += 2;
if (s_size > 24) {s_size = 8;}
}
else if (val >= 50 && val <= 60 && x >= 8 && x <= 10) {
s_size -= 2;
if (s_size < 8) {s_size = 24;}
}
if (x >= 8 && x <= 10) {
if (s_size == 8) {
insert = 2;
}
else if (s_size == 10) {
insert = 2;
}
else if (s_size == 12) {
insert = 3;
}
else if (s_size == 14) {
insert = 3;
}
else if (s_size == 16) {
insert = 10;
}
else if (s_size == 18) {
insert = 8;
}
else if (s_size == 20) {
insert = 16;
}
else if (s_size == 22) {
insert = 12;
}
else if (s_size == 24) {
insert = 43;
}
lcd.setCursor(11,1);
if (insert < 10) {
lcd.print("0");
}
lcd.print(insert);
}
lcd.setCursor(8,1);
lcd.print(" ");
lcd.setCursor(8,1);
if (s_size < 10) {
lcd.print("0");
}
lcd.print(s_size);
if ((val >= 15 && val <= 20 && x >= 11 && x <= 12) || (val >= 50 && val <= 60 && x >= 11 && x <= 12)) {
if (s_size == 8) {
cont2 = 20;
if (insert == 2) {insert = 3; cont1 = 3;}
else {insert = 2; cont2 = 2;}
}
else if (s_size == 10) {
if (insert == 2) {insert = 20; cont1 = 2; cont2 = 16;}
else if (insert == 20) {insert = 5; cont1 = 5; cont2 = 20;}
else {insert = 2; cont1 = 2; cont2 = 20;}
}
else if (s_size == 12) {
if (insert == 3) {insert = 12; cont1 = 12; cont2 = 20;}
else {insert = 3; cont1 = 3; cont2 = 16;}
}
else if (s_size == 14) {
if (insert == 3) {insert = 4; cont1 = 4; cont2 = 12;}
else if (insert == 4) {insert = 7; cont1 = 7; cont2 = 16;}
else if (insert == 7) {insert = 12; cont1 = 9; cont2 = 20;}
else if (insert == 12) {insert = 15; cont1 = 15; cont2 = 20;}
else {insert = 3; cont1 = 2; cont2 = 16;}
}
else if (s_size == 16) {
if (insert == 10) {insert = 24; cont1 = 24; cont2 = 24;}
else {insert = 10; cont1 = 10; cont2 = 16;}
}
else if (s_size == 18) {
if (insert == 8) {insert = 11; cont1 = 10; cont2 = 16;}
else if (insert == 11) {insert = 14; cont1 = 14; cont2 = 16;}
else if (insert == 14) {insert = 31; cont1 = 31; cont2 = 20;}
else {insert = 8; cont1 = 8; cont2 = 12;}
}
else if (s_size == 20) {
if (insert == 16) {insert = 25; cont1 = 19; cont2 = 20;}
else if (insert == 25) {insert = 28; cont1 = 24; cont2 = 20;}
else if (insert == 28) {insert = 39; cont1 = 39; cont2 = 20;}
else if (insert == 39) {insert = 41; cont1 = 41; cont2 = 20;}
else {insert = 16; cont1 = 16; cont2 = 20;}
}
else if (s_size == 22) {
if (insert == 12) {insert = 19; cont1 = 19; cont2 = 16;}
else if (insert == 19) {insert = 32; cont1 = 26; cont2 = 20;}
else if (insert == 32) {insert = 55; cont1 = 55; cont2 = 20;}
else {insert = 12; cont1 = 12; cont2 = 12;}
}
else if (s_size == 24) {
if (insert == 43) {insert = 57; cont1 = 2; cont2 = 12;}
else if (insert == 57) {insert = 61; cont1 = 61; cont2 = 20;}
else if (insert == 61) {insert = 29; cont1 = 29; cont2 = 16;}
else if (insert == 29) {insert = 30; cont1 = 30; cont2 = 16;}
else {insert = 43; cont1 = 23; cont2 = 20;}
}
lcd.setCursor(11,1);
if (insert < 10) {
lcd.print("0");
}
lcd.print(insert);
}
if ((val >= 15 && val <= 20 && x == 13) || (val >= 50 && val <= 60 && x == 13)) {
contact = (contact == 'P') ? 'S' : 'P';
lcd.setCursor(13,1);
lcd.print(contact);
}
if (val >= 15 && val <= 20 && x == 14) { // UP
alt++;
if (alt > 10) {
alt = 6;
}
}
else if (val >= 50 && val <= 60 && x == 14) { // DOWN
alt--;
if (alt < 6) {
alt = 10;
}
}
lcd.setCursor(14,1);
lcd.print(" -");
lcd.setCursor(14,1);
lcd.print(alt);
if (x == 14) {
if (alt == 6) {con_a = 18; con_b = 149; con_c = 192; con_d = 259;} else
if (alt == 7) {con_a = 92; con_b = 152; con_c = 222; con_d = 342;} else
if (alt == 8) {con_a = 84; con_b = 152; con_c = 204; con_d = 334;} else
if (alt == 9) {con_a = 24; con_b = 135; con_c = 199; con_d = 240;} else
if (alt == 10) {con_a = 98; con_b = 152; con_c = 268; con_d = 338;}
}
if (val >= 15 && val <= 20 && x >= 16 && x <= 19 || val >= 50 && val <= 60 && x >= 16 && x <= 19) {
lcd.setCursor(16,1);
lcd.print(" ");
if (order == 100) {
order = 102;
} else if (order == 102) {
order = 105;
} else if (order == 105) {
order = 106;
} else {
order = 100;
}
lcd.setCursor(16,1);
lcd.print(order);
}
if (x == 5) {
lcd.setCursor(0,3);
if (coup == 0) {
lcd.print("> Treaded ");
} else if (coup == 1) {
lcd.print("> Bayonet ");
}
} else if (x == 6) {
lcd.setCursor(0,3);
if (s_style == 0) {
lcd.print("> Sq.Flange Recept.");
} else if (s_style == 3) {
lcd.print("> Single-Hole Mount ");
} else if (s_style == 6) {
lcd.print("> Straight Plug ");
}
} else if (x == 7) {
lcd.setCursor(0,3);
lcd.print(" Meets MIL-C-26500 ");
} else if (x >= 8 && x <= 9) {
lcd.setCursor(0,3);
lcd.print(" Change Size ");
} else if (x >= 11 && x <= 12) {
lcd.setCursor(0,3);
lcd.print(" ");
if (cont1 < 10) {
lcd.print("0");
}
lcd.print(cont1);
lcd.print("#");
if (cont2 < 10) {
lcd.print("0");
}
lcd.print(cont2);
lcd.print(" Contacts ");
} else if (x == 13) {
lcd.setCursor(0,3);
if (contact == 'P') {
lcd.print("> Pin ");
} else if (contact == 'S') {
lcd.print("> Socket ");
}
} else if (x == 14) {
lcd.setCursor(0,3);
lcd.print("A");
if (con_a < 100) {
lcd.print("0");
}
lcd.print(con_a);
lcd.print(" B");
if (con_b < 100) {
lcd.print("0");
}
lcd.print(con_b);
lcd.print(" C");
if (con_c < 100) {
lcd.print("0");
}
lcd.print(con_c);
lcd.print(" D");
if (con_d < 100) {
lcd.print("0");
}
lcd.print(con_d);
} else if (x >= 16 && x <= 19) {
lcd.setCursor(0,3);
if (order == 100) {
lcd.print("> Cn + Ct & Cb Sp ");
} else if (order == 102) {
lcd.print("> Cn L Cb Sp + Ct ");