problema con mi programa control de luces con pulsadore.

Buenos dias soy nuevo en esto y quería automatizar todas las luces de casa empesando por encender todas las luces con pulsadores y mas adelante poder controlarlas por internet. Intente hacer un programa pero no me fusiona. a ver si alguien me puede ayudar. la intención es controlar 14 luces con pulsadores. encender y apagar desde el mismo pulsador.

int PULSADOR1=2;  // PULSADOR P1 PIN DE ENTRADA 2
int PULSADOR2Y3=3; // PULSADOR P2, P3, PIN DE ENTRADA 3
int PULSADOR4Y5=4; //PULSADOR P4, P5 PIN DE ENTRADA 4
int PULSADOR6=5;  // PULSADOR P6 PIN DE ENTRADA 5
int PULSADOR7=6;  // PULSADOR P7 PIN DE ENTRADA 6
int PULSADOR8Y9=7; // PULSADOR P8, P9 PIN DE ENTRADA 7
int PULSADOR10Y11=8; //PULSADOR P10, P11 PIN DE ENTRADA 8
int PULSADOR12=9; // PULSADOR P12 PIN DE ENTRADA 9
int PULSADOR13=10; // PULSADOR P13 PIN DE ENTRADA 10
int PULSADOR14Y15Y16=11; // PULSADOR P14, P15, P16 PIN DE ENTRADA 11
int PULSADOR17Y25=12; // PULSADOR P17, P25 PIN DE ENTRADA 12
int PULSADOR24=15; // PULSADOR P24 PIN DE ENTRADA 15
int PULSADOR18Y19Y20=13; // PULSADOR P18, P19, P20 PIN DE ENTRADA 13
int PULSADOR21Y22Y23=14; // PULSADOR P21, P22, P23 PIN DE SALIDA 14
int LUZ1=30; //  PIN DE SALIDA 30 (P1)
int LUZ2=31; // PIN DE SALIDA 31 (P2, P3)
int LUZ3=32; // PIN DE SALIDA 32 (P4, P5)
int LUZ4=33; // PIN DE SALIDA 33 (P6)
int LUZ5=34; // PIN DE SALIDA 34 (P7)
int LUZ6=35; // PIN DE SALIDA 35 (P8, P9)
int LUZ7=36; // PIN DE SALIDA 36 (P10, P11)
int LUZ8=37; // PIN DE SALIDA 37 (P12)
int LUZ9=38; // PIN DE SALIDA 38 (P13)
int LUZ10=39; // PIN DE SALIDA 39 (P14, P15, P16)
int LUZ11=40; // PIN DE SALIDA 40 (P17, P18)
int LUZ12=41; // PIN DE SALIDA 41 (P19, P20, P21)
int LUZ13=42; // PIN DE SALIDA 42 (P22, P23, P24)
int LUZ14=43; // PIN DE SALIDA 43 (P25)
int ESTADO=LOW;


void setup() {
pinMode (PULSADOR1 , INPUT);
pinMode (PULSADOR2Y3 , INPUT);
pinMode (PULSADOR4Y5 , INPUT);
pinMode (PULSADOR6, INPUT);
pinMode (PULSADOR7, INPUT);
pinMode (PULSADOR8Y9, INPUT);
pinMode (PULSADOR10Y11, INPUT);
pinMode (PULSADOR12, INPUT);
pinMode (PULSADOR13, INPUT);
pinMode (PULSADOR14Y15Y16, INPUT);
pinMode (PULSADOR17Y25, INPUT);
pinMode (PULSADOR24, INPUT);
pinMode (PULSADOR18Y19Y20, INPUT);
pinMode (PULSADOR21Y22Y23, INPUT);
pinMode (LUZ1, OUTPUT);
pinMode (LUZ2, OUTPUT);
pinMode (LUZ3, OUTPUT);
pinMode (LUZ4, OUTPUT);
pinMode (LUZ5, OUTPUT);
pinMode (LUZ6, OUTPUT);
pinMode (LUZ7, OUTPUT);
pinMode (LUZ8, OUTPUT);
pinMode (LUZ9, OUTPUT);
pinMode (LUZ10, OUTPUT);
pinMode (LUZ11, OUTPUT);
pinMode (LUZ12, OUTPUT);
pinMode (LUZ13, OUTPUT);
pinMode (LUZ14, OUTPUT);

}
void loop(){
 while (digitalRead(PULSADOR1)==LOW){
}

ESTADO=digitalRead(LUZ1);
digitalWrite(LUZ1, !ESTADO);
while (digitalRead(PULSADOR1)==HIGH){
}

while (digitalRead(PULSADOR2Y3)==LOW){
}
ESTADO=digitalRead(LUZ2);
digitalWrite(LUZ2, !ESTADO);
while (digitalRead(PULSADOR2Y3)==HIGH){
}
while (digitalRead(PULSADOR4Y5)==LOW){
}
ESTADO=digitalRead(LUZ3);
digitalWrite(LUZ3, !ESTADO);
while(digitalRead(PULSADOR4Y5)==HIGH){
}

while (digitalRead(PULSADOR6)==LOW){
}

ESTADO=digitalRead(LUZ4);
digitalWrite(LUZ4, !ESTADO);
while(digitalRead(PULSADOR6)==HIGH){
}
while (digitalRead (PULSADOR7)==LOW){
}
ESTADO=digitalRead(LUZ5);
digitalWrite(LUZ5, !ESTADO);
while(digitalRead(PULSADOR7)==HIGH){
}
while(digitalRead(PULSADOR8Y9)==LOW){
}
ESTADO=digitalRead(LUZ6);
digitalWrite(LUZ6, !ESTADO);
while (digitalRead(PULSADOR8Y9)==HIGH){
}
while (digitalRead(PULSADOR10Y11)==LOW){
}
ESTADO=digitalRead(LUZ7);
digitalWrite(LUZ7, !ESTADO);
while (digitalRead(PULSADOR10Y11)==HIGH){
}
while (digitalRead(PULSADOR12)==LOW){
}
ESTADO=digitalRead(LUZ8);
digitalWrite(LUZ8, !ESTADO);
while(digitalRead(PULSADOR12)==HIGH){
}
while (digitalRead (PULSADOR13)==LOW){
}
ESTADO=digitalRead(LUZ9);
digitalWrite(LUZ9, ! ESTADO);
while(digitalRead(PULSADOR13)==HIGH){ 
}
while (digitalRead(PULSADOR14Y15Y16)==LOW){
}
ESTADO=digitalRead(LUZ10);
digitalWrite(LUZ10, !ESTADO);
while(digitalRead(PULSADOR14Y15Y16)==HIGH){
}
while(digitalRead(PULSADOR17Y25)==LOW){
}
ESTADO=digitalRead(LUZ11);
digitalWrite(LUZ11, !ESTADO);
while(digitalRead(PULSADOR17Y25)==HIGH){
}
while (digitalRead(PULSADOR18Y19Y20)==LOW){
}
ESTADO=digitalRead(LUZ12);
digitalWrite(LUZ12, !ESTADO);
while(digitalRead(PULSADOR18Y19Y20)==HIGH){
}
while(digitalRead(PULSADOR21Y22Y23)==LOW){
}
ESTADO=digitalRead(LUZ13);
digitalWrite(LUZ13, !ESTADO);
while(digitalRead(PULSADOR21Y22Y23)==HIGH){
}
while(digitalRead(PULSADOR24)==LOW){
}
ESTADO=digitalRead(LUZ14);
digitalWrite(LUZ14, !ESTADO);
while(digitalRead(PULSADOR24)==HIGH){

}
}

Y cual es el problema?