Issue when Reading Wii Motion PLus on arduino

Hii everyone,
I have both nunchuk and wii motion plus and I am working on to build a cheap 6DOF IMU board. I have tried using Nunchuk alone with arduino to get the data and it was success after using different initialization sequence proving that i have a clone.
But , when I connect in similar way wii motion plus with arduino, I am not getting the proper values in serial monitor. The values are struck at 3 ie yaw=pitch=roll=3. I am uploading the screenshot of serial monitor as attachment, and here's the code I am using

/*
Make Projects
 Arduino Wii Motion Plus Data Reader
 This code is used for the Make Projects: Wii Motion Plus on the Arduino.
 Miles code did not include a license however we would like to thank him for posting it!
 
 Author:  Miles Moody
 Home Page:
 http://randomhacksofboredom.blogspot.com/2009/07/motion-plus-and-nunchuck-together-on.html
 */

#include <Wire.h>

byte data[6];          //six data bytes
int yaw, pitch, roll;  //three axes
int yaw0, pitch0, roll0;  //calibration zeroes

void wmpOn(){
  Wire.beginTransmission(0x53);    //WM+ starts out deactivated at address 0x53
  Wire.send(0xfe);                 //send 0x04 to address 0xFE to activate WM+
  Wire.send(0x04);
  Wire.endTransmission();          //WM+ jumps to address 0x52 and is now active
}

void wmpSendZero(){
  Wire.beginTransmission(0x52);    //now at address 0x52
  Wire.send(0x00);                 //send zero to signal we want info
  Wire.endTransmission();
}

void calibrateZeroes(){
  for (int i=0;i<10;i++){
    wmpSendZero();
    Wire.requestFrom(0x52,6);
    for (int i=0;i<6;i++){
      data[i]=Wire.receive();
    }
    yaw0+=(((data[3]>>2)<<8)+data[0])/10;        //average 10 readings for each zero
    pitch0+=(((data[4]>>2)<<8)+data[1])/10;
    roll0+=(((data[5]>>2)<<8)+data[2])/10;
  }
  Serial.print("Yaw0:");
  Serial.print(yaw0);
  Serial.print("  Pitch0:");
  Serial.print(pitch0);
  Serial.print("  Roll0:");
  Serial.println(roll0);
}

void receiveData(){
  wmpSendZero();                   //send zero before each request (same as nunchuck)
  Wire.requestFrom(0x52,6);        //request the six bytes from the WM+
  for (int i=0;i<6;i++){
    data[i]=Wire.receive();
  }
  yaw=((data[3]>>2)<<8)+data[0]-yaw0;        //see http://wiibrew.org/wiki/Wiimote/Extension_Controllers#Wii_Motion_Plus
  pitch=((data[4]>>2)<<8)+data[1]-pitch0;    //for info on what each byte represents
  roll=((data[5]>>2)<<8)+data[2]-roll0;      
}

void setup(){
  Serial.begin(115200);
  Serial.println("WM+ tester");
  Wire.begin();
  wmpOn();                        //turn WM+ on
  calibrateZeroes();              //calibrate zeroes
  delay(1000);
}

void loop(){
  receiveData();                  //receive data and calculate yaw pitch and roll
  Serial.print("yaw:");           //see diagram on randomhacksofboredom.blogspot.com
  Serial.print(yaw);              //for info on which axis is which
  Serial.print("  pitch:");
  Serial.print(pitch);
  Serial.print("  roll:");
  Serial.println(roll);
  delay(100);
} 






/*
Additional Reading:
 The wii motion plus's initialization sequence was pull from here:
 http://wiibrew.org/wiki/Wiimote/Extension_Controllers#Wii_Motion_Plus
 
 The data format is well documented here:
 http://wiibrew.org/wiki/Wiimote/Extension_Controllers#Data_Format_.28Wii_Motion_Plus.29
 
 More pinout diagrams can be found here:
 http://wiibrew.org/wiki/Wiimote/Extension_Controllers#Hardware_.28Wii_Motion_Plus.29
 */

I have extracted the pcb from the WMP and have soldered correctly with proper pinouts. I have a promini 5v version, So powering WMP with 2.95v from voltage divider circuit. When I didn't get the desired result, I connected WMP directly to 5v and got some fair values but they all were 16 bit values which i found as strange as I was hoping to get the values ranging same as those in this link Hacking the Wii MotionPlus to Talk to the Arduino - Make:. Goto step 3 for that image. After trying for few more times i once eventually got result ranging from 1 to 3 but it went away soon. =(

I then again powered it with 2.95v but the values are struck at 3 no matter how I place them.. Now I am not even getting those 16 bit values now.
Please help with this, I tried almost everything before posting it here :~ :roll_eyes:

I again tired to run WMP on 5v, and started getting those 16 bit values again on serial monitor. Looks though WMP is responding bt don't knw what causes it to send those single digit values.I am attaching a screenshot of serial monitor.
Please help me regarding this issue... :frowning: