2016년 7월 1일 금요일

ArdunityApp

ArdunityApp은 유니티에서 아두이노 보드와 통신하기 위한 핵심 컴포넌트입니다.
이것의 주 역할은 다음과 같습니다.
  • 아두이노 보드와 유니티가 주고받는 데이터 인코딩/디코딩
  • 아두이노 스케치 생성
  • 유니티에서 아두이노 보드와 연결/해제
  • 데이터 통신 시 일어나는 일 모니터링

ArdunityApp이 Inspector View를 통해 제공하는 기능은 다음과 같습니다.
  • Export Sketch : 아두이노 스케치 생성 (Editor 모드 시만 가능)
  • Connect/Disconnect : 아두이노 연결/해제 (Play 모드 시만 가능)
  • FPS : 아두이노 보드와 통신 주기 출력 (Play 모드 시만 가능)
  • Sketch Options : 아두이노 스케치 생성에 필요한 옵션
  • Auto Connect : 유니티 Play 모드 시 자동 연결
  • Debug : 데이터 통신 시 일어나는 정보 화면 출력
  • Events : 통신 상황을 알려주는 이벤트

Sketch Options
ArdunityApp에서 설정할 수 있는 아두이노 스케치 옵션은 다음과 같습니다.
  • Stream Class : 아두이노 보드가 통신할 포트 선택 (배경 지식)
  • Baudrate : 아두이노 보드의 통신 속도 (배경지식)
  • PWM/ADC Resolution: Analog 입출력에 대한 해상도 설정
  • Timeout : 유니티와 연결 끊어짐을 판단하는 시간
이 옵션에 따라 아두이노 스케치의 내용이 달라지므로, 만약 수정했다면 다시 아두이노 스케치를 생성하고 보드에 업로드해야 합니다.

Events
ArdunityApp은 아두이노 보드와 통신 중 일어나는 일을 이벤트로 알려줌으로써 사용자가 적절한 대처를 할 수 있도록 도와줍니다.
ArdunityApp이 알려주는 이벤트는 다음과 같습니다.
  • On Connected : 아두이노 보드와 연결됨
  • On Connection Failed : 아두이노 보드와 연결 시도 실패
  • On Disconnected : 아두이노 보드와 연결 해제됨
  • On Lost Connection : 지정한 Timeout 시간 동안 아두이노 보드와 통신되지 않음
이 이벤트들은 UnityEvent로 구현되었으며, 사용 예시 코드는 다음과 같습니다.

using UnityEngine;
using System.Collections;
using Ardunity;

public class MyComponent : MonoBehaviour
{
 public ArdunityApp ardunityApp;

 void Awake()
 {
  ardunityApp.OnConnected.AddListener(OnConnected);
  ardunityApp.OnConnectionFailed.AddListener(OnConnectionFailed);
  ardunityApp.OnDisconnected.AddListener(OnDisconnected);
  ardunityApp.OnLostConnection.AddListener(OnLostConnection);
 }
 
 void OnConnected()
 {
  Debug.Log("On Connected");
 }

 void OnConnectionFailed()
 {
  Debug.Log("On Connection Failed");
 }

 void OnDisconnected()
 {
  Debug.Log("On Disconnected");
 }

 void OnLostConnection()
 {
  Debug.Log("On Lost Connection");
 }
}


FPS
ArdunityApp에서의 fps는 아두이노 보드와 통신 주기를 의미합니다. 이 값이 높을수록 통신이 더 자주 일어난다는 것이고, 유니티와 아두이노의 반응 속도가 빠르다는 의미입니다.
이 정보는 유니티/아두이노 결과를 최적화할 때 유용하게 사용될 수 있습니다.
fps에 영향을 주는 요소는 다음과 같습니다.
  • 통신 장치의 특성으로 발생하는 시간 지연
  • 주고받는 데이터 크기
  • 아두이노 보드의 처리 속도
  • 유니티의 실행 속도
일반적으로 무선보다는 유선이 유리하며, 아두이노 보드가 하드웨어 제어에 필요한 성능이 좋을 수록 높습니다. 그 외에 주고받는 데이터 크기를 줄이거나 유니티 실행 속도를 높이는 것도 방법이 될 수 있습니다.


댓글 없음:

댓글 쓰기