Bu proje, STM32F407-Discovery kartı üzerinde bir butona basıldığında LED'i 3 saniye boyunca yakan ve süre sonunda otomatik olarak söndüren bir uygulamadır.
Bu depo, basit giriş-çıkış işlemlerinin ötesine geçerek zamanlayıcı tabanlı kontrolü ve mekanik butonlarda oluşan gürültüyü engellemek için Yazılımsal Ark Söndürme (Software Debouncing) tekniğini gösterir.
Mekanik butonlara basıldığında, içindeki metal kontaklar milisaniyeler içinde defalarca çarpışır (buna "Bouncing" denir). İşlemci çok hızlı olduğu için bu titreşimleri birden fazla basış gibi algılayabilir.
Bu kod, bu hatayı önlemek için çift kontrol mekanizması kullanır:
- İlk Tespit: Butonun basıldığı (
RESETolduğu) algılanır. - Ark Söndürme (Debounce) Beklemesi:
HAL_Delay(200)ile 200 ms beklenir. Bu süre zarfında mekanik titreşimlerin durması ve sinyalin kararlı hale gelmesi sağlanır. - Doğrulama: 200 ms sonra buton hala basılı mı diye tekrar kontrol edilir.
- Eylem: Eğer hala basılıysa, bu gerçek bir basıştır. LED yakılır, 3 saniye beklenir ve söndürülür.
Projenin düzgün çalışması için .ioc dosyasında buton pininin (PA0) Pull-Up olarak ayarlanması gereklidir.
- Pin:
PA0->GPIO_Input - Resistor:
Pull-up
- 1x STM32F407-Discovery Geliştirme Kartı
- 1x LED
- 1x 220 Ohm Direnç
- 1x Push-Button
- Breadboard ve Jumper Kablolar
Buton bağlantısı Pull-Up mantığına göre (GND'ye) yapılmalıdır.
| Bileşen | STM32 Pini | Bağlantı Detayı |
|---|---|---|
| Buton | PA0 |
Bir bacak PA0, diğer bacak GND |
| LED | PA1 |
Anot -> PA1, Katot -> Direnç -> GND |
- Bu depoyu klonlayın (
git clone ...). - STM32CubeIDE yazılımını açın.
File > Open Projects from File System...seçeneği ile proje klasörünü seçin.- Proje içindeki
.iocdosyasını açarak pin yapılandırmasını inceleyebilirsiniz. - Derleyin (Build) ve ST-Link V2 üzerinden kartınıza yükleyin (Run).