PART 1
#include <MenuBackend.h>
#include <LiquidCrystal.h>
#include <Stepper.h>
const int stepsPerRevolution = 200;
Stepper myStepper(stepsPerRevolution, 10,11,12,13);
const int Left = 6;
const int Right = 7;
const int Enter = 9;
const int Back = 8;
int lastButton = 0;
//VARIABLE FOR TIME INTERVAL
int startHour = 1; // start time in Time interval HOUR
int startMin = 0; // start time in Time interval MIN
int endHour=1;// end time in Time interval
int endMin = 0; // end time in Time interval
int numOfMeals=1; // number of meals in Time interval
//VARIABLE FOR SPECIFIC TIME
int numOfTime=1; // Number of time to feed the pet
int oneHour = 1;
int twoHour = 1;
int threeHour = 1;
int fourHour = 1;
int oneMin = 0;
int twoMin = 0;
int threeMin = 0;
int fourMin = 0;
int lastEnterState = LOW;
int lastBackState = LOW;
int lastLeftState = LOW;
int lastRightState = LOW;
long enterDebounceTime = 0;
long backDebounceTime = 0;
long leftDebounceTime = 0;
long rightDebounceTime = 0;
long debounceDelay = 300;
LiquidCrystal lcd(5,4,3,2,1,0);
MenuBackend menu = MenuBackend(menuUsed,menuChanged);
MenuItem specificTime = MenuItem("Specific");
MenuItem numberOfMeals = MenuItem("NumOfMeals");
MenuItem startTime = MenuItem("StartTime");
MenuItem startTime2 = MenuItem("StartTime2");
MenuItem endTime = MenuItem("EndTime");
MenuItem endTime2 = MenuItem("EndTime2");
MenuItem intervalTime = MenuItem("Interval");
MenuItem numberOfTime = MenuItem("NumOfTime");
MenuItem oneTime = MenuItem("OneTime");
MenuItem oneTime2 = MenuItem("OneTime2");
MenuItem twoTime = MenuItem("TwoTime");
MenuItem twoTime2 = MenuItem("TwoTime2");
MenuItem threeTime = MenuItem("ThreeTime");
MenuItem threeTime2 = MenuItem("ThreeTime2");
MenuItem fourTime = MenuItem("FourTime");
MenuItem fourTime2 = MenuItem("FourTime2");
void setup(){
pinMode(Left,INPUT);
pinMode(Right,INPUT);
pinMode(Enter,INPUT);
pinMode(Back,INPUT);
lcd.begin(16,2);
menu.getRoot().add(specificTime).addRight(intervalTime);
specificTime.add(numberOfMeals).add(startTime).add(startTime2).add(endTime).add(endTime2);
intervalTime.add(numberOfTime).add(oneTime).add(oneTime2).add(twoTime).add(twoTime2).add(threeTime).add(threeTime2).add(fourTime).add(fourTime2);
menu.toRoot();
}//end Setup
void loop()
{
readButtons();
navigateMenus();
}
void menuChanged(MenuChangeEvent changed){
MenuItem newMenuItem = changed.to;
lcd.setCursor(0,0);
if(newMenuItem.getName() == menu.getRoot()){ //starting, Menu
lcd.clear();
lcd.print("Maja's PetFeeder");
lcd.setCursor(0,1);
lcd.print("Main Menu v1.0");
}else if(newMenuItem.getName() == "Specific"){ //When Specific TIme is choosed
lcd.clear();
lcd.print(">Time Interval");
lcd.setCursor(0,1);
lcd.print(" Specific Time");
}else if(newMenuItem.getName() == "NumOfMeals"){//When press Enter while in Specific Time
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Number Of Meals");
lcd.setCursor(0,1);
lcd.print("N = 1");
}else if(newMenuItem.getName() == "StartTime"){
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Start Time(Hour)");
lcd.setCursor(5,1);
lcd.print("01:00");
}else if(newMenuItem.getName() == "StartTime2"){
lcd.setCursor(0,0);
lcd.print("Start Time(Min) ");
}else if(newMenuItem.getName() == "EndTime"){
lcd.clear();
lcd.setCursor(0,0);
lcd.print("End Time(Hour) ");
lcd.setCursor(5,1);
lcd.print("01:00");
}else if(newMenuItem.getName() == "EndTime2"){
lcd.setCursor(0,0);
lcd.print("End Time(Min) ");
}else if(newMenuItem.getName() == "Interval"){
lcd.clear();
lcd.print(" Time Interval");
lcd.setCursor(0,1);
lcd.print(">Specific Time");
}else if(newMenuItem.getName() == "NumOfTime"){
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Number Of Time");
lcd.setCursor(0,1);
lcd.print("T = 1");
}else if(newMenuItem.getName() == "OneTime"){
lcd.clear();
lcd.setCursor(0,0);
lcd.print("FirstTime(Hour)");
lcd.setCursor(5,1);
lcd.print("01:00");
}else if(newMenuItem.getName() == "OneTime2"){
lcd.setCursor(0,0);
lcd.print("FirstTime(Min) ");
}else if(newMenuItem.getName() == "TwoTime"){
lcd.clear();
lcd.setCursor(0,0);
lcd.print("SecondTime(Hour)");
lcd.setCursor(5,1);
lcd.print("01:00");
}else if(newMenuItem.getName() == "TwoTime2"){
lcd.setCursor(0,0);
lcd.print("SecondTime(Min) ");
}else if(newMenuItem.getName() == "ThreeTime"){
lcd.clear();
lcd.setCursor(0,0);
lcd.print("ThirdTime(Hour) ");
lcd.setCursor(5,1);
lcd.print("01:00");
}else if(newMenuItem.getName() == "ThreeTime2"){
lcd.setCursor(0,0);
lcd.print("ThirdTime(Min) ");
}else if(newMenuItem.getName() == "FourTime"){
lcd.clear();
lcd.setCursor(0,0);
lcd.print("FourthTime(Hour)");
lcd.setCursor(5,1);
lcd.print("01:00");
}else if(newMenuItem.getName() == "FourTime2"){
lcd.setCursor(0,0);
lcd.print("FourthTime(Min) ");
}
}//END menuChanged
void menuUsed(MenuUseEvent used){
lcd.clear();
if(used.item.getName()=="EndTime2"){
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Meals = ");
lcd.print(numOfMeals);
lcd.setCursor(0,1);
lcd.print("Time=");
lcd.print(startHour);
lcd.print(":");
lcd.print(startMin);
lcd.print("-");
lcd.print(endHour);
lcd.print(":");
lcd.print(endMin);
delay(5000);
}
if(startHour > endHour)
{
lcd.clear();
lcd.print("Error!");
delay(1000);
menu.toRoot();
}else{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Thank You! ");
delay(2000);
lcd.setCursor(0,1);
lcd.print(" Maja :)");
delay(3000);
menu.toRoot();
}
}//end menu used