// === Definições dos pinos ===
#define TRIG_PIN 23
#define ECHO_PIN 22
#define BUZZER_PIN 2
#define PIN_RED_LED 33
#define PIN_YELLOW_LED 32
#define PIN_LUZ1_LED 25 // Substituto de GPIO34 (agora funcional)
#define PIN_LUZ2_LED 26 // Substituto de GPIO35 (agora funcional)
#define LDR_ANALOG_PIN 36 // VP (A0)
#define LDR_DIGITAL_PIN 13 // D0
#define LDR_THRESHOLD 1000 // Ajustável
#define DIST_YELLOW 30 // cm
#define DIST_RED 15 // cm
long duration;
float distance_cm;
void setup() {
Serial.begin(115200);
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
pinMode(BUZZER_PIN, OUTPUT);
pinMode(PIN_RED_LED, OUTPUT);
pinMode(PIN_YELLOW_LED, OUTPUT);
pinMode(PIN_LUZ1_LED, OUTPUT);
pinMode(PIN_LUZ2_LED, OUTPUT);
pinMode(LDR_DIGITAL_PIN, INPUT);
}
void loop() {
// === Medição de distância com o HC-SR04 ===
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
duration = pulseIn(ECHO_PIN, HIGH);
distance_cm = duration * 0.01715;
Serial.print("Distância: ");
Serial.print(distance_cm);
Serial.println(" cm");
if (distance_cm < DIST_RED) {
digitalWrite(PIN_RED_LED, HIGH);
digitalWrite(PIN_YELLOW_LED, LOW);
tone(BUZZER_PIN, 1000); // som mais alto
} else if (distance_cm < DIST_YELLOW) {
digitalWrite(PIN_RED_LED, LOW);
digitalWrite(PIN_YELLOW_LED, HIGH);
//tone(BUZZER_PIN, 500); // som médio
} else {
digitalWrite(PIN_RED_LED, LOW);
digitalWrite(PIN_YELLOW_LED, LOW);
noTone(BUZZER_PIN);
}
// === Leitura do sensor LDR ===
int ldrAnalog = analogRead(LDR_ANALOG_PIN);
int ldrDigital = digitalRead(LDR_DIGITAL_PIN);
Serial.print("LDR Analógico: ");
Serial.println(ldrAnalog);
Serial.print("LDR Digital: ");
Serial.println(ldrDigital);
// Acende os LEDs brancos se estiver escuro
if (ldrAnalog < LDR_THRESHOLD || ldrDigital == LOW) {
digitalWrite(PIN_LUZ1_LED, HIGH);
digitalWrite(PIN_LUZ2_LED, HIGH);
} else {
digitalWrite(PIN_LUZ1_LED, LOW);
digitalWrite(PIN_LUZ2_LED, LOW);
}
delay(500);
}