// Exemplo de Sensor de luminosidade
#define LED 12
#define LDR_PIN 34
#define BOTAO 19 // Define o pino de leitura do fotoresistor
// LDR Characteristics
const float GAMMA = 0.7;
const float RL10 = 33;
int valorAnterior = 0; // Variável para armazenar o valor anterior
float lux = 0;
void setup() {
Serial.begin(115200);
Serial.println("Hello, ESP32!");
pinMode(LED, OUTPUT);
pinMode(BOTAO, INPUT);
}
void loop() {
int estado = digitalRead(BOTAO); // Ler o estado do botão
// Verifica se o botão (pushbutton) está pressionado
if (estado == HIGH) {
digitalWrite(LED, HIGH); // Acende o LED se o botão for pressionado
} else {
// Lê a iluminação
float iluminacao = fotoresistor();
// Acende o LED se a luminosidade estiver abaixo de 500
if (lux < 900) {
digitalWrite(LED, HIGH);
} else {
digitalWrite(LED, LOW);
}
}
delay(10); // Acelera a simulação
}
float fotoresistor() {
int analogValue = analogRead(LDR_PIN);
// Só faz a leitura se houver uma alteração no valor
if (analogValue != valorAnterior) {
float voltage = analogValue / 4096.0 * 3.3; // Corrige a divisão
float resistance = 2000 * voltage / (1 - voltage / 3.3);
lux = pow(RL10 * 1e3 * pow(10, GAMMA) / resistance, (1 / GAMMA));
Serial.print("Ambiente: ");
// Iluminação do escritório valor 500
Serial.print("Luminosidade: ");
Serial.println(lux);
// Atualiza o valor anterior com o novo valor
valorAnterior = analogValue;
}
return lux;
}