공부/Unity Engine

아두이노와 유니티 연동하기 (메모)

창작꾼 븐틴이 2023. 2. 26. 20:07
728x90
반응형

<글쓴이가 잊어버리지 않게 메모 느낌으로 작성합니다>

 

일단 유니티에서 Api Compatibility를 수정해줍니다!

어떤 곳에서는 NET.4~ 이런 거 사용하라고 하신 분도 있었는데

해당 프레임워크가 없는 상태여서 급하게 .NET Framework로 했더니 되더라구요?

 

스크립트를 생성하고, 코딩하기 전에

 

사용할 아두이노에 맞게 보드를 설정해주시고

포트도 확인해 주세용

 

그리고 (원하는) 시리얼 속도를 아두이노 setup()에 넣어 줍니다.

Serial.begin(115200);
 
유니티로 돌아와서
 

using System.IO.Ports;
using System.Threading;
using System;

를 해주시고,

 

새로운 SerialPort를 생성해줍니다.

 

.PortName에는 아까 보았던 포트의 이름을 넣어주고

.BaudRate에는 아까 넣은 시리얼속도를 기입해줍니다.

 

 

.Open과 .Close는 포트를 열고 닫는 거라 인지하고 있습니다 :D

(프로그램이 끝나면 아두이노도 꺼질 수 있게, private void OnApplicationQuit() 에 넣었어요)

열고 나면 시리얼 모니터는 보지 못하니 주의

 

기존 프로세싱 연동할 때도 

Serial.Read 나 Write 이런 형식으로 사용했던 것 같은데

유니티도 비슷하더라고요.

 

유니티 -> 아두이노 데이터 보내기

 ven.WriteLine("d");

 

어떤 상황을 설정하고, 그 상황이 되었을 때 (if or switch)

아두이노로 d를 보낸다.

 

그래서 아두이노에서는

 

if(Serial.available()){
    while(Serial.available()){
      char data = Serial.read();

받은 데이터를 data에 넣는다 (read)

그리고 이제 받은 데이터를 활용해, 상황에 맞게 이용하면 되겠죠

 

저는 예시로

유니티 내 캐릭터의 이동에 맞게

RGB LED 색이 변하게끔 조정했습니다.

 

728x90
반응형