Microsoft PowerPoint - 4_Wii눈척.ppt [호환 모드]

Similar documents
Microsoft PowerPoint - 6_칼만필터.ppt [호환 모드]

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A638C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

Microsoft PowerPoint - es-arduino-lecture-03

(Asynchronous Mode) ( 1, 5~8, 1~2) & (Parity) 1 ; * S erial Port (BIOS INT 14H) - 1 -

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >

hd1300_k_v1r2_Final_.PDF

슬라이드 1

<4D F736F F F696E74202D20325FBEC6B5CEC0CCB3EB20B1E2C3CABDC3C7E82E BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202834C1D6C2F7207E2038C1D6C2F729>

BMP 파일 처리

K&R2 Reference Manual 번역본

Microsoft PowerPoint - 04-UDP Programming.ppt

MR-3000A-MAN.hwp

쉽게 풀어쓴 C 프로그래밍


PowerPoint 프레젠테이션

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt

6 강남구 청담지구 청담동 46, 삼성동 52 일대 46,592-46,592 7 강남구 대치지구 대치동 922번지 일대 58,440-58,440 8 강남구 개포지구 개포동 157일대 20,070-20,070 9 강남구 개포지구중심 포이동 238 일대 25,070-25,

27집최종10.22

황룡사 복원 기본계획 Ⅵ. 사역 및 주변 정비계획 가. 사역주변 정비구상 문화유적지구 조성 1. 정비방향의 설정 황룡사 복원과 함께 주변 임해전지(안압지) 海殿址(雁鴨池)와 분황사 등의 문화유적과 네트워크로 연계되는 종합적 정비계획안을 수립한다. 주차장과 광장 등 주변

Motor

ARDUINO Open Physical Computing Platform 오탈자, 문의및보완이필요한내용은 으로알려주세요.

Week3

SRC PLUS 제어기 MANUAL

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202834C1D6C2F7207E2038C1D6C2F729>

PowerPoint 프레젠테이션

Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3


Microsoft PowerPoint - chap06-2pointer.ppt

게시판 스팸 실시간 차단 시스템

슬라이드 1

슬라이드 1

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C D616E2E637070>

목차 1. 키패드 (KeyPAD) 2. KeyPAD 를이용한비밀번호입력기

crazyflie2 code reading subak.io

chap 5: Trees

목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2

프로그램을 학교 등지에서 조금이라도 배운 사람들을 위한 프로그래밍 노트 입니다. 저 역시 그 사람들 중 하나 입니다. 중고등학교 시절 학교 도서관, 새로 생긴 시립 도서관 등을 다니며 책을 보 고 정리하며 어느정도 독학으르 공부하긴 했지만, 자주 안하다 보면 금방 잊어

03장.스택.key

Microsoft PowerPoint - ch10 - 이진트리, AVL 트리, 트리 응용 pm0600

슬라이드 1

DTS-L300-V2 Specification Page 1 of 14 비접촉온도측정 원거리온도측정 High Accuracy Digital Interface : SPI Arduino UNO 예제코드제공 제품설명 DTS-L300-V2는접촉을하지않고원하는물체표면에온도를 50

Chapter. 14 DAC 를이용한 LED 밝기제어 HBE-MCU-Multi AVR Jaeheung, Lee

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

IoT FND8 7-SEGMENT api

슬라이드 1

PowerPoint 프레젠테이션

[8051] 강의자료.PDF

PowerPoint 프레젠테이션

Microsoft PowerPoint - polling.pptx

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A636C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

untitled

슬라이드 1

슬라이드 1

슬라이드 제목 없음

PowerPoint 프레젠테이션

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다.

슬라이드 1

설계란 무엇인가?

Tablespace On-Offline 테이블스페이스 온라인/오프라인

텀블러514

Mango-E-Toi Board Developer Manual

윈도우시스템프로그래밍

OSTSen-THL100 사용자설명서 Ver 1.1 Onsystech OSTSen-THL100 Ver1.1 1 of 8 Onsystech

Microsoft Word - KPMC-400,401 SW 사용 설명서

bn2019_2

Microsoft PowerPoint - ch07 - 포인터 pm0415

