//electronic puzzle box

#define led1 4
#define led2 5
#define led3 6
#define led4 7
#define led5 8
#define led6 9
#define led7 10
#define led8 11
#define led9 12

#define button1 A1
#define button2 A2
#define button3 A3
#define button4 A4
#define button5 A5
#define button6 A6

#define servo 2

void setup() {
  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
  pinMode(led3, OUTPUT);
  pinMode(led4, OUTPUT);
  pinMode(led5, OUTPUT);
  pinMode(led6, OUTPUT);
  pinMode(led7, OUTPUT);
  pinMode(led8, OUTPUT);
  pinMode(led9, OUTPUT);

  pinMode(servo, OUTPUT);

  pinMode(button1, INPUT);
  pinMode(button2, INPUT);
  pinMode(button3, INPUT);
  pinMode(button4, INPUT);
  pinMode(button5, INPUT);
  pinMode(button6, INPUT);

  digitalWrite(servo, LOW);
}

void loop() {

 if (analogRead(button1) > 245 ){ 
  toggle(led1);
  toggle(led2);
  toggle(led6);
  delay(500);
 }

 if (analogRead(button2) > 245 ){
  toggle(led1);
  toggle(led5);
  toggle(led4);
  toggle(led8);
  delay(500);
 }

  if (analogRead(button3) > 245 ){
  toggle(led3);
  toggle(led7);
  toggle(led9);
  delay(500);
 }

 if (analogRead(button4) > 245 ){
  toggle(led3);
  toggle(led6);
  toggle(led7);
  delay(500);
 }

 if (analogRead(button5) > 245 ){
  toggle(led2);
  toggle(led4);
  toggle(led8);
  toggle(led9);
  
  delay(500);
 }
 
  if (analogRead(button6) > 245 ){
  toggle(led2);
  toggle(led5);
  toggle(led6);
  delay(500);
 }
 
 if ( digitalRead(led1) && digitalRead(led2) && digitalRead(led3) && digitalRead(led4) && digitalRead(led5) && digitalRead(led6) && digitalRead(led7) && digitalRead(led8) && digitalRead(led9) ){
  delay(500);
  digitalWrite(servo, HIGH);
 } else digitalWrite(servo, LOW);

}

void toggle(int lednumber){
    digitalWrite(lednumber, !digitalRead(lednumber));
  }
