Unity Arduino Haberleştirme #1

0
Unity Arduino Haberleştirme #1

Merhabalar bugün Arduino ve Unity nasıl haberleştirilir bunun üzerine konuşmaya çalışacağız hemen başlayalım.

İlk öncelikle bu iki platformu haberleştirmek için seri port teknolojisini kullanacağız. Herkesin bilgisayarında usb (universal serial port) mevcut olduğu için zaten , buradan haberleşmemizi sağlayacağız. Seri port verileri adı üzerinde verileri seri bir şekilde arka arkaya gönderir bizde seri porttan okuduğumuz veya yazdığımız verilere göre çeşitli işlemler yapmış olacağız.

Benim aklımdaki iş bu ders için bir patlama efektimiz olsun ve biz bu patlama efektinin şiddetini potansiyometre yardımıyla artıralım azaltalım bunun için yapmamız gerek işlem adımları ise şöyle ;

Arduino kısmında potansiyometreden okuduğumuz veriyi seri port üzerinden göndereceğiz.
Unity kısmında gönderdiğimiz veriyi okuyacağız ve patlama efektinin şiddetini ayarlayacağız.
Yapacağımız işi daha iyi anlamak açısından videosuna bakabilirsiniz.

Şimdi ilk öncelikle Ardunio kısmına bakalım;

Burada öncelikle seri portu başlatmamız aktif hale getirmemiz gerekiyor bunu da Serial.begin fonksiyonu ile gerçekleştiriyoruz. Ben A0 (analog pin) pinini potansiyometrenin giriş pini olarak seçiyorum ve Setup fonksiyonumuzda başka herhangi bir işlemimiz kalmıyor. Loop fonksiyonunda ise potansiyometreden verimizi okuyoruz ve deger değişkenine atıyoruz.Sonra map fonksiyonu ile istediğimiz aralığa çektiğimiz değeri buyukluk değişkenine atıyoruz. Son olarak da buyukluk değişkenini seri porttan gönderiyoruz. Seri porttan gönderme işlemi bu kadar şimdi bu gönderdiğimiz değeri Unity kısmında okuyalım ve gerekli işlemleri yapalım.

 

Şimdi ise Unity kısmına bakıyoruz;

Unity kısmında ilk yapmamız gereken olmazsa olmaz System.IO.Port kütüphanesini eklemektir eğer eklemezsek zaten SerialPort sınıfına erişemeyiz burada kütüphaneyi ekledikten sonra bir hatayla karşılaşmamak için bir ayar yapmamız gerekiyor Unity ekranında edit -> Proje Settings -> Player dan sağ taraftaki inspector panelinden Optimization kısmıda Api Compatibility Level kısmını .NET 2.0 olarak seçmemiz gerekiyor. Bu adımları da atladıktan sonra artık koda geçebiliriz.

Ben büyütüp küçülteceğim gameobjecti atamak için bir Gameobject türünde bir değişken tanımladım. Daha sonra seri portu kullanabilmek için SerialPort sınıfından seri adında bir nesne türettim ve gerekli parametreleri sağladım.

Start fonksiyonuna geldiğimizde seri portu açtım aynı arduinoda Serial.begin ile yaptığım gibi. Daha sonra sahnede hangi objeyle iş yapacaksam o objeyi bulup obje değişkenimin içine attım(burada bu şekilde bir bulma işlemi şart değil sürükle bırak yolu ile de yapılabilirdi ben sadece bu yöntemi de göstermek istedim).

Update fonksiyonuna geldiğimizde seri.Readline ile seri porttaki veriyi satır şeklinde okuyorum fakat buradan okuduğum veri string tipinde olduğu için bunu tam sayı tipine çeviriyorum ve seriDeger değişkenini içine atıyorum işte hepsi bu kadar. Şimdi elde ettiğim veri ile istediğim her şeyi yapabilirim. Şimdi ise yukarıda bulmuş olduğum obje Gameobjecitinin scale oranını değiştiriyorum ve eklediğim efekt sayesinde sanki patlama şiddeti artıyormuş izlenimi veriyorum.

Burada Unity kodunu ben veriAl adında bir sınıf (C#) oluşturdum ve onun içine yazdım bu sınıfı bu scripti sahnede herhangi bir objenin üzerinde sürükleyip bıraktığınızda çalışacaktır. Potansiyometrenin arduinoya nasıl bağlandığını burada hemen yazayım potansiyometre sonuç itibariyle bir dirençtir 3 bacaklıdır baştaki ve sondaki bacaklara GND ve 5V bağlanır bu uçlar farketmemektedir ortadaki uçtan ise direnç değeri ölçülür bu orta bacağı da analog girişlerden dilediğimize bağlayıp değer elde edebiliriz.

Bu derslik bu kadar diğer derste bu sefer burada yaptığımızın tersini yapacağız ve Unity’den Arduino’ya veri göndereceğiz herkese iyi çalışmalar.

LEAVE A REPLY