ESP32 ile Dahili Dokunmatik (Touch) Pinleri Kullanarak LED Kontrolü

👤 Yazar: ozcan 📅 Tarih: 04.06.2026 18:08 👁️ Görüntüleme: 13

ESP32 ile Dahili Dokunmatik (Touch) Pinleri Kullanarak LED Kontrolü

Bu uygulamada, projenize harici bir fiziksel buton eklemek yerine ESP32'nin üzerinde donanımsal olarak bulunan kapasitif dokunmatik sensör pinlerini (Touch Pins) kullanacağız. Sadece bir jumper kablonun ucuna dokunarak LED'i nasıl açıp kapatabileceğinizi ve statik elektrik parazitlerini nasıl filtreleyeceğinizi öğreneceksiniz.

1. Gerekli Malzemeler

2. Donanım Bağlantıları ve Dokunmatik Pin Mimarisi

ESP32 üzerinde kapasitif dokunma hassasiyetine sahip 10 adet pin (Touch0 - Touch9) bulunur. Bu pinler insan vücudunun taşıdığı doğal elektrik kapasitesini (elektrostatik yükü) ölçer. Bir kabloya dokunduğunuzda pindeki okuma değeri düşer. Kod mimarisi bu düşüşü algılayacak şekilde tasarlanmıştır.

ESP32 Dokunmatik Pin ve LED Bağlantı Şeması

Görsel 1: ESP32 Kapasitif Dokunmatik LED Kontrolü Şeması

3. Kapasitif Dokunmatik Kontrol Kod Bloğu

Aşağıdaki kod, touchRead() fonksiyonunu kullanarak pindeki kapasitans değerini sürekli örnekler. Boştayken yüksek (örn: 50-80) olan bu değer, parmağınızı kabloya dokundurduğunuzda hızla düşer (örn: 1000-1400). Belirlenen eşik değerinin (threshold) altına inildiğinde LED durumu tersine çevrilir.


#define TOUCH_PIN 4 // GPIO 4 aynı zamanda donanımsal TOUCH 0 pinidir
#define LED_PIN 2

int ledDurumu = LOW;
const int esikDegeri = 250; // Dokunma algılama sınırı (Ortama göre güncellenebilir)
boolean dokunulduMu = false;

void setup() {
  Serial.begin(115200); // Seri haberleşmeyi başlatıyoruz
  pinMode(LED_PIN, OUTPUT);
  digitalWrite(LED_PIN, ledDurumu);
}

void loop() {
  // Kapasitif pindeki anlık değeri oku
  int dokunmaVerisi = touchRead(TOUCH_PIN);

  // Okunan ham değeri seri port ekranına yazdır
  Serial.print("Dokunmatik Pin Degeri: ");
  Serial.println(dokunmaVerisi);

  // Eğer okunan değer eşik değerinin altındaysa ve tetikleme kilitli değilse
  if (dokunmaVerisi < esikDegeri && !dokunulduMu) {
    ledDurumu = !ledDurumu;           // LED durumunu tersine çevir
    digitalWrite(LED_PIN, ledDurumu);
    dokunulduMu = true;               // Tekrar tekrar tetiklenmeyi önlemek için kilitle
    delay(50);                        // Mekanik sıçrama filtresi
  }
  
  // Parmağınızı kablodan çektiğinizde kilit mekanizmasını aç
  if (dokunmaVerisi >= esikDegeri && dokunulduMu) {
    dokunulduMu = false;
    delay(50);
  }

  delay(100); // Seri ekranın çok hızlı akmasını engellemek için kısa bir gecikme
}
Kritik Kalibrasyon Notu:
  • Eşik Değeri Ayarı (Threshold): Dokunmatik pinlerin hassasiyeti, kullandığınız jumper kablonun uzunluğuna, breadboard kalitesine ve hatta odadaki neme göre değişiklik gösterebilir. ESP32'yi bilgisayara bağlayıp Arduino IDE üzerinden Seri Port Ekranını (Serial Monitor) açın. Baud hızını 115200 olarak ayarlayın. Kabloya dokunmadığınız anki değer ile dokunduğunuz anki değeri izleyerek esikDegeri limitini kendi devrenize göre tam olarak optimize edebilirsiniz.

💬 Yorumlar

Henüz yorum yapılmamış. İlk yorumu siz yapın!

Bir Yorum Bırakın

Güvenlik Kontrolü:

Yenidir.com
Sayfa Başı
Yenidir CMS V0.1