bool IS_ARDUINO_A = true;
int DELAY_VAL = 200;
int led_red = 13;
int led_green1 = 12;
int led_green2 = 11;
bool ctrl;
bool active;
int LAMP_R_CTRL;
int LAMP_G1_CTRL;
int LAMP_G2_CTRL;
void setup() {
Serial.begin(9600);
pinMode(led_red, OUTPUT);
pinMode(led_green1, OUTPUT);
pinMode(led_green2, OUTPUT);
ctrl = true;
active = IS_ARDUINO_A;
LAMP_R_CTRL = init_test(led_red, A0);
LAMP_G1_CTRL = init_test(led_green1, A1);
LAMP_G2_CTRL = init_test(led_green2, A2);
}
void loop() {
print_if(ctrl, "True", "False");
while (ctrl && active){
digitalWrite(led_red, HIGH);
digitalWrite(led_green1, LOW);
digitalWrite(led_green2, HIGH);
delay(DELAY_VAL);
test_led();
if(ctrl != true) {break;}
digitalWrite(led_green1, HIGH);
digitalWrite(led_green2, LOW);
delay(DELAY_VAL);
test_led();
}
restart();
digitalWrite(led_red, LOW);
digitalWrite(led_green1, LOW);
digitalWrite(led_green2, LOW);
commune();
}
void test_led(){
int r_val = analogRead(A0);
int g1_val = analogRead(A1);
int g2_val = analogRead(A2);
if((g1_val==LAMP_G1_CTRL ^ g2_val==LAMP_G2_CTRL) && r_val==LAMP_R_CTRL){
ctrl = true;
}
else{
ctrl = false;
}
}
void commune(){
if (IS_ARDUINO_A){
if(ctrl){active=true;}
else{active=false;}
char send[1] = {active};
Serial.write(send,1);
}
else{
char ardu_a_status[1];
Serial.readBytes(ardu_a_status,1);
active = !ardu_a_status[0];
}
}
void restart(){
if(!active && !IS_ARDUINO_A){return;}
digitalWrite(led_red, HIGH);
digitalWrite(led_green1, HIGH);
digitalWrite(led_green2, HIGH);
int g1_val = analogRead(A1);
int g2_val = analogRead(A2);
int r_val = analogRead(A0);
if(g1_val==LAMP_G1_CTRL && g2_val==LAMP_G2_CTRL && r_val==LAMP_R_CTRL){
if(IS_ARDUINO_A){active=true;}
ctrl = true;
}
else{
ctrl = false;
}
print_if(ctrl, "restart", "no restart");
}
int init_test(int led_id, int input_id){
digitalWrite(led_id, HIGH);
delay(DELAY_VAL);
int ret_val = analogRead(input_id);
delay(DELAY_VAL);
digitalWrite(led_id, LOW);
Serial.print("LED "); Serial.print(led_id); Serial.print(" controll value = "); Serial.print(ret_val);
Serial.print(" (listening Port:"); Serial.print(input_id); Serial.println(")");
return ret_val;
}
void print_if(bool condition, char msg_true[], char msg_false[]){
if(condition){
Serial.println(msg_true);
}
else{
Serial.println(msg_false);
}
}
void print_inputs(bool perma_light){
if(perma_light){
digitalWrite(led_red, HIGH);
digitalWrite(led_green1, HIGH);
digitalWrite(led_green2, HIGH);
}
Serial.print(analogRead(A0)); Serial.print("|");
Serial.print(analogRead(A1)); Serial.print("|");
Serial.println(analogRead(A2));
}