Hepimiz zarlara aşinayız ve genellikle zar kullanarak LUDO veya SANP SIDI (Snake & Ladders) oyunu oynarız. Zar, tüm kenarlarında 6 farklı sayı bulunan, kara tahta tipinde dolu bir kutudur. Oyunları oynarken rastgele bir sayı elde etmek için bir yüzeye zar atıyoruz. Bu projede arduino uno board kullanarak dijital bir zar ile çoğaltmaya çalıştık. Zarı atmak yerine, burada 0 ile 6 arasında rastgele bir sayı elde etmek için bir düğmeye basmamız gerekiyor.
Gerekli Bileşenler
- Arduino UNO
- Yedi segmentli ekran (Ortak Anot)
- Basma düğmeleri
- Bağlantı telleri
- Ekmek tahtası
- 1 k direnç
- Güç kaynağı
Devre Şeması ve Açıklama
Yukarıdaki dijital zar devresinde gösterildiği gibi, tüm süreci kontrol etmek için arduino kullanılır. Devrede biri zarı başlatmak ve diğeri zarı sıfırlamak için olmak üzere iki düğme kullanılır. Arduino bu iki düğmeyi okur ve işlemi gerçekleştirir. Zar sonucunu görüntülemek için yedi bölümlü bir ekran kullanılır.
Arduino sürekli olarak rand () işlevini yürütür ve değerini geçici bir değişkene kaydeder. Zar düğmesine basıldığında, saklanan değer hesaplanır ve uygun yöntem kullanılarak yedi segmentte gösterilir (makalenin programlama bölümüne bakın).
Burada, bu zar devresinde, zar numaralarını görüntülemek için, doğrudan arduino dijital pin numaraları 6, 5, 4, 3, 2, 1, 0'a bağlı ortak bir anot yedi segmentli ekran kullanılır. Ve yedi segmentin ortak anot pini +5 volt 220 Ohm direnç ile bağlanmıştır. Toprağa göre dijital pin 14 (A0) ve 15 (A1) 'e bağlanan zar butonu ve reset butonu olmak üzere iki buton da bağlıdır.
Kod Açıklama
Bu projenin programlama kısmı, yedi segmentli ekranda rastgele dijital zar sayısını göstermede çok önemli bir rol oynamaktadır. Arduino, yedi segment gösterimi için herhangi bir kitaplık içermez. bu yüzden herhangi bir kitaplık kullanmadan tüm kodu oluşturduk.
Öncelikle yedi segmentli ekran için dijital pin seçiyoruz.
int pin = {6,5,4,3,2,1,0};
Bundan sonra 1, 2, 3, 4, 5 ve 6 olmak üzere 6 basamaklı bir zar dizisi oluşturuyoruz.
karakter rakamı = {0x02, 0x79, 0x24, 0x30, 0x19, 0x12};
Şimdi arduino pinini çıkış olarak kullanmak için yön verdik.
void setup () {for (int i = 0; i <7; i ++) pinMode (pin, OUTPUT); pinMode (zar, GİRİŞ); pinMode (sıfırlama, GİRİŞ); digitalWrite (zar, YÜKSEK); digitalWrite (sıfırlama, YÜKSEK);
Varsayılan olarak yedi segmentli ekranda sıfırı görüntülemek için bir kod gönderiyoruz.
int temp = 0x40; for (int i = 0; i <7; i ++) {int temp1 = temp & 0x01; digitalWrite (pin, temp1); temp = temp >> 1; }
Şimdi rastgele bir sayı elde etmek için rand () işlevini çalıştırıyoruz.
int temp = rand ();
Ve zar düğmesine bastığımızda program ilk önce bu rastgele sayıyı eşleştirir ve ardından bit bilge operatör kullanarak yedi segmentli ekrana numara gönderir.
eğer (digitalRead (zar) == 0) {int k = temp% 6; temp = basamak; Bekle(); for (int i = 0; i <7; i ++) {int temp1 = temp & 0x01; digitalWrite (pin, temp1); temp = temp >> 1; } gecikme (200); }
Sıfırlama düğmesi için de aynı.
Bu programda bir seferde tek bit gönderiyoruz. Burada, her bir segmente tek tek veri göndermek için 7 kez çalışan bir for döngüsü uyguluyoruz.