Ch4_1. 가속도센서 내장 Wii 구동하기
학습 내용
조이스틱기능과 가속도센서를 내장한 WiiController의 센서값을 PC에서 시리얼통신을 통해 디스플레이 할수 있습니다.
   
 
배선도 & 회로도
      
    
배선 사진
     
  
   
 
코딩
  
   
 
#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.
학습 참고
Please log in to post comments.
