Name Last Update
code Loading commit data...
reports Loading commit data...
test Loading commit data...
README.md Loading commit data...

본 프로젝트는 새로운 피드백 요소가 추가된 게임 컨트롤러 제작을 주제로 2021학년도 1학기에 진행되었다. 열 피드백을 주제로, 각각 높은 온도와 낮은 온도를 어떻게 전달해야 할지에 주안점을 둔다.

Environment


Unity 2019.4.18f1

Arduino 1.8.15 (Windows)

Directory


code Arduino code를 포함한다.

reports 면담보고서, 기초조사서 등을 포함한다.

test 테스트를 위한 Unity 파일을 포함한다.

Code


PADMOTOR.ino

int Mosfet1 = 7 ; // 펠티어 연결 모스펫 7번포트
int Mosfet2 = 6 ; // 모터 연결 모스펫 6번포트
char data; // 데이터 입력 종류

void setup()
{
  Serial.begin(9600);
  pinMode(Mosfet1, OUTPUT); 
  pinMode(Mosfet2, OUTPUT);
}

연결 포트를 선언한다. Mosfet1은 펠티어에, Mosfet2는 모터로 연결되었다.

void loop()
{
  if(Serial.available()>0) // 입력된 데이터가 있다면
  {
    data = Serial.read(); // 데이터에 입력값 넣기
  }

  if(data == 'f') // f를 입력했을 경우 펠티어 모스펫 on
  {
    digitalWrite(Mosfet1,HIGH);
  }
  else if(data == 'd') // d를 입력했을 경우 펠티어 모스펫 off
  {
    digitalWrite(Mosfet1,LOW);
  }
  else if(data == 's') // s를 입력했을 경우 모터 on
  {
    digitalWrite(Mosfet2,HIGH);
  }
  else if(data == 'a') // a를 입력했을 경우 모터 off
  {
    digitalWrite(Mosfet2,LOW);
  }
}

각각 f, d, s, a의 값을 받아 ON/OFF를 처리하도록 했다.

SerialHandler.cs

public string portName = "COM1";
public int baudRate    = 9600;

아두이노와 Unity 사이는 유선으로 연결해, 시리얼 통신으로 진행했다.

Player.cs

Unity 내에서 Player의 움직임에 따라 아두이노로 데이터를 보내는 부분이다.

private void OnTriggerEnter(Collider other) {
    if (other.name == "ColdSphere") serialHandler.Write("s");
    else if (other.name == "HotSphere") serialHandler.Write("f");
}

private void OnTriggerExit(Collider other) {
    if (other.name == "ColdSphere") serialHandler.Write("a");
    else if (other.name == "HotSphere") serialHandler.Write("d");
}