#define LED1 2
#define LED2 3
#define LED3 4
#define LED4 5
#define LED5 6
#define PIR1 23  // Sensor no poste 2
#define PIR2 25  // Sensor no poste 4
#define LDR A0

int luminosidade = 0;
const int BRILHO_BAIXO = 5;  // 2% de 255
const int BRILHO_ALTO = 255;   // 100%

void setup() {
  pinMode(LED1, OUTPUT);
  pinMode(LED2, OUTPUT);
  pinMode(LED3, OUTPUT);
  pinMode(LED4, OUTPUT);
  pinMode(LED5, OUTPUT);
  pinMode(PIR1, INPUT_PULLUP);
  pinMode(PIR2, INPUT_PULLUP);
  //Serial.begin(9600);
}

void loop() {
  luminosidade = analogRead(LDR);
  //Serial.println(luminosidade);
  
  if (luminosidade > 512) {  // Se estiver escuro
    bool movimento_pir1 = digitalRead(PIR1);  // detecta o movimento
    bool movimento_pir2 = digitalRead(PIR2);
    
    // Define brilho inicial baixo para todos os LEDs
    int brilho1 = BRILHO_BAIXO;
    int brilho2 = BRILHO_BAIXO;
    int brilho3 = BRILHO_BAIXO;
    int brilho4 = BRILHO_BAIXO;
    int brilho5 = BRILHO_BAIXO;
    
    // Se detectar movimento no PIR1 (poste 2)
    if (movimento_pir1) {
      brilho1 = BRILHO_ALTO;  // LED adjacente
      brilho2 = BRILHO_ALTO;  // LED do sensor
      brilho3 = BRILHO_ALTO;  // LED adjacente
    }
    
    // Se detectar movimento no PIR2 (poste 4)
    if (movimento_pir2) {
      brilho3 = BRILHO_ALTO;  // LED adjacente
      brilho4 = BRILHO_ALTO;  // LED do sensor
      brilho5 = BRILHO_ALTO;  // LED adjacente
    }
    
    // Aplica o brilho calculado aos LEDs
    analogWrite(LED1, brilho1);
    analogWrite(LED2, brilho2);
    analogWrite(LED3, brilho3);
    analogWrite(LED4, brilho4);
    analogWrite(LED5, brilho5);
    
  } else {  // Se estiver claro
    // Apaga todos os LEDs
    analogWrite(LED1, 0);
    analogWrite(LED2, 0);
    analogWrite(LED3, 0);
    analogWrite(LED4, 0);
    analogWrite(LED5, 0);
  }
  
  delay(100);  // Pequeno delay para estabilidade
}