Bu uygulamada, potansiyometre projesinde öğrendiğimiz Analog-Dijital Dönüştürücü (ADC) ve PWM donanımlarını bir arada kullanarak, ortamdaki ışık miktarına göre parlaklığını otomatik ayarlayan akıllı bir gece lambası sistemi kuracağız.
LDR bir direnç türüdür ve değişen direncini gerilime dönüştürmek için 10kΩ direnç ile voltaj bölücü devre kurulmalıdır. Wi-Fi çakışması yaşamamak için analog okuma yine ADC1 bloğundan yapılacaktır.
GPIO 35 (ADC1). Aynı zamanda 10kΩ direnç GPIO 35 ile GND arasına bağlanır.GPIO 2; Katot (-) → 220Ω direnç → GND.
Görsel 1: ESP32 LDR Akıllı Gece Lambası Şeması
Aşağıdaki kod, ortam karardıkça (LDR üzerindeki voltaj düştükçe) LED parlaklığını kademeli olarak artıran ters orantılı bir algoritma içerir.
#define LDR_PIN 35
#define LED_PIN 2
// PWM Yapılandırması
const int frekans = 5000;
const int ledKanali = 0;
const int cozunurluk = 8; // 8-bit (0 - 255)
void setup() {
ledcSetup(ledKanali, frekans, cozunurluk);
ledcAttachPin(LED_PIN, ledKanali);
pinMode(LDR_PIN, INPUT);
}
void loop() {
// LDR'den analog veriyi oku (0 - 4095)
int isikDegeri = analogRead(LDR_PIN);
// Ters Orantı Map Filresi: Ortam karardıkça (0'a yaklaştıkça) LED parlasın (255'e yaklaşsın)
int parlaklik = map(isikDegeri, 0, 4095, 255, 0);
// Belirli bir aydınlık eşiğinin üzerinde LED'i tamamen kapat (Kararlılık filtresi)
if (isikDegeri > 3500) {
ledcWrite(ledKanali, 0);
} else {
ledcWrite(ledKanali, parlaklik);
}
delay(30); // Okuma stabilizasyonu
}
map(isikDegeri, 0, 4095, 255, 0) sınır değerlerini veya eşik kontrolü olan 3500 değerini kendi ortamınıza göre kalibre etmeniz gerekebilir.Henüz yorum yapılmamış. İlk yorumu siz yapın!