Bu projede, bir push buton (basmalı anahtar) kullanarak LED’i açıp kapatmayı öğreneceğiz. Butona her basıldığında LED’in durumunu değiştireceğiz (açık→kapalı veya kapalı→açık).
Öğrenecekleriniz:
✔ Dijital giriş okuma
✔ Buton debouncing teknikleri
✔ LED durum değiştirme
✔ Pull-up/pull-down dirençleri
2. Gerekli Malzemeler
Malzeme | Adet | Açıklama |
---|---|---|
Arduino Uno | 1 | Mikrodenetleyici kartı |
Push Buton | 1 | Basmalı anahtar |
LED | 1 | Kontrol edilecek ışık kaynağı |
220Ω Direnç | 1 | LED koruma direnci |
10kΩ Direnç | 1 | Pull-down direnci |
Breadboard | 1 | Devre kurulum alanı |
Jumper Kablolar | 6-7 | Bağlantı için |
3. Devre Bağlantısı
Adım Adım Bağlantı Kılavuzu
- Buton Bağlantısı:
- Bir bacak → Arduino 5V
- Karşı bacak → 10kΩ direnç → GND
- Aynı bacak → Arduino D2 (Dijital Giriş)
- LED Bağlantısı:
- Anot (+) → 220Ω direnç → Arduino D13
- Katot (-) → GND
Devre Şeması:
5V → Buton → D2
Buton → 10kΩ → GND
D13 → 220Ω → LED → GND
// Pin tanımlamaları
const int buttonPin = 2; // Buton bağlı pin
const int ledPin = 13; // LED bağlı pin
// Değişkenler
int buttonState = 0; // Buton durumu
void setup() {
pinMode(ledPin, OUTPUT); // LED pinini çıkış olarak ayarla
pinMode(buttonPin, INPUT); // Buton pinini giriş olarak ayarla
}
void loop() {
// Buton durumunu oku
buttonState = digitalRead(buttonPin);
// Butona basıldıysa LED'i yak
if (buttonState == HIGH) {
digitalWrite(ledPin, HIGH);
} else {
digitalWrite(ledPin, LOW);
}
}
Donanım Bağlantıları:
- Buton: Bir ucu dijital 8 numaralı pine ve GND ye, diğer ucu ise 5V ‘ye bağlanacak.
- LED 1: Anot (uzun bacak) dijital 7 numaralı pine bağlanacak, katot (kısa bacak) ise bir dirençle GND’ye bağlanacak.
- LED 2: Anot (uzun bacak) dijital 4 numaralı pine bağlanacak, katot (kısa bacak) yine bir dirençle GND’ye bağlanacak.

int led1=7;
int led2=4;
int buton=8;
int durum=0;
void setup()
{
pinMode(buton,INPUT);
pinMode(led1,OUTPUT);
pinMode(led2,OUTPUT);
}
void loop()
{
durum=digitalRead(buton);
if(durum==1)
{
digitalWrite(led1,HIGH);
digitalWrite(led2,LOW);
}
else
{
digitalWrite(led1,LOW);
digitalWrite(led2,HIGH);
}
}
4. Gelişmiş Versiyon (Toggle Özellikli)
Butona her basıldığında LED’in durumunu değiştiren versiyon:
const int buttonPin = 2;
const int ledPin = 13;
int buttonState = 0;
int lastButtonState = LOW;
int ledState = LOW;
unsigned long lastDebounceTime = 0;
unsigned long debounceDelay = 50;
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(buttonPin, INPUT);
}
void loop() {
int reading = digitalRead(buttonPin);
if (reading != lastButtonState) {
lastDebounceTime = millis();
}
if ((millis() - lastDebounceTime) > debounceDelay) {
if (reading != buttonState) {
buttonState = reading;
if (buttonState == HIGH) {
ledState = !ledState;
digitalWrite(ledPin, ledState);
}
}
}
lastButtonState = reading;
}
5. Kod Açıklaması
- digitalRead(): Buton durumunu okur (HIGH/LOW)
- Debouncing: Buton titremelerini önlemek için zaman kontrolü
- Toggle Mantığı: LED durumunu tersine çevirir (! operatörü)
- millis(): Zamanlama fonksiyonu
6. Sık Karşılaşılan Sorunlar
Sorun | Çözüm |
---|---|
LED sürekli yanıyor | Pull-down direnci kullanın |
Buton çalışmıyor | Bağlantıları kontrol edin |
LED titriyor | Debounce süresini artırın (100ms) |
Toggle düzgün çalışmıyor | Değişkenleri doğru tanımlayın |
7. Sonuç
Bu projede Arduino ile:
✔ Dijital giriş okumayı
✔ Buton debouncing tekniklerini
✔ LED durum kontrolünü
✔ Toggle (aç/kapa) mantığını
öğrendik.