MPU6050 values not 16-bit?


I'm looking at the little code snippet from this (many other projects also use similar code):

void loop(){
 mpu.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);

 ax = map(ax, -17000, 17000, -1500, 1500);

If my reading is correct, it's assuming the value of ax to be between -17000 and 17000. But isn't the value supposed to be 16-bit? If so, shouldn't the range be wider than -17000, 17000? Is the value capped?

Any thought appreciated.


AFAIK the actual range is [-32768, +32767]. I don't know why it's constrained to +-17000, maybe greater values were simply not interesting for the project and people kept copying the snippet without thinking about it.

Note that map() uses integer math so you are going to loose resolution with yout code.

lg, couka