#define ldrPin 35
#define PIN_TRIG 25
#define PIN_ECHO 32
#define buttomPin 5
bool buttomState = 0;
bool buttomLastState = 0;
bool sytemState = false;
#define ledPin 19
#define relayPin 17
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
Serial.println("Hello, ESP32!");
pinMode(ldrPin, INPUT);
pinMode(PIN_TRIG, OUTPUT);
pinMode(PIN_ECHO, INPUT);
pinMode(buttomPin, INPUT_PULLDOWN);
buttomState = digitalRead(buttomPin);
pinMode(ledPin, OUTPUT);
pinMode(relayPin, OUTPUT);
}
void loop() {
buttomLastState = buttomState;
buttomState = digitalRead(buttomPin);
// put your main code here, to run repeatedly:
// Essas constantes devem corresponder aos atributos "gama" e "rl10" do fotoresistor
const float GAMMA = 0.7;
const float RL10 = 50;
if(buttomState == 0 && buttomLastState == 1){
sytemState = !sytemState;
}
Serial.println(buttomState);
// Converte o valor analógico em valor lux:
int analogValue = analogRead(ldrPin);
// Serial.println("Analog Value: " + String(analogValue));
float voltage = analogValue / 1024. * 5;
float resistance = 2000 * voltage / (1 - voltage / 5);
float lux = pow(RL10 * 1e3 * pow(10, GAMMA) / resistance, (1 / GAMMA));
// Serial.println("Lux Value: " + String(lux));
// Inicia uma nova medição:
digitalWrite(PIN_TRIG, HIGH);
delayMicroseconds(10);
digitalWrite(PIN_TRIG, LOW);
// Leia o resultado:
int duration = pulseIn(PIN_ECHO, HIGH);
float distance = duration / 58;
// Serial.print("Distância em CM: ");
// Serial.println(distance);
// Serial.print("Distância em polegadas: ");
// Serial.println(duration / 148);
if(sytemState){
Serial.println("Sistema Ligado");
Serial.print("Distância em CM: ");
Serial.println(distance);
Serial.println("Lux Value: " + String(lux));
if(distance < 80 && lux < 90){
digitalWrite(ledPin, HIGH);
digitalWrite(relayPin, LOW);
}else{
digitalWrite(ledPin, LOW);
digitalWrite(relayPin, HIGH);
}
} else{
Serial.println("Sistema Desligado");
digitalWrite(relayPin, LOW);
digitalWrite(ledPin, LOW);
}
delay(10); // this speeds up the simulation
}