wiiuse(Wiimote Library) Controller

이전 포스팅엔 Wiimote와 Matlab을 붙여보았습니다..

사실 Matlab과 붙여서 뭔가를 한다는건 테스트용에 가깝고..(코딩하고 뭔가 만들어보기엔 매우 편하지만)
하나 찾아놓으면 이것저것 만들기 재미날 것 같아서..
그래서 인터넷 서핑 좀 했더니 역시나 있더군요..
(후배 말 듣자면.. 매우 많은 분들이 '이미' 여럿 개발해놓으신듯..)

그중에 하나를 찾아서 포스팅합니다.

위에 링크에서 최신파일로 받으시면 되구요.

설명서는 바로 아래 첨부파일에 추가합니다.
(어디에서 구했는지는.. 저도 링크타고 돌아다니다 구했습니다.)

첨부 파일
wiiuse-doc.htm47.0KB

마지막으로 제가 작성한 소스 올립니다..
간단하게 Wiimote로부터 값을 받아와서 각각의 센서값만 찍어주는 부분만 코딩했습니다.
나중에 바로 어딘가에 써먹을라합니다.

#include <stdio.h>
#include "wiiuse.h"

int main(void)
{
    //wiimote를 최대 1개로 사용하겠다 초기화
    wiimote** wiimotes = wiiuse_init(1);

    //wiimotes 변수에 wiimote 1개를 delay 5초 동안 붙여줌
    int found = wiiuse_find(wiimotes, 1, 5);

    //wiimote가 붙어 있는지 확인
    int connected = wiiuse_connect(wiimotes, 1);
    if (connected)
        printf("Connected to %i wiimotes (of %i found).\n", connected, found);
    else {
        printf("Failed to connect to any wiimote.\n");
        return 0;
    }
    
    //wii의 가속도 센서를 ON(노이즈때문에 default가 OFF)
    wiiuse_motion_sensing(wiimotes[0],1);
    //적외선 카메라도 default는 OFF 되어 있음
    wiiuse_set_ir(wiimotes[0],1);

    while (1) {    
        //가속도 센서 출력
        printf("\n%+2.4f %+2.4f %+2.4f",wiimotes[0]->gforce.x,wiimotes[0]->gforce.y,wiimotes[0]->gforce.z );
        
        //적외선 카메라의 점 위치 판별
        printf("\n%d",wiimotes[0]->ir.num_dots);
        if( wiimotes[0]->ir.dot[0].visible )
        {
            printf("\n%+4d %+4d",wiimotes[0]->ir.dot[0].rx,wiimotes[0]->ir.dot[0].ry);
        }
    
        //버튼 이벤트에 따른 분기문
        if (wiiuse_poll(wiimotes, 1)) {
            int i = 0;
            for (; i < 1; ++i) {
                switch (wiimotes[i]->event) {
                    /* check the events here */
                    case WIIUSE_EVENT:
                        
                        //누르는 순간
                        if (IS_JUST_PRESSED(wiimotes[0], WIIMOTE_BUTTON_A)) {
                            /* button is pressed */
                            printf("Down");
                        } else {
                            /* button is not pressed */
                        }

                        //누르고 있는 동안
                        if (IS_PRESSED(wiimotes[0], WIIMOTE_BUTTON_A)) {
                            /* button is pressed */
                            printf("Press");
                        } else {
                            /* button is not pressed */
                        }
                    break;
                }
            }
        }
    }

}

Leave Comments