Arduino ile Dijital Zar (LED ve Buton ile)

Arduino ile Dijital Zar (LED ve Buton ile)

Arduino ile Dijital Zar: LED ve Buton ile Eğlenceli Bir Proje

Merhaba Arduino severler! Bu blog yazımızda, basit ama eğlenceli bir projeye odaklanacağız: Arduino ile dijital zar yapımı! Bu proje, Arduino'nun temel prensiplerini anlamak için harika bir başlangıç noktasıdır ve hem öğrenciler hem de hobi olarak elektronik ile ilgilenenler için uygundur. Projemizde, bir buton ve 7 adet LED kullanarak, zar atma işlemini simüle edeceğiz. Hazırsanız, malzemelerimizi toplayalım ve başlayalım!

Gerekli Malzemeler

  • Arduino Uno (veya benzeri bir Arduino kartı)
  • 7 adet LED (Tercihen aynı renk)
  • 7 adet 220 Ohm direnç (LED'ler için akım sınırlayıcı)
  • 1 adet Buton
  • 1 adet 10k Ohm direnç (Buton için pull-down direnci)
  • Breadboard (Devreyi kurmak için)
  • Jumper kablolar (Bağlantıları yapmak için)

Devre Şeması ve Bağlantılar

Şimdi, malzemelerimizi topladığımıza göre, devremizi kuralım. Aşağıdaki listede bağlantıları adım adım görebilirsiniz:

  • LED'ler: Her bir LED'in anot ucunu (uzun bacak) bir 220 Ohm direnç ile bağlayın. Bu dirençlerin diğer uçlarını sırasıyla Arduino'nun dijital pinlerine bağlayın (Örneğin: 2, 3, 4, 5, 6, 7 ve 8 numaralı pinler). LED'lerin katot uçlarını (kısa bacak) ise breadboard üzerindeki bir hat üzerinden GND'ye (toprak) bağlayın.
  • Buton: Butonun bir bacağını Arduino'nun 9 numaralı dijital pinine bağlayın. Aynı bacağı, 10k Ohm'luk bir direnç üzerinden GND'ye bağlayın (pull-down direnci). Butonun diğer bacağını ise Arduino'nun 5V pinine bağlayın.

Arduino Kodu

Devremizi kurduktan sonra, sıra geldi Arduino kodunu yazmaya. Aşağıdaki kodu Arduino IDE'sine kopyalayın ve Arduino kartınıza yükleyin.


 // LED'lerin bağlı olduğu pinler
 const int ledPins[] = {2, 3, 4, 5, 6, 7, 8};
 const int numberOfLeds = 7;

 // Butonun bağlı olduğu pin
 const int buttonPin = 9;

 // Değişkenler
 int buttonState = 0;
 int diceValue = 0;

 void setup() {
  // LED pinlerini çıkış olarak ayarla
  for (int i = 0; i < numberOfLeds; i++) {
   pinMode(ledPins[i], OUTPUT);
  }

  // Buton pinini giriş olarak ayarla ve pull-up direncini etkinleştir
  pinMode(buttonPin, INPUT_PULLUP); //Dahili pull-up direnci kullanılıyor.
  //Serial.begin(9600);
  randomSeed(analogRead(0)); //Rastgele sayı üretimi için seed
 }

 void loop() {
  // Butonun durumunu oku
  buttonState = digitalRead(buttonPin);

  // Butona basıldıysa
  if (buttonState == LOW) { // Dahili pull-up direnci kullandığımız için LOW değerini kontrol ediyoruz.
   //Zar at ve değeri kaydet
   diceValue = random(1, 7); // 1 ile 6 arasında rastgele bir sayı üret

   // LED'leri yak
   lightUpDice(diceValue);

   // Kısa bir süre bekle
   delay(1000);

   // Tüm LED'leri söndür
   clearLeds();

   //Buton serbest bırakılana kadar bekle
   while(digitalRead(buttonPin) == LOW){
    //Bekle
   }
  }

 }

 // Zar değerine göre LED'leri yakan fonksiyon
 void lightUpDice(int value) {
  switch (value) {
   case 1:
    digitalWrite(ledPins[3], HIGH); // Ortadaki LED
    break;
   case 2:
    digitalWrite(ledPins[0], HIGH); // Sol üst
    digitalWrite(ledPins[6], HIGH); // Sağ alt
    break;
   case 3:
    digitalWrite(ledPins[0], HIGH); // Sol üst
    digitalWrite(ledPins[3], HIGH); // Orta
    digitalWrite(ledPins[6], HIGH); // Sağ alt
    break;
   case 4:
    digitalWrite(ledPins[0], HIGH); // Sol üst
    digitalWrite(ledPins[2], HIGH); // Sağ üst
    digitalWrite(ledPins[4], HIGH); // Sol alt
    digitalWrite(ledPins[6], HIGH); // Sağ alt
    break;
   case 5:
    digitalWrite(ledPins[0], HIGH); // Sol üst
    digitalWrite(ledPins[2], HIGH); // Sağ üst
    digitalWrite(ledPins[3], HIGH); // Orta
    digitalWrite(ledPins[4], HIGH); // Sol alt
    digitalWrite(ledPins[6], HIGH); // Sağ alt
    break;
   case 6:
    digitalWrite(ledPins[0], HIGH); // Sol üst
    digitalWrite(ledPins[1], HIGH); // Orta üst
    digitalWrite(ledPins[2], HIGH); // Sağ üst
    digitalWrite(ledPins[4], HIGH); // Sol alt
    digitalWrite(ledPins[5], HIGH); // Orta alt
    digitalWrite(ledPins[6], HIGH); // Sağ alt
    break;
  }
 }

 // Tüm LED'leri söndüren fonksiyon
 void clearLeds() {
  for (int i = 0; i < numberOfLeds; i++) {
   digitalWrite(ledPins[i], LOW);
  }
 }
 

Kodun Açıklaması

  • ledPins[]: LED'lerin bağlı olduğu pin numaralarını tutan bir dizi.
  • buttonPin: Butonun bağlı olduğu pin numarası.
  • setup(): Arduino'nun başlangıç ayarlarının yapıldığı fonksiyon. Bu fonksiyonda, LED pinleri çıkış olarak, buton pini ise giriş olarak ayarlanır. Ayrıca randomSeed fonksiyonu ile rastgele sayı üretimi için bir başlangıç değeri atanır.
  • loop(): Arduino'nun sürekli olarak çalıştığı fonksiyon. Bu fonksiyonda, butonun durumu kontrol edilir ve butona basıldığında zar atılır ve LED'ler yakılır.
  • lightUpDice(int value): Zar değerine göre LED'leri yakan fonksiyon. Bu fonksiyon, switch-case yapısı kullanarak, her bir zar değerine karşılık gelen LED'leri yakar.
  • clearLeds(): Tüm LED'leri söndüren fonksiyon.
  • INPUT_PULLUP: Arduino'nun dahili pull-up direncini kullanmak için kullanılan parametre. Bu sayede harici bir direnç kullanmak zorunda kalmayız. Butona basılmadığı zaman pini HIGH seviyesinde tutar ve butona basıldığında pini LOW seviyesine çeker.
  • randomSeed(analogRead(0)): Analog pininden rastgele bir değer okuyarak, rastgele sayı üretecinin başlangıç değerini ayarlar. Bu, her seferinde farklı rastgele sayılar elde etmemizi sağlar.

Çalışma Prensibi

Proje, bir butona basıldığında 1 ile 6 arasında rastgele bir sayı üretir ve bu sayıya karşılık gelen LED'leri yakar. LED'lerin konumu, klasik bir zar üzerindeki noktaların yerleşimini taklit eder. Butona basılmadığı sürece LED'ler sönük kalır.

Ek Öneriler

  • Farklı renklerde LED'ler kullanarak projeyi daha görsel hale getirebilirsiniz.
  • Zar atma hızını değiştirmek için delay() fonksiyonunun değerini değiştirebilirsiniz.
  • Serial Monitor üzerinden zar değerini görüntüleyebilirsiniz. (Kodda yorum satırı olarak bırakılan Serial.begin() satırını aktifleştirmeniz gerekir.)
  • Daha gelişmiş bir proje için, bir LCD ekran kullanarak zar değerini sayısal olarak da görüntüleyebilirsiniz.

Umarım bu proje size Arduino dünyasına harika bir giriş yapmanıza yardımcı olur. İyi eğlenceler!

Etiketler: arduino, dijital zar, led, buton, proje, elektronik, hobi, öğrenme, kodlama

```

0 yorum: