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.
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.
GPIO 2; Katot (-) → 220Ω direnç → GND.GPIO 4 (Touch0) pinine bağlayın. Kablonun diğer ucundaki metal kısım sizin dokunmatik butonunuz olacaktır.
Görsel 1: ESP32 Kapasitif Dokunmatik LED Kontrolü Şeması
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
}
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.Henüz yorum yapılmamış. İlk yorumu siz yapın!