// LCD1602 to Arduino Uno connection example
#include <LiquidCrystal.h>
#include <LiquidMenu.h>
#include <AccelStepper.h>
int dire = 1;
char cable[4] ="A30";
char bobina[3] = "S";
char* tcable[6]={"A30", "B50", "C60","RP37", "RP47","MEDI"};
int ptcable =0;
char* tbobina[5]={"S", "M", "L","XL","MEDI"};
int ptbobina =0;
LiquidCrystal lcd(12, 11, 10, 9, 8, 7);
// Definicion de los menús
LiquidLine linea1(1, 0, "Bobina [", bobina,"]");
LiquidLine linea2(1, 1, "Cable [", cable,"]");
LiquidLine linea3(1, 0, "Editar");
LiquidLine linea4(1, 1, "Volver");
LiquidScreen pantalla1(linea1,linea2,linea3,linea4);
LiquidLine linea1_2(1, 0, "Pequeña");
LiquidLine linea2_2(1, 1, "Mediana");
LiquidLine linea3_2(1, 0, "Grande");
LiquidLine linea4_2(1, 1, "X-Grande");
LiquidLine linea5_2(1, 0, "Personalizado");
LiquidScreen pantalla2(linea1_2,linea2_2,linea3_2,linea4_2);
LiquidMenu menu(lcd,pantalla1,pantalla2);
// Botones
#define UP_BUTTON 2
#define DOWN_BUTTON 3
#define SELECT_BUTTON 4
boolean press_u;
boolean press_d;
boolean press_s;
// Motor
#define DIR 5
#define STEP 6
#define motorInterfaceType 1
AccelStepper miMotor = AccelStepper(motorInterfaceType, STEP, DIR);
void setup() {
pinMode(UP_BUTTON, INPUT_PULLUP);
pinMode(DOWN_BUTTON, INPUT_PULLUP);
pinMode(SELECT_BUTTON, INPUT_PULLUP);
pinMode(DIR, OUTPUT);
pinMode(STEP, OUTPUT);
miMotor.setMaxSpeed(1000);
miMotor.setSpeed(500);
lcd.begin(16, 2);
// you can now interact with the LCD, e.g.:
lcd.print("Bobinador");
//menu.init();
linea1.set_focusPosition(Position::LEFT);
linea2.set_focusPosition(Position::LEFT);
linea3.set_focusPosition(Position::LEFT);
linea4.set_focusPosition(Position::LEFT);
linea1.attach_function(1, fn_vacio);
linea2.attach_function(1, fn_vacio);
linea3.attach_function(1, fn_vacio);
linea4.attach_function(1, fn_vacio);
menu.add_screen(pantalla1);
pantalla1.set_displayLineCount(2);
pantalla2.set_displayLineCount(2);
menu.set_focusedLine(0);
menu.update();
}
void loop() {
miMotor.setCurrentPosition(0);
//miMotor.run();
//a = miMotor.getSpeed();
miMotor.setSpeed(800*dire);
miMotor.runSpeed();
if ((digitalRead(UP_BUTTON) == LOW ) && (press_u == false)) {
delay(250);
menu.switch_focus(true);
press_u = true;
// ...
}
if (digitalRead(UP_BUTTON) == HIGH) {
press_u = false;
// ...
}
if ((digitalRead(DOWN_BUTTON) == LOW ) && (press_d == false)) {
delay(250);
menu.switch_focus(false);
press_d = true;
// ...
}
if (digitalRead(DOWN_BUTTON) == HIGH) {
press_d = false;
// ...
}
if ((digitalRead(SELECT_BUTTON) == LOW ) && (press_d == false)) {
delay(250);
//menu.switch_focus(false);
lcd.setCursor(15,0);
lcd.print(menu.get_focusedLine());
dire=dire*(-1);
//LiquidLine linea1(1, 0, "Bobina (B50)");
//LiquidScreen pantalla1(linea1,linea2,linea3,linea4);
//LiquidMenu menu(lcd,pantalla1,pantalla2);
//pantalla1.set_displayLineCount(2);
//dire=-1;
//miMotor.setSpeed(800*dire);
if (menu.get_focusedLine() == 0) { // BOBINA
ptbobina++;
if (ptbobina ==5){ptbobina=0;}
strncpy(bobina, tbobina[ptbobina], sizeof(tbobina[ptbobina]));
//cable = "C60c";
menu.update();
bobina[1]=0;
}
if (menu.get_focusedLine() == 1) { // Cable
//lcd.setCursor(9,0);
//lcd.print("A30");
ptcable++;
if (ptcable ==6){ptcable=0;}
//strncpy(cable, tcable[ptcable], 4);
strncpy(cable, tcable[ptcable], strlen(tcable[ptcable]));
//cable = "C60c";
menu.update();
cable[3]=0;
}
press_s = true;
// ...
}
if (digitalRead(SELECT_BUTTON) == HIGH) {
// press_s = false;
// ...
}
}
void fn_vacio () {
}