Microsoft Word - FS_ZigBee_Manual_V1.3.docx

Microsoft Word _whitepaper_latency_throughput_v1.0.1_for_

untitled

Mango-AM335x LCD Type 커널 Module Parameter에서 변경하기

untitled


8 장데이터베이스 8.1 기본개념 - 데이터베이스 : 데이터를조직적으로구조화한집합 (cf. 엑셀파일 ) - 테이블 : 데이터의기록형식 (cf. 엑셀시트의첫줄 ) - 필드 : 같은종류의데이터 (cf. 엑셀시트의각칸 ) - 레코드 : 데이터내용 (cf. 엑셀시트의한줄 )

<4D F736F F D20B1E2BCFAC0DAB7E1202D20454F435220B8F0B5E5B9F6BDBA20C5EBBDC5C1A6C7B020BBE7BFEBB9FD202D F302E646F63>

OCW_C언어 기초

untitled

Microsoft PowerPoint - Supplement-03-TCP Programming.ppt [호환 모드]

UI TASK & KEY EVENT

지도상 유의점 m 학생들이 어려워하는 낱말이 있으므로 자세히 설명해주도록 한다. m 버튼을 무리하게 조작하면 고장이 날 위험이 있으므로 수업 시작 부분에서 주의를 준다. m 활동지를 보고 어려워하는 학생에게는 영상자료를 접속하도록 안내한다. 평가 평가 유형 자기 평가

Product Brief Manual

Microsoft PowerPoint - 부호기와 복호기.PPT

2. GCC Assembler와 AVR Assembler의차이 A. GCC Assembler 를사용하는경우 i. Assembly Language Program은.S Extension 을갖는다. ii. C Language Program은.c Extension 을갖는다.

Microsoft Word - AM-SLCD_시리얼 LCD_ 메뉴얼.doc

위하다. 하지만 지금까지 시민사회의 논의는 주로 국내 핵발전소의 안전과 이에 따른 재난으로 논의가 국한되고 있는 측면이 있다. 사고의 파급력과 파괴력은 국내 핵발전소 사고가 더 크겠지 만, 그간 역사를 통해 우리가 경험한 방사능 재난은 이보다 다양하며, 오늘의 논의 과

MODBUS SERVO DRIVER( FDA7000 Series ) STANDARD PROTOCOL (Ver 1.00) 1

JUNIT 실습및발표

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2

untitled

Formatvorlage für Arbeitsanweisungen

UART.h #ifndef _UART_H_ #define _UART_H_ #define DIR_TXD #define DIR_RXD sbi(portd,4) cbi(portd,4) #define CPU_CLOCK_HZ UL UART PORT1 void UAR

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

PowerPoint 프레젠테이션

3. 1 포인터란 3. 2 포인터변수의선언과사용 3. 3 다차원포인터변수의선언과사용 3. 4 주소의가감산 3. 5 함수포인터

Microsoft PowerPoint - 03_(C_Programming)_(Korean)_Pointers

2009년 상반기 사업계획

Microsoft PowerPoint - 9.Serial.pptx

RaspberryPi 시리얼통신 1 제 08 강 시리얼통신제어 시리얼통신시리얼모니터링루프백시리얼통신 Win. PC와의시리얼통신가상머신과의시리얼통신아두이노보드와의시리얼통신 KUT51보드와의시리얼통신

PowerPoint 프레젠테이션

Transcription:

Wii 눈척살펴보기 여기에서는 Wii 눈척 (Nunchuk) 의데이터처리에대해서살펴봅니다. 위눈척 (Wii nunchuk) 는 3축 (X Y Z) 가속도를측정할수있는장치로 ST사의 LIS3L02AL 소자를사용하고내부 MCU 가 I2C 방식으로데이터를처리해줍니다. 따라서사용자는 I2C 통신과해당통신프로토콜을이해하여접속사용하면됩니다. 멀티위콥터에서눈척은수평기능유지센서로사용되며, 보다편한비행이가능하도록합니다. 센서관련상세관련자료는 http://wiibrew.org/wiki/wiimote/extension_controllers 웹자료참조바랍니다. 눈척모양 X축이동 Y축이동 ( 중앙값 :512) ( 중앙값 :512) 각부구성 Z 축이동 ( 중앙값 :512) NunChuck 핀기능 1. 적색 : +3.3V 2.Nc 3. 황색 : SCL 4. 녹색 :SDA 이부분 5. 백색 : GND 잘라내도됨 6. 흑색 : GND 작성 : 2010.11.04 KCO 핀기능 1

