Ch4_1. 가속도센서 내장 Wii 구동하기

학습 내용

조이스틱기능과 가속도센서를 내장한 WiiController의 센서값을 PC에서 시리얼통신을 통해 디스플레이 할수 있습니다.

/media/uploads/jnesystech/nunchuck_lrg.jpg

배선도 & 회로도

/media/uploads/jnesystech/ch4_1-wire-.png

배선 사진

300 300 300

코딩

500
300

#include "I2CConfig.h"
#include "WiiNunchuckReader.h"

#define LOOP_DELAY    1    // seconds

// global declarations
Serial serial(USBTX, USBRX);

void ReadAndReport(WiiNunchuckReader* const nchk, const char* const portname)
{
    int bufSize = 0;
    char* bufPtr = NULL;
    bool debug = true;

    nchk->RequestRead();
    serial.printf("%s: ", portname);
        
    if (debug)
    {
        bufSize = nchk->getBufferSize();
        bufPtr = nchk->getReadBuf();
        if (bufPtr != NULL)
        {
            for (int i = 0; i < bufSize; i++)
            {
                serial.printf("%x ", bufPtr[i]);
            }
            serial.printf("\r\n");
        }
    }
        
    serial.printf("%d\t", nchk->getButtonZ());
    serial.printf("%d\t", nchk->getButtonC());
    serial.printf("%d\t", nchk->getAccelX());
    serial.printf("%d\t", nchk->getAccelY());
    serial.printf("%d\t", nchk->getAccelZ());
    serial.printf("%d\t", nchk->getJoyX());
    serial.printf("%d\r\n", nchk->getJoyY());
    serial.printf("\r\n");
}

int main() 
{
    WiiNunchuckReader nchkA(I2CPort_A::SDA, I2CPort_A::SCL);
    WiiNunchuckReader nchkB(I2CPort_B::SDA, I2CPort_B::SCL);
    
    while (true)
    {
        ReadAndReport(&nchkA, "PORT A");
        ReadAndReport(&nchkB, "PORT B");
                
        wait(LOOP_DELAY);
    }
    
    return EXIT_SUCCESS;
}

라이브러리

A program allowing the output of one or two Wii Nunchucks to be read via I2C and decoded for use.

Import program

I2CConfig.h [code]
main.cpp [code]
WiiNunchuckDefs.h [code]
WiiNunchuckReader.cpp [code]
WiiNunchuckReader.h [code]

학습 참고


Please log in to post comments.