Bu eğitimde, bir ESP32 mikrodenetleyicisi ile bir butona basarak bir LED'i nasıl açıp kapatacağımızı öğreneceğiz. Proje, butonun durumunu nasıl okuyacağımızı ve LED'i buna göre nasıl kontrol edeceğimizi gösterecektir. Butona basıldığında LED yanacak, bırakıldığında ise sönecektir. Bu, ESP32 kullanan birçok etkileşimli proje için temel bir kavramdır.
ESP32, yerleşik Wi-Fi ve Bluetooth özelliklerine sahip güçlü bir mikrodenetleyicidir ve çeşitli IoT uygulamaları için uygundur. Bu derste, dirençler ve LED'ler gibi temel bileşenleri içeren SunFounder ESP32 Başlangıç Kiti'ndeki ESP32'yi kullanarak basit bir devre oluşturacağız. Bağlantı ve kod hakkında ayrıntılı bir açıklama için lütfen videoya bakın (videoda 00:00).
Donanım Açıklaması
Bu projenin temel bileşenleri ESP32 mikrodenetleyicisi, bir buton, bir LED ve dirençlerdir. ESP32, projenin beyni olarak görev yapar ve butonun durumuna göre LED'i kontrol eder. Buton, kullanıcıların devre ile etkileşime girmesini sağlarken, LED butona basıldığında görsel geri bildirim sağlar.
Buton, basıldığında devreyi kapatarak akımın akmasını sağlar. Bu işlem, ESP32'nin belirlenen giriş pinine YÜKSEK bir sinyal gönderir ve bu sinyal kod içinde okunabilir. Butona bağlı direnç, butona basılmadığında pinin tanımlı bir duruma sahip olmasını sağlayarak düzensiz davranışı önler.
Dirençli buton
Bağlantı Talimatları
Devreyi bağlamak için, LED'in uzun bacağını (anot) 220 ohm'luk bir dirence bağlayarak başlayın. Direncin diğer ucunu ESP32 üzerindeki GPIO 26 pinine bağlayın. LED'in kısa bacağı (katot) toprağa bağlanmalıdır. Ardından butonu alın ve bir tarafını kart üzerindeki 3.3V güç kaynağına bağlayın. Butonun diğer tarafı GPIO 14 pinine bağlanır.
Ayrıca, butona basılmadığında pinin DÜŞÜK okumasını sağlamak için GPIO 14 pininden toprağa 10k ohm'luk bir direnç yerleştirin. Son olarak, ESP32'den gelen toprak kablosunu breadboard üzerindeki ortak toprağa bağlayın. Bu kurulum, ESP32'nin buton durumunu okumasına ve LED'i buna göre kontrol etmesine olanak tanır.
Kod Örnekleri ve Açıklaması
Programın çekirdeği, buton ve LED için pin numaralarını sabitler kullanarak tanımlamakla başlar. Bu, programın yürütülmesi boyunca pin atamalarının değişmeden kalmasını sağlar.
// pin numaralarını ayarla
const int buttonPin = 14; // Buton pini
const int ledPin = 26; // LED pini
setup() fonksiyonunda, seri monitörü başlatır ve buton pinini giriş olarak ayarlarken LED pinini çıkış olarak yapılandırırız. Bu, ESP32'yi butondan okumaya ve LED'i kontrol etmeye hazırlar.
loop() fonksiyonu içinde, program sürekli olarak buton durumunu okur ve seri monitöre yazdırır. Butona basılırsa LED açılır; aksi takdirde kapatılır. Bu mantık, LED'i butonun durumuna göre değiştirmek için gereklidir.
Bu temel işlevsellik, LED'in butona doğrudan tepki vermesini sağlar. Proje ve tam kod hakkında daha fazla ayrıntı için lütfen sağlanan videoya bakın (videoda 14:00).
Gösterim / Beklentiler
Bağlantı tamamlandığında ve kod yüklendiğinde, butona basmak LED'i yakmalı ve bırakmak LED'i söndürmelidir. Bu davranış, buton durumunun doğru okunduğunu doğrular. LED beklenildiği gibi tepki vermezse, bağlantıları kontrol edin ve butonun düzgün çalıştığından emin olun.
Test sırasında, buton durumu okumaları için seri monitörü gözlemlediğinizden emin olun. Butona basıldığında '1' ve bırakıldığında '0' görmelisiniz. Okumalar beklenmedik şekilde dalgalanıyorsa, bu bir bağlantı sorununa veya kodda ek sekme (debouncing) mantığı ihtiyacına işaret edebilir.
// set pin numbers
const int buttonPin = 14; // Button pin
const int ledPin = 26; // LED pin
// variable for storing the button status
int buttonState = 0;
void setup() {
Serial.begin(115200);
// initialize the button pin as an input
pinMode(buttonPin, INPUT);
// initialize the LED pin as an output
pinMode(ledPin, OUTPUT);
}
void loop() {
// read the state of the button value
buttonState = digitalRead(buttonPin);
Serial.println(buttonState);
delay(100);
// if the button is pressed
if (buttonState == HIGH) {
// turn LED on
digitalWrite(ledPin, HIGH);
} else {
// turn LED off
digitalWrite(ledPin, LOW);
}
}
Açıklama: Amazon Ortaklığı olarak, nitelikli satın alımlardan kazanç sağlıyoruz. Bu, bir bağlantıya tıklayıp satın alma işlemi yaptığınızda, size ek bir maliyet olmadan küçük bir komisyon alabileceğimiz anlamına geliyor.