Wii 눈척신호연결 AVR 과직접연결의경우 아두이노 AVR 핀 I2C 통신연결 A5 A4 눈척커넥터 SCL SDA 눈척을모션플러스를통과하여연결하는경우 눈척데이터 ( 통과모드, Pass-through mode) 눈척데이터 ( 단독동작모드 ) 2

I2C 통신포맷및눈척통신프로토콜 I2C 데이터예 ) 이데이터값은 0x52 읽기 =1 쓰기 =0 I2C 통신데이터를다룰때, 가끔혼란스러운경우가있습니다. 함수에따라위의데이터를 0x52 로다루는경우도있고, 0xA4( 쓰기 ), 0xA5( 읽기 ) 로다루는경우도있죠. 그이유는 R/W 비트를빼고위의 7 비트값만읽느냐? 또는전체값으로읽느냐에따라달라지므로이점에주의하시면됩니다. 앞에서도살펴보았지만눈척을단독으로연결하여사용하는경우데이터형태는아래와같습니다. Joystick X = 눈척위부분에있는조이스틱 X값으로 8비트크기이므로중앙값이128 이고 0 ~ 255 범위의값을갖겠죠? Joystick Y = 눈척위부분에있는조이스틱 Y값으로 8비트크기이므로중앙값이128 이고 0 ~ 255 범위의값. Accelerometer X = X축가속도값, 10비트크기이므로 0 ~ 1023 범위값. Accelerometer Y = Y 축가속도값, 10 비트크기이므로 0 ~ 1023 범위값. Accelerometer Z = Z축가속도값, 10비트크기이므로 0 ~ 1023 범위값. C 및 Z 버튼 : 버튼은누르면 0, 놓으면 1로됨 한가지주의가필요한것은눈척을단독모드로사용시에는읽은데이터에아래와같이 decoding 후사용해야되고, 통과모드로사용시에는그냥사용하시면되는데, 왜이렇게하는지저도궁금해요.( 아마분석이어렵도록닌텐도개발자가시큐리티처리?) 사용데이터 = ( 읽은데이터 XOR 0x17) + 0x17 3

눈척통신프로토콜 : 단독사용모드 눈척초기화명령 : 눈척을초기화하는명령으로처음한번실행해주어야함. 0xA4( 또는 0x52) 0x40 0x00 순서로쓰기 눈척변환시작명령 : 눈척에게 6바이트데이터를저장하라는명령으로데이터를읽기전에실행해주어야함 0xA4( 또는 0x52) 0x00 순서로쓰기참고 : 변환에약간시간이소요되는것같음. 이명령후약간의지연후데이터를읽거나또는데이터읽은후, 다음데이터변환을위해서이명령을실해하기도함 눈척데이터읽기 : 6 바이트눈척데이터를읽기위해 0xA5( 또는 0x53) 쓰기후연속으로 6 바이트데이터를읽어오면됨. 4

