PowerPoint 프레젠테이션

Similar documents
PowerPoint 프레젠테이션

고객 카드

졸업작품 2 차보고서 Graduation Project 내자전거를지켜줘! 이름학번연락처이메일 이주희 김민선 지도교수 :

< 제누이노스타트키트 > 사용설명서 목차 1. Arduino IDE 설치하기 2. Genuino 연결및 Arduino IDE 셋팅하기 3. 센서설명및연결도, 예제소스 1

Motor

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

아두이노코딩및프로젝트실습 v3.0 김영준저 공학박사, 목원대학교겸임교수 前 Microsoft 수석연구원 헬로앱스

<4D F736F F F696E74202D20325FBEC6B5CEC0CCB3EB20B1E2C3CABDC3C7E82E BC8A3C8AF20B8F0B5E55D>

아두이노코딩및프로젝트실습 v2.0 김영준저 공학박사, 목원대학교겸임교수 前 Microsoft 수석연구원 헬로앱스

슬라이드 1

Microsoft PowerPoint - es-arduino-lecture-03

고급 프로그래밍 설계

01 3 차원가상공간의이해 학습목표 3 차원가상공간의구성원리를이해할수있다. 3 차원가상공간상에물체를스스로추가할수있다. 실습개요 3D 박스모양을추가해본다. 3차원위치개념을실습해본다. 모양의옵션을추가하는방법을실습해본다. 특수효과와재질을활용하여콘텐츠의내용을다양하게변화시켜본다

슬라이드 1

Mango-IMX6Q mfgtool을 이용한 이미지 Write하기

