Variable a 0

Hola a todos.

quiero controlar unas luces mediante pulsadores y atravez de un programa en java.
el problema esta que si la luz esta encendida y conecto el programa esta luz se apaga cosa que no deberia suseder y no se como solucionarlo.
susede lo mismo con el Serial Monitor.

dejo el codigo, perdon por el desorden del mismo.

int inA10 = A10;
int inA11 = A11;
int inA12 = A12;
int out2 = 2;
int out3 = 3;

int state1;
int state2;
int val;
int puls1;
int puls2;
int estado1;
int estado2;

void setup(){
Serial.begin(9600);
pinMode(inA10, INPUT);
pinMode(inA11, INPUT);
pinMode(inA12, INPUT);
pinMode(out2, OUTPUT);
pinMode(out3, OUTPUT);
}

void loop(){
if (Serial.available())
{
val = Serial.read();
}
if (val == '0') {

state1 = HIGH;

}
if (val == '1') {
state1 = LOW;
}
puls1 = digitalRead(inA10);
if(puls1 == HIGH && estado1 == LOW) {
state1 = HIGH;
}
if(puls1 == HIGH && estado1 == HIGH) {
state1 = LOW;
}
digitalWrite(out2, state1);
estado1 = state1;

if (val == '2') {
state2 = HIGH;
}
if (val == '3') {
state2 = LOW;
}
puls2 = digitalRead(inA11);
if(puls2 == HIGH && estado2 == LOW) {
state2 = HIGH;
}
if(puls2 == HIGH && estado2 == HIGH) {
state2 = LOW;
}

digitalWrite(out3, state2);
estado2 = state2;
val = 'null';

delay(200);

}

un saludo

Cada vez que abres el puerto serie, el Arduino ser reinicia

Hola yo lo he solucionado guardando los valores de las variables en la EEPROM y cada vez que arranca lo primero que hace es cargar los valores desde la EEPROM y así todo continua en el mismo estado que antes de apagar o resetear.

Hola.
Muchas gracias, voy a probar de guardarlas en la eeprom.
un saludo