아두이노프로그램소스 눈척시험용프로그램 // 2010.11.4 KCO // Wii Nunchuk test 0: 통신터미널로데이터확인 #include <Wire.h> 1: PROCESSING 그래프로확인 #define forprocessing 1 byte data[6]; // six data bytes word accx,accy,accz; byte joy_x,joy_y; byte z_button,c_button; void initnc(){ Wire.begin(); Wire.beginTransmission(0x52); // address 0x52, (0x52<<1 = 0xA4) Wire.send(0x40); Wire.send(0x00); Wire.endTransmission(); void SendZero(){ Wire.beginTransmission(0x52); // now at address 0x52 Wire.send(0x00); // send zero to signal Wire.endTransmission(); static char nc_decode_byte (char x){ x = (x ^ 0x17) + 0x17; return x; void receivedata(){ Wire.requestFrom(0x52,6); for (int i=0;i<6;i++){ data[i] = nc_decode_byte(wire.receive()); SendZero(); // send zero before each request accx = ((data[2]<<2) ((data[5]>>2) & 0x3)); accy = ((data[3]<<2) ((data[5]>>4) & 0x3)); accz = ((data[4]<<2) ((data[5]>>6) & 0x3)); joy_x = data[0]; joy_y = data[1]; void setup(){ Serial.begin(115200); delay(100); initnc(); delay(100); void loop(){ receivedata(); //receive data and calculate yaw pitch and roll if(forprocessing){ Serial.print('N',BYTE); // Nunchuck = 10bit Serial.print((accx>>8) & 0xff,BYTE); Serial.print(accx & 0xff,BYTE); Serialprint((accy>>8) Serial.print((accy>>8) & 0xff,BYTE); Serialprint(accy Serial.print(accy & 0xff,BYTE); Serial.print((accz>>8) & 0xff,BYTE); Serial.print(accz & 0xff,BYTE); Serial.print(joy_x,BYTE); Serial.print(joy_y,BYTE); Serial.print(0x0d,BYTE); else{ Serial.print("\n\r"); Serial.print("X="); Serial.print(accx,DEC); Serial.print("\tY="); Serial.print(accy,DEC); Serial.print("\tZ="); Serial.print(accz,DEC); Serial.print( print("\tjx="); Serial.print(joy_x,DEC); Serial.print("\tjY="); Serial.print(joy_y,DEC); delay(20); 5

눈척데이터관찰 아두이노프로그램 여기눌러서 통신으로데이터관찰 시험장치모습 6

프로세싱프로그램소스 눈척시험용프로그램 // 2010.11.04 KCO void draw(){ import processing.serial.*; int cr, cnt=0, cnt_old=0; Serial port; // Create object from Serial class while (port.available() >= 10) { int val0,val1,val2,val3,val4; // Data received from the serial if (port.read() == 'N') { port val0 = (port.read() << 8) (port.read()); int[] values0; val1 = (port.read() << 8) (port.read()); int[] values1; int[] values2; int[] values3; int[] values4; val2 = (port.read() << 8) (port.read()); val3 = port.read(); val4 = port.read(); cr = port.read(); cnt++; 포트번호적절히변경사용 void setup() { if(cnt!= cnt_old){ size(640, 480); port = new Serial(this, "COM155", 115200); // Change COM port values0 = new int[width]; values1 = new int[width]; values2 = new int[width]; values3 = new int[width]; values4[i] = values4[i+1]; values4 = new int[width]; smooth(); int gety(int val) { return (int)(val/1023.0f * (height-1)); // NC: 10 bit data background(0); for (int x=1; x<width; x++) { cnt_old = cnt; for (int i=0; i<width-1; i++){ values0[i] = values0[i+1]; values1[i] = values1[i+1]; values2[i] = values2[i+1]; values3[i] = values3[i+1]; values0[width-1] = val0; values1[width-1] = val1; values2[width-1] = val2; values3[width-1] = val3; values4[width-1] = val4; stroke(255,0,0); // Red,accX line(width-x, height-1-gety(values0[x-1]), width-1-x, height-1-gety(values0[x])); stroke(0,255,0); // Green,accY line(width-x, height-1-gety(values1[x-1]), width-1-x, height-1-gety(values1[x])); stroke(0,0,255); // Blue,accZ line(width-x, idth height-1-gety(values2[x-1]), ht ty( 1]) width-1-x, height-1-gety(values2[x])); ht ty( stroke(255,255,0); // joy_x line(width-x, height-1-gety(values3[x-1]), width-1-x, height-1-gety(values3[x])); stroke(0,255,255); // joy_y line(width-x, height-1-gety(values4[x-1]), width-1-x, height-1-gety(values4[x])); 7

프로세싱으로눈척데이터관찰 눈척데이터를프로세싱으로관찰해봅니다. Red : accx 데이터 Green : accy 데이터 Blue : accz 데이터 Yellow : joy_x 데이터 Cyan : joy_y 데이터 8