Eğitim Şart

Taşı delen suyun şiddeti değil sürekliliğidir!…

Arduino İle Rastgele Sayı Üretme: Zar Tutmaya Son!

Bu projede yabancı kaynaklarda gördüğüm bir projeyi gerçekleştirmeye çalıştım. Ne de olsa tavlacı millet biziz. Devre şeması oldukça basit. Çıkışları LED’lere bağlayıp (akım koruma dirençlerini unutmadan), bir buton ve buzzer koymak yeterli.

Ben de biraz fantazi ekledim tabiki. Örneğin butona paralel bir titreşim sensörü (tilt) ekleyip devre sallandığında da tetiklemesi sağlandı böylelikle. İsteyen devreyi sallar, isteyen butona basar. Butonu board üzerine bir de +5 volt hattı çekmemek için, GND hattına bağlayıp, ‘LOW’ iken devreyi çalıştırdık. Arduino’dan az çıkış kullanmak için LED’ler bağlanırken bir mantık yürütüldü. Örneğin 6 için yanacak olan 6 LED, ikili gruplar halinde bağlandı. Zaten tasarlamada o LED’lerin tek başına yanma ihtimali yok. Burada bu LED’lerin paralel bağlı olduğunu ve 220 R akım koruma direnci eklenirken, ortadaki tek LED’in parlaklığının fazla olmaması için orada 330R kullanıldı.

Yukarıdaki şekilden de anlaşılabileceği gibi toplam dört çıkı ile tüm zar kombinasyonları sağlanabildi. (Bunu ben yapmadım, incelediğim bir kaynakta gördüm, güzel düşünce) Buna göre zaten kodda da göreceğimiz gibi 1 için sadece 4 nolu çıkış, 2 için 2 nolu çıkış, 3 için 2 ve 4 numaralı çıkışlar birlikte, 4 için 1 ve 3 numaralı çıkışlar birlikte, 5 için; 1, 3 ve 4 nolu çıkışlar birlikte ve 6 için, 1, 2 ve 3 numaralı çıkışlar birlikte ‘HIGH’ yapılıyor. Tabi bunların hepsi bir zar için, diğer zar için bir dörtlü çıkışa daha ihtiyaç var. Tasarım hemen hemen bu kadar, kod üzerinden devam edelim.

Önce hangi tanımlamalar ve LED gruplandırmaları yapıldı. Hangi bacağın ne olduğu tanımlandı.

Daha sonra buton haricindeki tüm pinler çıkış olarak tanımlandı. Daha önce bahsettiğim gibi +5V hattını ve fazladan direnç kullanmamak için buton (tilt) pini ‘pull up’ olarak tanımlandı. Devrenin çalışıp çalışmadığını kontrol etmek (debugging) için yine seri ekran başlatıldı.

Loop kısmında önce buton pini okundu, basıldıysa; Arduino ‘random’ ile 3 rastgele sayı üretti. bu komutta parantez içindeki birinci değişken üretilecek sayını kaçtan başlayacağını, ikinci değişken ise kaçtan küçük olacağını gösteriyor. Ama ilginç olan başlangıç değeri (1) bu aralığa dahil edilirken sınır (7) dahil edilmiyor. Yani burada üretilen sayılar 1-6 arası. Peki neden mi 3 rastgele sayı? Birazdan görelim. Sonra zar efekti yaratabilmek için buzzer’dan aralıkları değişen sesler ve buna eşlik eden görsel efekt için de ortadaki LED’lerin yanıp söndüğü for döngüsü yapıldı. Burada hızlanan birkaç atma oluşturuldu. Tavla oynayanlara kıyak olsun, ‘gerçek zar tadı vermiyor!’ demesinler diye.

Dedim ya tavlacılara gerçek hissi yaşatmak gerekli diye. İşte yukarıda üç tane rastgele sayı üretilmesinin de amacı bu. Eğer üç sayı da birbirine eşit olursa ki bu 216 da bir ihtimal, buzzer’den bir uyarı sesi geliyor ve LED’ler yanmıyor. Bu da kırık zar fantazisi! bu 3 zar eşit edğilse;

Tahmin edeceğiniz gibi üretilen rastgele sayıya göre yanması gereken LED’lerin bağlı olduğu bacaklar ‘HIGH’ yapılarak üretilen sayı zar üzerinde gösteriliyor. Bunun için önce zar_1 sonra zar_2 için işlemler yapılıp. Daha sonra 3 saniye boyunca bu gösteriliyor. Bu bekleme sırasında tabiki tekrar butona basılamıyor.

Sonra tüm LED’ler söndürülüp, yeniden butona basılması (ya da devrenin sallanması) gerekiyor. Oldukça eğlenceli bir proje oldu. Ancak LED’ler tahmin ettiğimden fazla akım çekebilir. bunun için LED çıkışları basit birer transistör ile güçlendirilirse iyi olur. Ayrıca daha güzel bir tasarım ve kutulama ile işlevsel olacağına inanıyorum.

Yeni projelerde görüşmek üzere, sağlıcakla kalın…

Kaynak1:https://www.youtube.com/watch?v=SpFtlL1cdoY&ab_channel=CreativeStuff

Kaynak2:https://www.youtube.com/watch?v=D5q5sAIvuhA&ab_channel=RZtronics

Kaynak3:https://www.youtube.com/watch?v=RqLTKLLLv7g&t=174s&ab_channel=ArduinoMyLifeUp

%d blogcu bunu beğendi: