Hi Mike,
First off, apologies for the delayed reply on this. Been a bit snowed under lately and I thought it might take a while to get set up on this.
The way I've approached this is by following
this tutorial, which maybe is the one you've tried?
I too get the slightly odd UU although mine is at position (30, b). Anyway, when I ran the example.py script I got 0.000G on all axes as you did, but then when I ran it again it all works and I got what looked like sensible values for all axes (i.e. when it was flat on the table z was close to 1G and x, y were both close to zero).
Looking at the code of the
ADXL345 class it looks like it sends a message to the accelerometer to enable measurements. Now in
example.py the ADXL345 class is created and then a call is immediately made to getAxes. My guess is that actually a small delay is needed when the accelerometer is first used to give the command time to be accepted, hence why the script works the second time it's run.
Of course, this may not be the problem you're having...
Can you try following the linked tutorial and then running the script repeatedly to see if you get any improvement?
Cheers
Alan