Bu uygulamada, potansiyometreden okunan analog voltaj değerini (0V - 3.3V) dijital bir veriye dönüştürecek ve bu veriyi LED'in parlaklığını ayarlamak için PWM sinyaline dönüştüreceğiz.
ESP32'nin Dahili Analog-Dijital Dönüştürücüsü (ADC) varsayılan olarak 12-bit çözünürlüğe sahiptir (0 - 4095 arası değer okur). PWM (LEDC) birimini ise sinyal kararlılığı için yine 8-bit (0 - 255) olarak yapılandıracağız. Kod içerisindeki map() fonksiyonu bu iki farklı ölçeği birbirine eşitleyecektir.
3V3 pinine.GPIO 34 pinine (ADC1 kanalı).GND pinine.GPIO 2 pinine.220Ω direnç ile ESP32 GND pinine.
Görsel 2: Potansiyometre ile LED Parlaklık Kontrolü Şeması (.jpg)
Aşağıdaki kod, potansiyometreden aldığı anlık voltaj verisine göre PWM görev döngüsünü (duty cycle) dinamik olarak günceller.
#define POT_PIN 34 // Analog giriş pini (ADC1_CH6)
#define LED_PIN 2 // PWM çıkış pini
// PWM Yapılandırması
const int frekans = 5000;
const int ledKanali = 0;
const int cozunurluk = 8; // 8-bit çözünürlük (0 - 255)
void setup() {
// PWM kanal ayarları
ledcSetup(ledKanali, frekans, cozunurluk);
ledcAttachPin(LED_PIN, ledKanali);
// Potansiyometre pini giriş olarak ayarlanıyor
pinMode(POT_PIN, INPUT);
}
void loop() {
// Potansiyometreden 12-bit analog değer oku (0 - 4095)
int potDegeri = analogRead(POT_PIN);
// 12-bitlik değeri (0-4095), PWM için 8-bitlik değere (0-255) dönüştür
int parlaklik = map(potDegeri, 0, 4095, 0, 255);
// Hesaplanan parlaklık değerini PWM kanalına yaz
ledcWrite(ledKanali, parlaklik);
delay(15); // Kararlı okuma için kısa bir gecikme
}
ADC2 bloğuna bağlı pinleri (örn: GPIO 4, 12, 13, 14, 15, 25, 26, 27) kullanırsanız, ESP32'nin Wi-Fi özelliği aktifken analog okuma yapamazsınız. Bu yüzden her zaman ADC1 pinlerini (GPIO 32 - 39) tercih edin.Henüz yorum yapılmamış. İlk yorumu siz yapın!