#define OUT_P1      2
#define IN_P1       3
#define GREEN_LED   13
#define OUT_P2      5
#define IN_P2       6
#define AMBAR_LED   7
#define RED_LED     8  // Definir el pin para RED_LED
int estadoP1, estadoP1Ant = 0;
int estadoP2, estadoP2Ant = 0;

void setup() {
  Serial.begin(9600);
  
  // configuracion INICIAL de los pines
  pinMode(OUT_P1, OUTPUT);      // Configura el pin 2 como salida
  pinMode(OUT_P2, OUTPUT);    // Configura el pin 5 como salida
  digitalWrite(OUT_P1, HIGH);   // Envía señal HIGH por el pin 2
  digitalWrite(OUT_P2, HIGH);   // Envía señal HIGH por el pin 5

  pinMode(IN_P1, INPUT); // Configura el pin 3 como entrada con resistencia pull-down
  pinMode(IN_P2, INPUT); // Configuracion el pin 6 como entrada con resistencia pull-down

  pinMode(GREEN_LED, OUTPUT);         // Configura el pin 4 como salida
  pinMode(AMBAR_LED, OUTPUT);  // Configura el pin 7 como salida
  pinMode(RED_LED, OUTPUT);    // Configura el pin 8 como salida

  Serial.println("OUT_P1 (2) and OUT_P2 (5) set to HIGH at startup");  // Mensaje para indicar el estado inicial
}

void loop() {
  estadoP1 = digitalRead(IN_P1);
  estadoP2 = digitalRead(IN_P2);
  if (estadoP1 != estadoP1Ant ) {
      Serial.println(estadoP1?"P1 ON ":"P1 OFF");
      estadoP1Ant = estadoP1;
  }
  if (estadoP2 != estadoP2Ant ) {
      Serial.println(estadoP2?"P2 ON ":"P2 OFF");
      estadoP2Ant = estadoP2;
  }

  /*
  P1 P2 V A R
  1  1  1 0 0
  1  0  1 1 1
  0  1  0 1 0
  0  0  0 0 1
*/

  if (estadoP1 && estadoP2) {
    digitalWrite(GREEN_LED, HIGH);  // Enciende el LED verde
    digitalWrite(AMBAR_LED, LOW);
    digitalWrite(RED_LED, LOW);
  } else if (estadoP1 && !estadoP2) {
    digitalWrite(GREEN_LED, HIGH);  // Enciende el LED verde
    digitalWrite(AMBAR_LED, HIGH);
    digitalWrite(RED_LED, HIGH);
  } else if (!estadoP1 && estadoP2) {
    digitalWrite(GREEN_LED, LOW);  // Enciende el LED verde
    digitalWrite(AMBAR_LED, HIGH);
    digitalWrite(RED_LED, LOW);
  } else if (!estadoP1 && !estadoP2) {
    digitalWrite(GREEN_LED, LOW);  // Enciende el LED verde
    digitalWrite(AMBAR_LED, LOW);
    digitalWrite(RED_LED, HIGH);
  }
}