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 |