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ıra dışı 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
İşte malzeme listemiz sadece bu kadar. Bahsi geçen ürünlerin satın alma sayfalarına ulaşmak için isimlerine tıklamanız yeterlidir. Malzemeleri kendinize göre düzenlemeniz mümkün. Kırmızı yerine başka bir renk led kullanabilirsiniz, farklı renklerde ledleri bir arada tercih edebilirsiniz.
Ş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ı
#define DEBUG 0
// 6 consecutive digital pins for the LEDs
intfirst=2;
intsecond=3;
intthird=4;
intfourth=5;
intfifth=6;
intsixth=7;
// pin for the button switch
intbutton=12;
// value to check state of button switch
intpressed=0;
voidsetup(){
// set all LED pins to OUTPUT
for(inti=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
}
voidbuildUpTension(){
// light LEDs from left to right and back to build up tension
// while waiting for the dice to be thrown
// left to right
for(inti=first;i<=sixth;i++){
if(i!=first){
digitalWrite(i-1,LOW);
}
digitalWrite(i,HIGH);
delay(100);
}
// right to left
for(inti=sixth;i>=first;i--){
if(i!=sixth){
digitalWrite(i+1,LOW);
}
digitalWrite(i,HIGH);
delay(100);
}
}
voidshowNumber(intnumber){
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);
}
}
intthrowDice(){
// get a random number in the range [1,6]
intrandNumber=random(1,7);
#ifdef DEBUG
Serial.println(randNumber);
#endif
returnrandNumber;
}
voidsetAllLEDs(intvalue){
for(inti=first;i<=sixth;i++){
digitalWrite(i,value);
}
}
voidloop(){
// if button is pressed - throw the dice
pressed=digitalRead(button);
if(pressed==HIGH){
// remove previous number
setAllLEDs(LOW);
buildUpTension();
intthrownNumber=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 Motorobit'i takipte kalın!