Elektronik Zar Yapımı | Arduino ve Led Kullanarak Zar Yap
Bu yazıda sizlere herkesin kolaylıkla yapabileceği, başlangıç seviyesi bir Arduino projesi olan, Elektronik Zar Yapımı projesinden bahsedeceğiz. Çok düşük bir maliyetle hayata geçirebileceğiniz bu projenin malzemeleri de oldukça az. Arduino konusunda kendinizi geliştirmeye çalışırken hep aynı projeleri görmekten sıkıldıysanız, bu sıradışı proje tam size göre 🙂
Led yakıp söndürmekle ilgili pek çok proje var. Ancak bunların çoğunun temelde bir amacı yok 🙂 Biz bu projede ledlerin yanıp sönmesine bir anlam kattık. Projemizde; breadboard üzerine dizili olan 6 adet led bit buton yardımıyla yakılıyor. Rastgele 1-6 arasındaki led aynı anda yanıyor ve böylece zar atma işlemini dijital hale getirmiş oluyoruz. Gelin çok uzatmadan malzeme listesine ve projenin yapılışına geçelim.
Malzeme Listesi
- Arduino Uno
- 6ad. 5mm Led
- Breadboard
- 6ad. 220 ohm Direnç
- 1k ohm Dirençler
- Push Buton
- Erkek – Erkek Jumper Kablolar
İşte malzeme listemiz sadece bu kadar. Şimdi bu malzemeleri nasıl birbirine bağlayacağız ona bakalım.
Elektronik Zar Yapımı Bağlantı Şeması
Yukarıda yer alan bağlantı şemasına sağdık kalarak bağlantımızı yapacağız. Aşağıda yer alan Arduino kodları bu bağlantı şeması ile uyumlu olduğundan dolayı buradaki pinleri kullanarak bağlantı yapmamız önemli. Aksi takdirde bu kodlar çalışmayacaktır.
Arduino Kodları
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 |
#define DEBUG 0 // 6 consecutive digital pins for the LEDs int first = 2; int second = 3; int third = 4; int fourth = 5; int fifth = 6; int sixth = 7; // pin for the button switch int button = 12; // value to check state of button switch int pressed = 0; void setup() { // set all LED pins to OUTPUT for (int i=first; i<=sixth; i++) { pinMode(i, OUTPUT); } // set buttin pin to INPUT pinMode(button, INPUT); // initialize random seed by noise from analog pin 0 (should be unconnected) randomSeed(analogRead(0)); // if we're debugging, connect to serial #ifdef DEBUG Serial.begin(9600); #endif } void buildUpTension() { // light LEDs from left to right and back to build up tension // while waiting for the dice to be thrown // left to right for (int i=first; i<=sixth; i++) { if (i!=first) { digitalWrite(i-1, LOW); } digitalWrite(i, HIGH); delay(100); } // right to left for (int i=sixth; i>=first; i--) { if (i!=sixth) { digitalWrite(i+1, LOW); } digitalWrite(i, HIGH); delay(100); } } void showNumber(int number) { digitalWrite(first, HIGH); if (number >= 2) { digitalWrite(second, HIGH); } if (number >= 3) { digitalWrite(third, HIGH); } if (number >= 4) { digitalWrite(fourth, HIGH); } if (number >= 5) { digitalWrite(fifth, HIGH); } if (number == 6) { digitalWrite(sixth, HIGH); } } int throwDice() { // get a random number in the range [1,6] int randNumber = random(1,7); #ifdef DEBUG Serial.println(randNumber); #endif return randNumber; } void setAllLEDs(int value) { for (int i=first; i<=sixth; i++) { digitalWrite(i, value); } } void loop() { // if button is pressed - throw the dice pressed = digitalRead(button); if (pressed == HIGH) { // remove previous number setAllLEDs(LOW); buildUpTension(); int thrownNumber = throwDice(); showNumber(thrownNumber); } } |
Buradaki kodun temel mantığını anlamaya çalışarak Arduino kodlarının çalışma mantığını da daha sağlıklı kavrayabilirsiniz. Rastgele alınan bir sayı neticesinde if döngüsü ile formülize edilen bu projede, if(eğer) kullanılarak elde edilen sayı neticesinde şu kadar ledi yak denmiştir. Yani böylece elektronik bir zara sahip olmuş oluyoruz. Butona basıldığı anda 1 – 6 arasında led yakarak bize zarın sonucunu veriyor.
Elektronik Zar Yapımı projemizin sonuna geldik. Bu ve benzeri yenilikçi projeleri herkesten önce keşfetmek için Bilinti‘yi takipte kalın!