// --- PROYECTO: BASTÓN INTELIGENTE - VERSIÓN FINAL ENTREGABLE ---
const int pinTrig = 10; // Trigger al Pin 10
const int pinEcho = 9; // Echo al Pin 9
const int pinBuzzer = 3; // Buzzer al Pin 3
const int pinSwitch = 2; // Interruptor al Pin 2
const int pinLED = 13; // LED al Pin 13
const int pinLDR = A0; // LDR al Pin A0
void setup() {
Serial.begin(9600);
pinMode(pinTrig, OUTPUT);
pinMode(pinEcho, INPUT);
pinMode(pinBuzzer, OUTPUT);
pinMode(pinSwitch, INPUT);
pinMode(pinLED, OUTPUT);
Serial.println("SISTEMA LISTO PARA LA PROFESORA YULIMAR");
}
void loop() {
// Solo funciona si el interruptor está en ON
if (digitalRead(pinSwitch) == HIGH) {
// --- LÓGICA DEL SENSOR DE DISTANCIA ---
digitalWrite(pinTrig, LOW);
delayMicroseconds(2);
digitalWrite(pinTrig, HIGH);
delayMicroseconds(10);
digitalWrite(pinTrig, LOW);
long duracion = pulseIn(pinEcho, HIGH, 30000);
int distancia = duracion / 58;
// --- LÓGICA DEL SENSOR DE LUZ ---
int nivelLuz = analogRead(pinLDR);
// Activar LED si está oscuro (menos de 500)
if (nivelLuz < 500) { digitalWrite(pinLED, HIGH); }
else { digitalWrite(pinLED, LOW); }
// --- LÓGICA DEL SONIDO (De 2 a 50 cm) ---
if (distancia > 2 && distancia <= 50) {
if (distancia < 15) {
tone(pinBuzzer, 1500); // Pitido constante (peligro)
} else {
tone(pinBuzzer, 1000); // Pitido intermitente (aviso)
delay(100);
noTone(pinBuzzer);
delay(distancia * 5);
}
} else {
noTone(pinBuzzer); // Silencio si está lejos o hay error
}
// Monitor Serie para el video
Serial.print("D: "); Serial.print(distancia);
Serial.print(" cm | Luz: "); Serial.println(nivelLuz);
} else {
// Si el interruptor está en OFF, todo apagado
noTone(pinBuzzer);
digitalWrite(pinLED, LOW);
Serial.println("SISTEMA APAGADO");
delay(500);
}
}