AL181N,ÇѱÛ,Ù+An+pip[D¿ë

PowerPoint Presentation

제8장 자바 GUI 프로그래밍 II

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >


Microsoft PowerPoint - Java7.pptx

EX BAND

02 C h a p t e r Java

PowerPoint Presentation

Visual Basic 반복문

MaxstAR SDK 2.0 for Unity3D Manual Ver

161117_EX Phone stick_manual

Microsoft PowerPoint - 14주차 강의자료

윈도우시스템프로그래밍

쉽게 풀어쓴 C 프로그래밍


PowerPoint 프레젠테이션

1 SW

SW

ez-md+_manual01

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

시프트 레지스터 Shift Resistor 자, 이제 LED MATRIX 8x8 Board를 마이크로컨트롤러에 연결된 3개의 선으 로 제어해 보자. 이는 마이크로컨트롤러의 포트를 확장함과 동시에 프로그램 으로 제어를 더 쉽게 한다는 장점이 있다. 물론 포트를 절약하게

Analytics > Log & Crash Search > Unity ios SDK [Deprecated] Log & Crash Unity ios SDK. TOAST SDK. Log & Crash Unity SDK Log & Crash Search. Log & Cras

H3250_Wi-Fi_E.book

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

PowerPoint Presentation

DocsPin_Korean.pages


hd1300_k_v1r2_Final_.PDF

PowerPoint 프레젠테이션

유니티 변수-함수.key

4S 1차년도 평가 발표자료

PowerPoint 프레젠테이션

1. 제품규격및특징 구분 규격및특징 입력전압 DC 12~30V 모터구동방식 Bipolar 방식 최대모터전류 Max 3.0A 초기설정정지전류 :4(0.46A), 구동전류 :18(1.75A) 분주비 0(x256), 1(x128), 2(x64), 3(x32), 4(x16),

Microsoft PowerPoint - chap01-C언어개요.pptx

1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과

1. 제품 구성 구분 분류1 분류2 Engine NetDroneUnity SDK Tools Express.NET Template 비고 크로스 플렛폼 전체 소스 DataConverter CSV to Binary CSV 변환 도구 DummyClient RTCP, RUDP

차시 AS_02 대상 교육주제아두이노 LED 및버튼제어프로젝트교육시간 120 분 1. 아두이노를이용하여 LED 를제어할수있다. 교육목표 2. 아두이노를이용하여삼색 LED 를제어할수있다. 3. 아두이노에서버튼입력을수행하여프로그램에연동할수있다. 장비류는미리배분하고, 재료는

슬라이드 1

제11장 프로세스와 쓰레드

rmi_박준용_final.PDF

슬라이드 1

PowerPoint Presentation

SBR-100S User Manual

( )부록

Arduino- 서보모터 서울과학기술대학교기계시스템디자인공학과 교수김성환

SOFTBASE XFRAME DEVELOPMENT GUIDE SERIES ActiveX 컴포넌트가이드 서울특별시구로구구로 3 동한신 IT 타워 1215 호 Phone Fax

디지털 공학

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조


07 자바의 다양한 클래스.key

Windows 8에서 BioStar 1 설치하기

슬라이드 1

Spring Data JPA Many To Many 양방향 관계 예제

슬라이드 1

PowerPoint 프레젠테이션

ios 의경우 Unity 버전 4.X 의경우, EasyMovieTexture 폴더안에 Unity463_Patch_IOS 가있습니다. 버전에 맞게패치해주세요. 디버그모드사용시아래와같이사용하세요.

어댑터뷰

을풀면된다. 2. JDK 설치 JDK 는 Sun Developer Network 의 Java( 혹은 에서 Download > JavaSE 에서 JDK 6 Update xx 를선택하면설치파일을

Journal of Digital Art Engineering & Multimedia Vol.4, No1, June (2017), pp 디지털예술공학멀티미디어논문지 멀티플랫폼게임

목차 BUG 문법에맞지않는질의문수행시, 에러메시지에질의문의일부만보여주는문제를수정합니다... 3 BUG ROUND, TRUNC 함수에서 DATE 포맷 IW 를추가지원합니다... 5 BUG ROLLUP/CUBE 절을포함하는질의는 SUBQUE

Java Programing Environment

목차 1 아두이노와이어링 & 코딩 1-1 아두이노초보자를위한 아두이노와이어링과코딩에의한 LED ON OFF 12 Coding_LED_ON_OFF_ 아두이노초보자에게위험스러운 아두이노코딩에의한 LED

<BCD2C7C1C6AEBFFEBEEE5FB1E8C1F6C5C25FC0DBC7B0C3D6C1BEBAB8B0EDBCAD2E687770>

목차 1 아두이노코딩 1-1 아두이노초보자를위한 아두이노코딩에의한 LED ON OFF 14 Coding_LED_ON_OFF_ 아두이노초보자에게위험스러운 아두이노코딩에의한 LED ON OFF 18 Co

사용하기 전에 2

PowerPoint 프레젠테이션

Microsoft PowerPoint App Fundamentals[Part1].pptx

12 강. 문자출력 Direct3D 에서는문자를출력하기위해서 LPD3DXFONT 객체를사용한다 LPD3DXFONT 객체생성과초기화 LPD3DXFONT 객체를생성하고초기화하는함수로 D3DXCreateFont() 가있다. HRESULT D3DXCreateFont

슬라이드 1

Spring Boot/JDBC JdbcTemplate/CRUD 예제

JAVA PROGRAMMING 실습 02. 표준 입출력

Microsoft Word - Crackme 15 from Simples 문제 풀이_by JohnGang.docx

BY-FDP-4-70.hwp

Microsoft PowerPoint - es-arduino-lecture-09

Microsoft PowerPoint SDK설치.HelloAndroid(1.5h).pptx

1. SeeEyes HD-SDI 전송장치 개요 개요 HD-SDI 전송 솔루션 신기술 적용을 통한 고성능 / 경제적 CCTV 시스템 구축 Power over Coax 기능을 포함한 HD-SDI 전송 솔루션 저렴한 동축케이블을 이용하여 HD-SDI 신호를 원거리 전송 (H

금오공대 컴퓨터공학전공 강의자료

슬라이드 1

Secure Programming Lecture1 : Introduction

Microsoft PowerPoint Android-SDK설치.HelloAndroid(1.0h).pptx

gnu-lee-oop-kor-lec10-1-chap10

1 Nov-03 CST MICROWAVE STUDIO Microstrip Parameter sweeping Tutorial Computer Simulation Technology

untitled

PowerPoint Presentation

Transcription:

유니티와아두이노를활용한 VR 컨트롤러개발 헬로앱스코딩교육 김영준 공학박사, 목원대학교겸임교수前 Microsoft 수석연구원 splduino@gmail.com http://www.helloapps.co.kr

목차 1. 툴설치 2. 아두이노컨트롤러개발실습 3. 유니티기본명령어실습 4. 유니티 VR 콘텐츠개발실습 5. 블루투스를이용한아두이노컨트롤러연동실습

SW 설치

SW 설치 Java SE (JDK) 설치 http://www.oracle.com/technetwork/java/javase/downloads/index.html Google Android Studio 설치 https://developer.android.com/studio/index.html 유니티설치 http://www.unity3d.com ( 회원가입후로그인필요 ) 아두이노코딩 SW 설치 ( 초보자 ) http://www.helloapps.co.kr/download ( 전문가 ) http://www.arduino.cc

아두이노컨트롤러개발실습

조이스틱연결하기 아날로그 0 번 아날로그 1 번 디지털 2 번 Y 축 X 축 버튼 아두이노보드

아두이노명령어 digitalwrite ( 핀번호, 값 ) d = digitalread( 핀번호 ) delay( 밀리초 ) a = map(a, 0, 1023, 0, 500) a = analogread( 핀번호 )

LED 점멸제어실습 void setup() void setup() pinmode(13, OUTPUT); 실습 ) LED 점멸간격을더짧게조절하기 void loop() DigitalWrite(13, HIGH) Delay(1000) DigitalWrite(13, LOW) Delay(1000) void loop() digitalwrite(13, HIGH); delay(1000); digitalwrite(13, LOW); delay(1000);

버튼값읽기 실습 ) 버튼이눌려지면 LED 켜기 void setup() void loop() d2 = DigitalRead(2) PrintLine(d2) Delay(100) void setup() pinmode(2, INPUT); Serial.begin(115200); void loop() int d2 = digitalread(2); Serial.println(d2); delay(100);

구구단출력하기 Print 와 PrintLine 명령어를이용하여다음과같이출력하시오 7 x 1 = 7 7 x 2 = 14 7 x 3 = 21 7 x 4 = 28 7 x 5 = 35 7 x 6 = 42 7 x 7 = 49 7 x 8 = 56 7 x 9 = 63 Print 와 PrintLine 명령어를이용하여원하는문자열을생성해낼수있어야함

조이스틱값읽기 void setup() void loop() x = AnalogRead(0) y = AnalogRead(1) Print(x) Print(" / ") PrintLine(y) Delay(100) void setup() Serial.begin(115200); void loop() int x = analogread(0); int y = analogread(1); Serial.print(x); Serial.print(" / "); Serial.println(y); delay(100); 조이스틱의 Y축 -> 아날로그 0번에연결조이스틱의 X축 -> 아날로그 1번에연결조이스틱을옆으로회전하여사용하기때문에프로그램에서는 X축과 Y축을변경하여사용 아날로그 0번아날로그 1번 Y축 X축 디지털 2 번 버튼

Map 함수를이용하여값변환하기 void setup() void loop() x = AnalogRead(0) y = AnalogRead(1) x = map(x, 0, 1023, -500, 500) y = map(y, 0, 1023, -500, 500) void setup() Serial.begin(115200); void loop() int x = analogread(0); int y = analogread(1); x = map(x, 0, 1023, -500, 500); y = map(y, 0, 1023, -500, 500); Print(x) Print(" / ") PrintLine(y) Delay(100) Serial.print(x); Serial.print(" / "); Serial.println(y); delay(100);

Map 함수를이용하여값변환하기 void setup() void setup() Serial.begin(115200); void loop() x = AnalogRead(0) y = AnalogRead(1) void loop() int x = analogread(0); int y = analogread(1); x = map(x, 0, 1023, -500, 500) y = map(y, 0, 1023, -500, 500) x = map(x, 0, 1023, -500, 500); y = map(y, 0, 1023, -500, 500); if (abs(x) < 30) x = 0 if (abs(y) < 30) y = 0 Print(x) Print(" / ") PrintLine(y) Delay(100) if (abs(x) < 30) x = 0; if (abs(y) < 30) y = 0; Serial.print(x); Serial.print(" / "); Serial.println(y); delay(100);

외부전송데이터생성하기 void loop() d = DigitalRead(2) x = AnalogRead(0) y = AnalogRead(1) void setup() pinmode(2, INPUT); Serial.begin(115200); <d,x,y> x = map(x, 0, 1023, -500, 500) y = map(y, 0, 1023, -500, 500) if (abs(x) < 30) x = 0 if (abs(y) < 30) y = 0 Print("<") Print(d) Print(",") Print(x) Print(",") Print(y) PrintLine(">") Delay(100) void loop() int d = digitalread(2); int x = analogread(0); int y = analogread(1); x = map(x, 0, 1023, -500, 500); y = map(y, 0, 1023, -500, 500); if (abs(x) < 30) x = 0; if (abs(y) < 30) y = 0; Serial.print("<"); Serial.print(d); Serial.print(","); Serial.print(x); Serial.print(","); Serial.print(y); Serial.println(">"); delay(100);

유니티기본명령어실습

3D 물체생성하기 Object Component Component Component Cube Transform Box Collider Mesh Renderer Component

물체제어하기 Scene_Main으로씬저장 Cube 오브젝트추가 Scripts 폴더생성 새로운 C# 스크립트생성 스크립트이름은 RotateObject 로수정 Cube 오브젝트에스크립트연결

물체제어하기 using System.Collections; using System.Collections.Generic; using UnityEngine; public class RotateObject : MonoBehaviour Transform TR; void Start () TR = transform; void Update () TR.Rotate( new Vector3(0, 1, 0) );

키보드로물체제어하기 ( 회전 ) using System.Collections; using System.Collections.Generic; using UnityEngine; public class RotateObject : MonoBehaviour Transform TR; void Start () TR = transform; using System.Collections; using System.Collections.Generic; using UnityEngine; public class RotateObject : MonoBehaviour Transform TR; void Start () TR = transform; void Update () float h = Input.GetAxis("Horizontal"); TR.Rotate(new Vector3(0, h, 0)); void Update () float h = Input.GetAxis("Horizontal"); float v = Input.GetAxis("Vertical"); TR.Rotate(new Vector3(v, h, 0));

키보드로물체제어하기 ( 이동 ) using System.Collections; using System.Collections.Generic; using UnityEngine; public class RotateObject : MonoBehaviour Transform TR; void Start () TR = transform; void Update () float h = Input.GetAxis("Horizontal"); float v = Input.GetAxis("Vertical"); TR.Rotate(new Vector3(0, h, 0)); TR.Translate(TR.forward * v);

에셋추가하기 유니티에셋스토어접속 Free Sci-Fi Textures 검색 Download 및설치

에셋추가하기 Plane 추가 바닥에텍스처추가 Cube 에텍스처추가

키보드로물체생성하기 Cube 오브젝트에서 RotateObject 스크립트제거 Cube 오브젝트에질량을추가해준다. 빈오브젝트생성 이름을 GameControlObject로수정 새로운 C# 스크립트생성 스크립트이름은 MainControlScript 로수정 빈오브젝트에스크립트연결

키보드로물체생성하기 public class MainControlScript : MonoBehaviour public GameObject CubeObject; void Start () void Update () if (Input.GetKeyDown(KeyCode.Space)) Instantiate(CubeObject, new Vector3(0, 5, 0), Quaternion.identity);

랜덤위치에물체생성하기 public class MainControlScript : MonoBehaviour public GameObject CubeObject; void Start () void Update () if (Input.GetKeyDown(KeyCode.Space)) float x = Random.Range(-10f, 10f); float z = Random.Range(-10f, 10f); Instantiate(CubeObject, new Vector3(x, 10, z), Quaternion.identity);

임의의방향으로떨어지도록하기 public class MainControlScript : MonoBehaviour public GameObject CubeObject; void Start () void Update () if (Input.GetKeyDown(KeyCode.Space)) float x = Random.Range(-10f, 10f); float z = Random.Range(-10f, 10f); float o_x = Random.Range(-45f, 45f); float o_y = Random.Range(-45f, 45f); float o_z = Random.Range(-45f, 45f); GameObject new_object = Instantiate(CubeObject, new Vector3(x, 10, z), Quaternion.identity); new_object.transform.eulerangles = new Vector3(o_x, o_y, o_z);

유니티 VR 콘텐츠개발실습

탄성기능추가 바닥에 RigidBody 컴포넌트추가 IsKinematic 선택

탄성기능추가 Asset -> Create -> Physical Materials 생성 Cube 와 Plane 에할당

일정한간격으로자동으로떨어지도록기능수정 public class MainControlScript : MonoBehaviour public GameObject CubeObject; float temp_time = 0; void Start () void Update () if ((Time.time - temp_time) > 1) temp_time = Time.time; float x = Random.Range(-10f, 10f); float z = Random.Range(-10f, 10f); float o_x = Random.Range(-45f, 45f); float o_y = Random.Range(-45f, 45f); float o_z = Random.Range(-45f, 45f); GameObject new_object = Instantiate(CubeObject, new Vector3(x, 10, z), Quaternion.identity); new_object.transform.eulerangles = new Vector3(o_x, o_y, o_z);

종료기능추가 public class MainControlScript : MonoBehaviour public GameObject CubeObject; float temp_time = 0; void Start () void Update () if ((Time.time - temp_time) > 1) temp_time = Time.time; float x = Random.Range(-10f, 10f); float z = Random.Range(-10f, 10f); float o_x = Random.Range(-45f, 45f); float o_y = Random.Range(-45f, 45f); float o_z = Random.Range(-45f, 45f); GameObject new_object = Instantiate(CubeObject, new Vector3(x, 10, z), Quaternion.identity); new_object.transform.eulerangles = new Vector3(o_x, o_y, o_z); if (Input.GetKeyDown(KeyCode.Escape)) Application.Quit();

실행파일빌드테스트 ( 윈도우버전 )

VR 세팅

AR 카메라추가

AR 카메라설정

AR 카메라설정

AR 카메라설정

안드로이드빌드하기

안드로이드배포하기 생성된 APK 파일을 USB 케이블로복사후설치 케이블이없는경우, 본인의이메일로파일배포후설치

블루투스를이용한아두이노 컨트롤러연동실습

아두이노보드에블루투스연결하기 아두이노보드의디지털 0 번과 1 번에각각블루투스 Rx, Tx 케이블을연결한다. GND 와 5V 케이블도아두이노의 GND 와 5V 핀에연결한다.

블루투스패키지설치하기 강사를통해배포된 HelloApps 블루투스커스텀패키지복사및설치 HelloAppsBT.unitypackage

블루투스패키지설치하기

블루투스패키지설치하기

블루투스패어링하기 안드로이드스마트폰에서블루투스켜기 장치추가한후, 아두이노에연결되어있는블루투스이름검색후추가 비밀번호는 1234 입력

블루투스디바이스이름추가하기 using UnityEngine; using System.Collections; public class BTBasicScript : MonoBehaviour string fromarduino = "" ; void Start () BtConnector.moduleName ("SPL V3 B0015"); BtConnector.connect(); void Update() if (Input.GetKeyDown(KeyCode.Escape)) BtConnector.close(); if (BtConnector.isConnected() && BtConnector.available()) fromarduino = BtConnector.readLine(); void OnGUI() GUI.Label(new Rect(0, 20, Screen.width, Screen.height*0.1f),"Arduino : " + fromarduino); GUI.Label(new Rect(Screen.width * 0.5f, 20, Screen.width, Screen.height * 0.1f), Status : " + BtConnector.readControlData());

디바이스연결테스트 앱빌드후배포 프로그램상단에연결및메시지정보표시되는지확인 아두이노보드전원재연결 앱실행

카메라이동과회전제어 using System.Collections; using System.Collections.Generic; using UnityEngine; public class BTControl_Sample_01 : MonoBehaviour public GameObject AR_Camera_Container; public GameObject Cube_Object; string fromarduino = ""; void Update() if (Input.GetKeyDown(KeyCode.Escape)) BtConnector.close(); if (BtConnector.isConnected() && BtConnector.available()) fromarduino = BtConnector.readLine(); Transform TR = null; void Start() TR = AR_Camera_Container.transform; BtConnector.moduleName("SPL V3 B0015"); BtConnector.connect(); if (fromarduino.startswith("<") && fromarduino.endswith(">")) string data = fromarduino.trimstart('<').trimend('>'); string[] arr = data.split(new char[] ',' ); string btn = arr[0]; float x = float.parse(arr[1]); float y = float.parse(arr[2]); x = x / 500f; y = y / 500f; TR.Translate(transform.forward * Time.deltaTime * y * 5); TR.Rotate(new Vector3(0, Time.deltaTime * x * -10, 0));

박스발사하는기능추가 using System.Collections; using System.Collections.Generic; using UnityEngine; public class BTControl_Sample_02 : MonoBehaviour public GameObject AR_Camera_Container; public GameObject AR_Camera; public GameObject Cube_Object; string fromarduino = ""; Transform TR = null; void Start() TR = AR_Camera_Container.transform; BtConnector.moduleName("SPL V3 B0015"); BtConnector.connect(); void Update() if (Input.GetKeyDown(KeyCode.Escape)) BtConnector.close(); if (BtConnector.isConnected() && BtConnector.available()) fromarduino = BtConnector.readLine(); if (fromarduino.startswith("<") && fromarduino.endswith(">")) string data = fromarduino.trimstart('<').trimend('>'); string[] arr = data.split(new char[] ',' ); string btn = arr[0]; float x = float.parse(arr[1]); float y = float.parse(arr[2]); x = x / 500f; y = y / 500f; TR.Translate(transform.forward * Time.deltaTime * y * 5); TR.Rotate(new Vector3(0, Time.deltaTime * x * -10, 0)); if (btn == "0") GameObject new_object = Instantiate<GameObject>(Cube_Object, TR.position, TR.rotation); Rigidbody rb = new_object.transform.getcomponent<rigidbody>(); rb.addforce(ar_camera.transform.forward * 1000);