Pada pagi hari yang cerah ini saya akan menjelaskan mengenai bagaimana caranya agar mikrokontroller bisa mengendalikan object yang ada di unity 3D, versi Unity 3D pada contoh adalah versi 3.3.0, object yang dikendalikan bisa bermacam-macam, bisa bola, kubus, atau lainnya. Pada contoh kali ini saya menggunakan sebuah bola yang terdapat lintasan berbentuk persegi panjang. Mikrokontroller mengendalikan arah gerak bola tersebut kemanapun ia pergi dengan menggunakan 4 buah tombol yang dipasang di mikrokontroller. Untuk lebih jelasnya berikut gambar dan programnya.
a. Arduino Uno
b. Program Arduino
const int button1 = 6;
const int button2 = 7;
const int button3 = 5;
const int button4 = 4;
void setup()
{
Serial.begin(9600);
pinMode(button1, INPUT);
pinMode(button2, INPUT);
pinMode(button3, INPUT);
pinMode(button4, INPUT);
digitalWrite(button1, HIGH);
digitalWrite(button2, HIGH);
digitalWrite(button3, HIGH);
digitalWrite(button4, HIGH);
}
void loop()
{
if(digitalRead(button1)== LOW)
{
Serial.println("1");
// Serial.flush();
delay(200);
}
if(digitalRead(button2)== LOW)
{
Serial.println("2");
// Serial.flush();
delay(200);
}
if(digitalRead(button3)== LOW)
{
Serial.println("3");
// Serial.flush();
delay(200);
}
if(digitalRead(button4)== LOW)
{
Serial.println("4");
// Serial.flush();
delay(200);
}
}
const int button2 = 7;
const int button3 = 5;
const int button4 = 4;
void setup()
{
Serial.begin(9600);
pinMode(button1, INPUT);
pinMode(button2, INPUT);
pinMode(button3, INPUT);
pinMode(button4, INPUT);
digitalWrite(button1, HIGH);
digitalWrite(button2, HIGH);
digitalWrite(button3, HIGH);
digitalWrite(button4, HIGH);
}
void loop()
{
if(digitalRead(button1)== LOW)
{
Serial.println("1");
// Serial.flush();
delay(200);
}
if(digitalRead(button2)== LOW)
{
Serial.println("2");
// Serial.flush();
delay(200);
}
if(digitalRead(button3)== LOW)
{
Serial.println("3");
// Serial.flush();
delay(200);
}
if(digitalRead(button4)== LOW)
{
Serial.println("4");
// Serial.flush();
delay(200);
}
}
c. Program C# Unity 3D
using UnityEngine;
using System.Collections;
using System.IO.Ports;
public class kendali : MonoBehaviour
{
SerialPort stream = new SerialPort("COM3", 9600);
public float speed = 1.5f;
string receivedData = "EMPTY";
void Update ()
{
stream.Open();
receivedData = stream.ReadLine();
stream.Close();
switch(receivedData )
{
case "1" :
transform.position += Vector3.left * speed * Time.deltaTime;
break;
case "2" :
transform.position += Vector3.right * speed * Time.deltaTime;
break;
case "3" :
transform.position += Vector3.forward * speed * Time.deltaTime;
break;
case "4" :
transform.position -= Vector3.forward * speed * Time.deltaTime;
break;
}
}
}
using System.Collections;
using System.IO.Ports;
public class kendali : MonoBehaviour
{
SerialPort stream = new SerialPort("COM3", 9600);
public float speed = 1.5f;
string receivedData = "EMPTY";
void Update ()
{
stream.Open();
receivedData = stream.ReadLine();
stream.Close();
switch(receivedData )
{
case "1" :
transform.position += Vector3.left * speed * Time.deltaTime;
break;
case "2" :
transform.position += Vector3.right * speed * Time.deltaTime;
break;
case "3" :
transform.position += Vector3.forward * speed * Time.deltaTime;
break;
case "4" :
transform.position -= Vector3.forward * speed * Time.deltaTime;
break;
}
}
}
d. Cara mengaktifkan Fitur Serial dan Program kendali adalah seperti berikut.
- Pertama dan yang sangat penting, untuk mengaktifkan fitur serial lakukanlah langkah berikut
- Pilih FILE -> BUILD SETTINGS
- Pilih windows -> Player setting -> Rubah Api Compatibility Level jadi .NET 2.0
- Supaya Camera mengikuti arah gerak bola tambahkan program character controller yang sudah tersedia di standart asset, hanya perlu cari dan letakkan di sub object bola
- Jika berhasil maka saat tombol ditekan, object bola akan bergerak
e. VIDEO HASILNYA
No comments:
Post a Comment