1. Anasayfa
  2. Arduino

C# Arduino Joystick ile Uçak Oyunu

C# Arduino Joystick ile Uçak Oyunu
C# Arduino Joystick ile Uçak Oyunu
0

Daha önce C# Uçak Savaşı Oyunu projesini yapmıştık şimdi proje üzerinde biraz değişiklik yaparak işin içine Arduino Joystick Kullanımını katıyoruz yani uçağımızın yönlendirme ve ateş etme fonksiyonlarını Joystick ile gerçekleştireceğiz tabi bu değişiklikleri yapabilmek için ilk olarak yukarıdaki bağlantıdan oyunu indirmeniz gerekmekte .

C# kısmına geçmeden Ardunio ile Joystick kontrolü için bağlantı devremiz aşağıdaki gibi olmalı ve bağlantıları düzgün bir şekilde yaptıktan sonra Arduino kodlarımızı yüklüyoruz..

int xPin = A0; // A0-A5 analog pinlerinden herhangi birine bağlanabilir.
int butonPin = 2; // Joystick buton pini arduino bağlantısı (Joystick SW çıkışı)
int xPozisyonu = 0;
int butonDurum = 0;
 
void setup() {
Serial.begin(9600);
pinMode(xPin, INPUT);
pinMode(butonPin, INPUT_PULLUP); 
}
 
void loop() {
xPozisyonu = analogRead(xPin);
butonDurum = digitalRead(butonPin);
Serial.print(xPozisyonu);
Serial.print("*");
Serial.println(butonDurum);
delay(100);
}

C# örneğimizde ne gibi değişiklikler yaptık peki bir Menustrip ve timer ekledik Menustrip ile arduino ile bağlantı yapılacak olan portu seçiyoruz bunun için gerekli kodlar…:

        private void toolStripComboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {         
           
            try
            {
                sPort.PortName = toolStripComboBox1.Text; //txtPort içerisindeki değeri seri port ismimize atıyoruz. İkiside string, convert'e gerek yok.
                if (!sPort.IsOpen) //şart sağlanıyorsa seri port açılarak aşağıdaki işlemler gerçekleşiyor
                {
                    sPort.Open();
                    toolStripTextBox1.Text= "Bağlantı Kuruldu";
                    toolStripTextBox1.ForeColor = Color.Green;
                    timer2.Start(); //timerı başlatıyoruz

                }//https://www.bilisimogretmeni.com
            }
            catch (Exception) //herhangi bir hataya karşı try/catch bloğunu kullanıyoruz
            {
                toolStripTextBox1.Text = "Bağlantı Kurulamadı";
                toolStripTextBox1.ForeColor = Color.Red;
            }
        }

Eğer arduino ile başarılı bir şekilde bağlantı kurulduysa sıra geldi yön kontrollerini yapmaya bunun için gerekli kodlar aşağıda C# ile arduinodan gelen verileri okuyup yönlendirme işlemini yapıyoruz…

        private void timer2_Tick(object sender, EventArgs e)
        {
            try
            {
                
                string sonuc = sPort.ReadLine();
                string[] pot = sonuc.Split('*');               
                int x, b;
                x = Convert.ToInt32(pot[0]);
                b = Convert.ToInt32(pot[1]);
                if (x < 505)                   
                {
                    
                    if (bucak.Location.X <= 0) { solHareket = 0; } else { solHareket = -5; }
                }
                else if (x> 520)
                {
                  
                    if (bucak.Location.X >= 512)
                    {
                        solHareket = 0;
                    }
                    else
                    {
                        solHareket = 5;
                    }
                }//https://www.bilisimogretmeni.com                              
                else if (b==1)
                {

                    if (ates == false)
                    {
                        mermiHiz = 8;
                        mermi.Left = bucak.Left + 40;
                        mermi.Top = bucak.Top;
                        ates = true;
                    }
                }
                else { solHareket = 0; }
                sPort.DiscardInBuffer();
                System.Threading.Thread.Sleep(60);

            }
            catch (Exception)
            {

            }
        }

Bu İçeriğe Tepkin Ne Oldu?
  • 1
    ba_ar_l_
    Başarılı
  • 0
    gayet_yi
    Gayet İyi
  • 9
    te_ekk_rler
    Teşekkürler
  • 2
    anlamad_m
    Anlamadım
  • 11
    yetersiz
    Yetersiz
Subscribe
Bildir
guest

Bu site, istenmeyenleri azaltmak için Akismet kullanıyor. Yorum verilerinizin nasıl işlendiği hakkında daha fazla bilgi edinin.

0 Yorum
Inline Feedbacks
View all comments