#define M1 2
#define M2 4
#define M3 5
#define sw 7
int led1 = 8;
int led2 = 9;
boolean M1Val = 0;
boolean wait = 0;
boolean mode;


void isr0 ()  {
  if (wait == 0) {
    M1Val = 1;
  }
}

void setup() {
  // put your setup code here, to run once:
  pinMode(M1, INPUT);
  pinMode(M2, INPUT);
  pinMode(M3, INPUT);
  pinMode(sw,INPUT);
  pinMode(led1,OUTPUT);
  pinMode(led2,OUTPUT);
  mode = 1;
  Serial.begin(9600);
  attachInterrupt (0, isr0, RISING);

}

void loop() {
  // put your main code here, to run repeatedly:
  if (!(digitalRead(sw))){
    mode=!mode;
    led();
  //  arrow();
    //displaydata();
    delay(500);}


  /////////////////////////////////////////////////////////////////////////////////
   if ((M1Val == 1) && (digitalRead(M3) == HIGH) && mode == 1)
  
  { wait = 1;
  M1Val = 0;
  Serial.println("MID +++");
  Serial.println(mode);
    delay(100);
    wait = 0;
  }

   if ((M1Val == 1) && (digitalRead(M2) == HIGH) && mode == 1) 
 
  { wait = 1;
  M1Val = 0;
  Serial.println("MID --");
  Serial.println(mode);
    delay(100);
    wait = 0;

  }
  
////////////////////////////////////////////////////////////////////////////////////

if ((M1Val == 1) && (digitalRead(M3) == HIGH) && mode == 0)
  
  { wait = 1;
  M1Val = 0;
  Serial.println("HIGH ++");
  Serial.println(mode);
    delay(100);
    wait = 0;
  }

   if ((M1Val == 1) && (digitalRead(M2) == HIGH) && mode == 0) 
 
  { wait = 1;
  M1Val = 0;
  Serial.println("HIGH --");
  Serial.println(mode);
    delay(100);
    wait = 0;

  }

}
void led(){
 if (mode == 1){
  digitalWrite(led1, LOW);
  digitalWrite(led2, HIGH);
   }
 else{
  digitalWrite(led1, HIGH);
  digitalWrite(led2, LOW);
 }
}
