Arduino Joystick Modülü İle Tahmin Oyunu Yapma

Şanslı arkadaşları hemen buraya alalım 🙂 evet arkadaşlar arduino ve joystick modülü ile oyun nasıl yaparız küük bir örnekle göreceğiz. İlk önce joystick modülü nasıl bağlanır

Joystick modülü üzerinde 5V -> Arduino 5v çıkış

Joystick modülü üzerinde GND -> Arduino GND

Joystick modülü üzerinde Vrx -> Arduino analog A1

Joystick modülü üzerinde Vry -> Arduino analog A0

Joystick modülü üzerinde SW -> Arduino dijital 2.pin

şeklinde bağlantımızı yapıyoruz. Modül x ve y eksenlerinde 0 dan 1024 e kadar olan eksenlerden oluşuyor hiç ellemediğiniz takdirde x ve y değerleri 500 olacak sağ sol yukarı ve aşağı yaptığınızda 0 yada 1024 e gidecektir.

Oyuna gelecek olursak 6 tane ledi arduinomuza bağlıyoruz. 3,4,5,6,7 ve 8. pinlere ledlerimizi bağlıyoruz. Ledin + ucuna küçük bir direnç eklemeyi unutmayalım. Ledleri ve joystick modülü bağladıktan sonra oyun hakkında biraz detay vereyim. Oyunun amacı bilgisayar 6 ledden bir tanesini rastgele seçmekte siz de bir tahmin yaparak bilgisayarın seçtiği ledi bulmaya çalışıyorsunuz. Led seçmek için joystick modülünü sağ sol yapıyoruz. Bir tanesini seçtikten sonra joystick butonuna basarak secimi yapıyoruz. biz seçimi yaptıktan sonra bilgisayar kendisi rastgele bir sayı üretiyor ve bizim sectigimizle karşılaştırıyor. Eğer bizim tahminimizle bilgisayarın seçimi aynıysa bizim puan hanemize 1 puan ekleniyor eğer aynı değilse bilgisayara 1 puan yazılıyor ilk kim 5 puana ulaşırsa o kazanıyor.

 

 

 

 

 

 

 

 

 

Evet Serial monitor de yukarıdaki çıktı gibi olacak. Zevkli bir oyun olduğumu düşünüyorum. Burada bilgisayarın rastgele bir sayı üretmesi için random fonksiyonunu kullandık kullanımı da şu şekilde

random(minimum,maximum-1) biz kodlarda random(3,9) yazdık nedeni ledlerin bağlandığı pin numaralarını referans aldık ama oyunu oynayan kişiye gösterirken 2 çıkartıp öyle gösterdik.Kodlara geçebiliriz artık kodlarda anlaşılmayan bir yer olursa yorumda belirtmeniz yeterli arkadaşlar gerekli açıklamayı yapabilirim.

int xPin = A1;
int yPin = A0;
int butonPin = 2;
int secilen;
int xKonum = 0;
int yKonum = 0;
int butonDurum = 0;
int led = 3;
int oyuncu;
int bilgisayar;
void setup() {
  Serial.begin(9600); 
  pinMode(xPin, INPUT);
  pinMode(yPin, INPUT);
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(8, OUTPUT);
  pinMode(butonPin, INPUT_PULLUP); 
  Serial.println("Arduino ruleti oyununa hosgeldiniz.");
  Serial.println("Oyun bilgisayara karsi oynanmaktadir. Amaciniz joystic yardımıyla bilgisayarın sectigi ledi tahmin etmek.");
  Serial.println("Tahmin ettiginiz led bilgisayarın sectigi led ile aynıysa siz kazanırsınız aksi takdirde bilgisayarin puan hanesine eklenir.");
  Serial.println("ilk 5 puani elde eden kazanir. Hadi oyuna...");
  Serial.println("Joystic ile bir led secip joyisic uzerindeki butona basin.");
}

void loop() {

  xKonum = analogRead(xPin);
  yKonum = analogRead(yPin);
  butonDurum = digitalRead(butonPin);
  digitalWrite(led,HIGH);
  if(xKonum >= 1000)
  {
    digitalWrite(led,LOW);
    if(led+1 <= 8)
    {
    led = led+1;
    digitalWrite(led,HIGH);
    }
  }
  if(xKonum <= 300)
  {
    digitalWrite(led,LOW);
    if(led-1 >= 3)
    {
    led = led-1;
    digitalWrite(led,HIGH);
    }
    
  }
  if(butonDurum == 0)
  {
     secilen = led;
     int ran = random(3,9);
     Serial.print("Bilgisayarin secimi=");
     Serial.println(ran-2);
     Serial.print("Sizin tahmiminiz=");
     Serial.println(secilen-2);
     if(secilen == ran)
     {
      Serial.println("Tebrikler tahmininiz dogru 1 puan kazandiniz.");
     oyuncu = oyuncu+1;
     }
     else
     {
     Serial.println("Uzgunum tahmininiz dogru degil 1 puan bilgisayara eklendi");
     bilgisayar = bilgisayar+1;
     }
       Serial.print("Sizin Puaniniz=");
  Serial.println(oyuncu);
  Serial.print("Bilgisayarin puani=");
  Serial.println(bilgisayar);
        Serial.println("-------------------------------------------------------------------");
  if(oyuncu == 5)
  {
    Serial.println("Tebrikler bilgisayari yendiniz... Tekrar oynamak icin led secip dugmeye basin...");
    Serial.println("-------------------------------------------------------------------");
    oyuncu = 0;
    bilgisayar = 0;
  }
  if(bilgisayar == 5)
  {
    Serial.println("Bilgisayar kazandi... Tekrar oynamak icin led secip dugmeye basin...");
    Serial.println("-------------------------------------------------------------------");
     oyuncu = 0;
    bilgisayar = 0;
  }
  }

  
  delay(100);
}

 

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir