가상현실프로그래밍 10주차

2021. 11. 17. 18:06학교수업

아두이노 스위치 연동(binary value 전송)

- push 버튼에 10k옴 저항 사용

- 모든 핀에 pullup 저항 있다.

- 내부 pullip 저항을 사용하려면 한쪽엔 GND, 다른쪽에 pin 연결

 

가변저항 사용

- 입력값은 0~1024

- Byte단위로 전달하기 위해 4로 나눔

- 가운데가 아날로그 핀이다.

 

Flex Sensor 활용

- 휘어지는 정도에 따라 저항 값이 변하는 가변 저항 (많이 휠수록 저항값 증가)

- GND->(저항)->Flex Sensor->5V 회로 구성

 

리드 스위치

- 평소에 유리관 속에 밀봉된 2개의 자성 리드 조각이 스프링 탄성에 의해 열린 상태로 되어있다.

- 스위치에 자석을 접근시키면 2개의 리드 조각에 의해 자기회로가 되어 2개의 리드는 끌어당겨져 접점을 닫음

- 다시 자석이 멀리가면 탄생에 의해 열린상태가됨

 

리드 스위치 활용

- 속도 = 거리/시간

- 지름 30cm인 자전거 바퀴 거리 = 2*0.3m*3.14 = circle

- 초기 리드 센서 값 닫힘

- 시작 시간 : 리드 센서가 닫혔다 열린 시간 (0->1)

- 종료 시간 : 리드 센서가 열렸다 닫힌 시간 (1->0)

- cycleTime = 종료시간 - 시작시간 (초 단위)

-> 속도 = (circle/cycleTime)*3.6; // km/h

 

효율적인 데이터 송수신

- Unity의 update에서  serial 데이터를 체크할 경우

-> timeout만큼 대기 하기 때문에 update함수를 지연시켜 프레임 속도를 느리게 만듦

- serial data를 체크하는 부분을 별도로 독립적인 작업으로 분할

- 분할된 두 모듈 병렬적으로 실행

=> Thread를 이용한 효율적인 데이터 송수신

- 동시성 : 다수의 작업을 수행하기 위해 각 작업을 조금씩 나누어서 실행하는 시분할 방식

- Thread는 OS레벨에서 동시성을 위해 각 작업을 조금씩 나누어서 실행

- 작업간 작업 전환을 위한 Context Switching 비용 발생

-> Coroutine 이용

Unity에서는 thread보다 가벼운 Light-Weight Thread 모델인 coroutine 제공

-> coroutine사용하면 UI 별도 처리할 필요 없음

-> 사용방법 : start()함수에 StartCroutine("사용할 함수이름");이며, 사용할 함수의 return 타입은 IEnumerator

-> 중간에 yield return null;을 사용하여 update 함수가 호출되도록 양보

 

다수의 센서값을 전송하기 위해 문자열 단위로 데이터 송수신 { 값, 값, 값, ... }

'학교수업' 카테고리의 다른 글

정보보호개론 10주차  (0) 2021.11.18
가상현실프로그래밍 11주차  (0) 2021.11.18
임베디드기초 10주차  (0) 2021.11.15
웹개발기초 11주차  (0) 2021.11.14
가상현실프로그래밍 9주차  (0) 2021.11.12