- Embedded System, MCU Atmega32u4
- 컨트롤러를 통한 PC 제어
- 가속도, 자이로 센서 상보 필터링을 통해 PC의 마우스 제어
- 조이스틱, 버튼을 이용하여 키보드 입력 제어
- button을 RC회로로 구성하여 채터링 방지
- MPU6050 PULL-UP
- MPU 6050과 TWI로 통신하여 Raw Data를 받아오고, 이를 상보 필터로 정제한 후 마우스 움직임에 사용
- SCL 100kHZ
- 초기 filter-init으로 10번 읽어들인 후 평균값 기록. 이후 Axis 값을 삼각비 법칙을 통해 x와 z의 angle 값 취득.
- 구분구적법을 통해 Gyro 각도값을 추출
- 시간이 지남에 따라 Gyro의 drift가 발생하는데, 이를 방지하기 위해 Axis의 angle과 상보 필터링을 진행
- Division 64 -> 16/64 = 250kHZ (110)
- 5V의 입력 전압을 사용하여 10bit 값을 나타냄.
- Timer Interrupt
- Timer 1을 사용하여 timer 값을 카운팅. 분주를 사용하지 않아 1/16MHZ25664 = 2.048ms마다 overflow가 발생. 따라서 counting하는 값에 2.048을 곱해 줌.
- Pin Change Interrupt
- 같은 라인의 pin state의 변화에 따라서 interrupt가 발생.