README.md
2.19 KB
본 프로젝트는 새로운 피드백 요소가 추가된 게임 컨트롤러 제작을 주제로 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");
}