Arduino Button ile Led Kontrolü

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

MalzemeAdetAçıklama
Arduino Uno1Mikrodenetleyici kartı
Push Buton1Basmalı anahtar
LED1Kontrol edilecek ışık kaynağı
220Ω Direnç1LED koruma direnci
10kΩ Direnç1Pull-down direnci
Breadboard1Devre kurulum alanı
Jumper Kablolar6-7Bağlantı için

3. Devre Bağlantısı

Adım Adım Bağlantı Kılavuzu

  1. Buton Bağlantısı:
    • Bir bacak → Arduino 5V
    • Karşı bacak → 10kΩ direnç → GND
    • Aynı bacak → Arduino D2 (Dijital Giriş)
  2. 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ı:

  1. Buton: Bir ucu dijital 8 numaralı pine ve GND ye, diğer ucu ise 5V ‘ye bağlanacak.
  2. LED 1: Anot (uzun bacak) dijital 7 numaralı pine bağlanacak, katot (kısa bacak) ise bir dirençle GND’ye bağlanacak.
  3. 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ı

  1. digitalRead(): Buton durumunu okur (HIGH/LOW)
  2. Debouncing: Buton titremelerini önlemek için zaman kontrolü
  3. Toggle Mantığı: LED durumunu tersine çevirir (! operatörü)
  4. millis(): Zamanlama fonksiyonu

6. Sık Karşılaşılan Sorunlar

SorunÇözüm
LED sürekli yanıyorPull-down direnci kullanın
Buton çalışmıyorBağlantıları kontrol edin
LED titriyorDebounce süresini artırın (100ms)
Toggle düzgün çalışmıyorDeğ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. 

guest
0 Yorum
Eskiler
En Yeniler Beğenilenler
Inline Feedbacks
View all comments