// Pines
const int lm335Pin = A0; // Pin analógico donde está conectado el LM335
// Pines de los sensores ultrasónicos
const int trigPin1 = 13;
const int echoPin1 = 27;
const int trigPin2 = 12;
const int echoPin2 = 26;
const int trigPin3 = 14;
const int echoPin3 = 25;
// Pines de los LEDs
const int ledPins[] = {4, 33, 19, 18, 5, 17, 16, 15}; // Pines donde están conectados los LEDs
// Pin de la fotoresistencia
const int fotoresistenciaPin = 34;
// Umbral de distancia para los sensores ultrasónicos (en cm)
const int distanciaUmbral = 100;
// Función para medir la distancia de un sensor ultrasónico
long medirDistancia(int trigPin, int echoPin) {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
long duration = pulseIn(echoPin, HIGH);
long distance = duration * 0.034 / 2;
return distance;
}
void setup() {
// Iniciar comunicación serie
Serial.begin(115200);
// Configurar pines de los sensores ultrasónicos
pinMode(trigPin1, OUTPUT);
pinMode(echoPin1, INPUT);
pinMode(trigPin2, OUTPUT);
pinMode(echoPin2, INPUT);
pinMode(trigPin3, OUTPUT);
pinMode(echoPin3, INPUT);
// Configurar pines de los LEDs
for (int i = 0; i < 8; i++) {
pinMode(ledPins[i], OUTPUT);
}
}
void loop() {
// Medir la distancia de los tres sensores ultrasónicos
long distancia1 = medirDistancia(trigPin1, echoPin1);
long distancia2 = medirDistancia(trigPin2, echoPin2);
long distancia3 = medirDistancia(trigPin3, echoPin3);
// Verificar si alguna distancia es menor al umbral
if (distancia1 < distanciaUmbral || distancia2 < distanciaUmbral || distancia3 < distanciaUmbral) {
// Encender LEDs
for (int i = 0; i < 8; i++) {
digitalWrite(ledPins[i], HIGH);
}
} else {
// Apagar LEDs
for (int i = 0; i < 8; i++) {
digitalWrite(ledPins[i], LOW);
}
}
// Leer y mostrar la temperatura del LM335
int lecturaLM335 = analogRead(lm335Pin);
float voltaje = (lecturaLM335 / 4095.0) * 3.3; // Convertir la lectura analógica a voltaje (ESP32 tiene ADC de 12 bits)
float temperaturaKelvin = voltaje * 100; // El LM335 entrega 10 mV por Kelvin
float temperaturaCelsius = temperaturaKelvin - 273.15; // Convertir a Celsius
Serial.print("Temperatura: ");
Serial.print(temperaturaCelsius);
Serial.println(" °C");
// Leer y mostrar el valor de la fotoresistencia
// These constants should match the photoresistor's "gamma" and "rl10" attributes
const float GAMMA = 0.7;
const float RL10 = 50;
// Convert the analog value into lux value:
int valorLuz = analogRead(34);
float voltage = valorLuz / 1024. * 5;
float resistance = 2000 * voltage / (1 - voltage / 5);
float lux = pow(RL10 * 1e3 * pow(10, GAMMA) / resistance, (1 / GAMMA));
Serial.print("Luz ambiente: ");
Serial.println(valorLuz);
delay(1000); // Esperar 1 segundo antes de la siguiente lectura
}