v: 2.5
12/11/2016
#include <LiquidCrystal.h>
// Initialize the library with the numbers of the interface pins
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
//States for the menu.
int currentMenuItem = 0;
int lastState = 0;
void setup() {
pinMode(1, OUTPUT);
pinMode(2, OUTPUT);
//Set the characters and column numbers.
lcd.begin(16, 2);
//Print default title.
clearPrintTitle();
}
void loop() {
//Call the main menu.
mainMenu();
}
void mainMenu() {
//State = 0 every loop cycle.
int state = 0;
//Refresh the button pressed.
int x = analogRead (0);
//Set the Row 0, Col 0 position.
lcd.setCursor(0,0);
//Check analog values from LCD Keypad Shield
if (x < 100) {
//Right
} else if (x < 200) {
//Up
state = 1;
} else if (x < 400){
//Down
state = 2;
} else if (x < 600){
//Left
} else if (x < 800){
//Select
state = 3;
}
//If we are out of bounds on th menu then reset it.
if (currentMenuItem < 0 || currentMenuItem > 8) {
currentMenuItem = 0;
}
//If we have changed Index, saves re-draws.
if (state != lastState) {
if (state == 1) {
//If Up
currentMenuItem = currentMenuItem - 1;
displayMenu(currentMenuItem);
} else if (state == 2) {
//If Down
currentMenuItem = currentMenuItem + 1;
displayMenu(currentMenuItem);
} else if (state == 3) {
//If Selected
selectMenu(currentMenuItem);
}
//Save the last State to compare.
lastState = state;
}
//Small delay
delay(5);
}
//Display Menu Option based on Index.
void displayMenu(int x) {
switch (x) {
case 1:
lcd.clear();
lcd.setCursor(0,0);
lcd.print ("->desbloqueo ter");
break;
case 2:
lcd.clear();
lcd.setCursor(0,0);
lcd.print ("->introduccion");
break;
case 3:
lcd.clear();
lcd.setCursor(0,0);
lcd.print ("->anotaciones");
break;
case 4:
lcd.clear();
lcd.setCursor(0,0);
lcd.print ("->software");
break;
case 5:
lcd.clear();
lcd.setCursor(0,0);
lcd.print ("->abrir D.1");
break;
case 6:
lcd.clear();
lcd.setCursor(0,0);
lcd.print ("->cerrar D.1");
break;
case 7:
lcd.clear();
lcd.setCursor(0,0);
lcd.print ("->abrir D.2");
break;
case 8:
lcd.clear();
lcd.setCursor(0,0);
lcd.print ("->cerrar D.2 ");
break;
}
}
//Print a basic header on Row 1.
void clearPrintTitle() {
lcd.clear();
lcd.setCursor(0,0);
lcd.print(">_");
delay(600);
lcd.clear();
delay(600);
lcd.setCursor(0,0);
lcd.print(">_");
delay(600);
lcd.clear();
delay(600);
lcd.setCursor(0,0);
lcd.print(">_");
delay(600);
lcd.clear();
delay(600);
lcd.setCursor(0,0);
lcd.print(">_");
delay(600);
lcd.clear();
delay(600);
lcd.setCursor(0,0);
lcd.print(" t");
delay(600);
lcd.clear();
lcd.setCursor(0,0);
lcd.print(">_te");
delay(600);
lcd.clear();
lcd.setCursor(0,0);
lcd.print(" ter");
delay(600);
lcd.clear();
lcd.setCursor(0,0);
lcd.print(">_term");
delay(600);
lcd.clear();
lcd.setCursor(0,0);
lcd.print(" termi");
delay(600);
lcd.clear();
lcd.setCursor(0,0);
lcd.print(">_termin");
delay(600);
lcd.clear();
lcd.setCursor(0,0);
lcd.print(" termina");
delay(600);
lcd.clear();
lcd.setCursor(0,0);
lcd.print(">_terminal");
lcd.setCursor(0,1);
lcd.print(" 2");
delay(600);
lcd.clear();
lcd.setCursor(0,0);
lcd.print(" terminal");
lcd.setCursor(0,1);
lcd.print(" 2.");
delay(600);
lcd.clear();
lcd.setCursor(0,0);
lcd.print(">_terminal");
lcd.setCursor(0,1);
lcd.print(" 2.4");
delay(600);
}
//////////////////////////////////////////////////////////////
//Show the selection on Screen.
void selectMenu(int x) {
switch (x) {
////////////////////////////////////////////////////////
case 1:
lcd.clear();
lcd.setCursor(0,0);
lcd.print ("DESBLOQUEO...");
delay(5000);
lcd.clear();
lcd.print ("*");
delay(200);
lcd.clear();
lcd.print ("**");
delay(200);
lcd.clear();
lcd.print ("***");
delay(200);
lcd.clear();
lcd.print ("****");
delay(200);
lcd.clear();
lcd.print ("*****");
delay(200);
lcd.clear();
lcd.print ("******");
delay(200);
lcd.clear();
lcd.print ("*******");
delay(200);
lcd.clear();
lcd.print ("********");
delay(200);
lcd.clear();
lcd.print ("*********");
delay(200);
lcd.clear();
lcd.print ("**********");
delay(200);
lcd.clear();
lcd.print ("***********");
delay(200);
lcd.clear();
lcd.print ("************");
delay(200);
lcd.clear();
lcd.print ("*************");
delay(200);
lcd.clear();
lcd.print ("**************");
delay(200);
lcd.clear();
lcd.print ("***************");
delay(200);
lcd.clear();
lcd.print("****************");
lcd.setCursor(0,1);
lcd.print("******fallo******");
delay(1000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print ("archivo corrupto");
lcd.setCursor(0,1);
lcd.print ("solo disp. pc 01");
delay(2000);
break;
/////////////////////////////////////////////////////////
case 2:
lcd.clear();
lcd.setCursor(0,0);
lcd.print ("usted tiene la");
lcd.setCursor(0,1);
lcd.print ("terminal 2.4");
delay(2000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print ("primera terminal");
lcd.setCursor(0,1);
lcd.print ("sintetica ARDU");
break;
///////////////////////////////////////////////////////
case 3:
lcd.clear();
lcd.setCursor(0,0);
lcd.print ("v.2.4");
lcd.setCursor(0,1);
lcd.print ("modif. 02/11/16");
delay(1000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print ("añadido de ");
lcd.setCursor(0,1);
lcd.print ("nuevas opciones");
//Call the function that belongs to Option 3
break;
///////////////////////////////////////////////////////
case 4:
lcd.clear();
lcd.setCursor(0,0);
lcd.print ("contacte admin.");
lcd.setCursor(0,1);
lcd.print ("O en P. WEB");
break;
////////////////////////////////////////////////////////
case 5:
lcd.clear();
lcd.setCursor(0,0);
lcd.print ("abriendo");
delay(600);
lcd.clear();
lcd.setCursor(0,0);
lcd.print ("abriendo.");
delay(600);
lcd.clear();
lcd.setCursor(0,0);
lcd.print ("abriendo..");
delay(600);
lcd.clear();
lcd.setCursor(0,0);
lcd.print ("abriendo...");
delay(600);
lcd.clear();
lcd.setCursor(0,0);
lcd.print ("abriendo");
delay(600);
lcd.clear();
lcd.setCursor(0,0);
lcd.print ("abriendo.");
delay(600);
lcd.clear();
lcd.setCursor(0,0);
lcd.print ("abriendo..");
delay(600);
lcd.clear();
lcd.setCursor(0,0);
lcd.print ("abriendo...");
delay(1000);
lcd.setCursor(0,0);
lcd.print ("D.1 = HIGH");
digitalWrite(1, HIGH);
break;
/////////////////////////////////////////////////////////
case 6:
lcd.clear();
lcd.setCursor(0,0);
lcd.print ("CERRANDO...");
digitalWrite(1, LOW);
delay(1000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print (" D.1 = LOW");
break;
/////////////////////////////////////////////////////////
case 7:
lcd.clear();
lcd.setCursor(0,0);
lcd.print ("abriendo");
delay(600);
lcd.clear();
lcd.setCursor(0,0);
lcd.print ("abriendo.");
delay(600);
lcd.clear();
lcd.setCursor(0,0);
lcd.print ("abriendo..");
delay(600);
lcd.clear();
lcd.setCursor(0,0);
lcd.print ("abriendo...");
delay(600);
lcd.clear();
lcd.setCursor(0,0);
lcd.print ("abriendo");
delay(600);
lcd.clear();
lcd.setCursor(0,0);
lcd.print ("abriendo.");
delay(600);
lcd.clear();
lcd.setCursor(0,0);
lcd.print ("abriendo..");
delay(600);
lcd.clear();
lcd.setCursor(0,0);
lcd.print ("abriendo...");
delay(1000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print ("D.2 : HIGH");
digitalWrite(2, HIGH);
break;
////////////////////////////////////////////////////
case 8:
lcd.clear();
lcd.setCursor(0,0);
lcd.print ("CERRANDO...");
digitalWrite(2, LOW);
delay(1000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print (" D.2 = LOW");
break;
}
}
No hay comentarios:
Publicar un comentario