|
|
|
![]() |
|
|||||||
|
||||||||
![]() |
|
|
Thread Tools | Rate Thread | Display Modes |
|
|
|
#1
|
|||
|
|||
|
Trouble with the AXDL345_I2C accelerometer.
I apologize in advance for creating another accelerometer thread, but none of the others were able to help me, and I didn't want to hijack l0stboy's, in case we're having different problems.
My problem is the one most people are having: I always read 0.0 on all axis. I have the module connected to the I2C port on the sidecar, yes I2C closest to the NXT connector, not the digital outs next to it. We are using the new flat ribbon cable to talk to the DSC. One of the connectors was flipped, but we fixed it, per the instructions on the KoP site. It has been verified working by using two PWM servos, and two digital encoders. I have verified that the pins are connected one-to-one from the accelerometer to the sidecar. I have tested the cable using an ohm-meter, and have while it is connected measured 5.1V on the "5V" pin, and 4.7V on the "SDA" and "SCL". I do not have easy access to an oscilloscope, but can get one if truly necessary. Looking at the spec sheet for the ADXL345, and the WPILibJ source code, we noticed that the read bit is not set during I2C.read(), so I tried replacing Code:
registerAddressArray[0] = (byte) registerAddress; Code:
registerAddressArray[0] = (byte) (registerAddress | 0x01); Quote:
We have also tried replacing the accelerometer, but it didn't work either. Here is the code I am running to test the accelerometer: Code:
package edu.wpi.first.wpilibj.templates;
import edu.wpi.first.wpilibj.ADXL345_I2C;
import edu.wpi.first.wpilibj.IterativeRobot;
public class RobotTemplate extends IterativeRobot {
ADXL345_I2C accel;
public void robotInit() {
accel = new ADXL345_I2C(1, ADXL345_I2C.DataFormat_Range.k2G);
}
public void teleopPeriodic() {
ADXL345_I2C.AllAxes vals = accel.getAccelerations();
System.out.println(
" X: " + vals.XAxis+
" Y: " + vals.YAxis+
" Z: " + vals.ZAxis);
}
}
|
|
#2
|
|||
|
|||
|
Re: Trouble with the AXDL345_I2C accelerometer.
we had this same problem, when we switched to the flat cable, it worked for a while, but it doesnt work now.
|
|
#3
|
||||
|
||||
|
Re: Trouble with the AXDL345_I2C accelerometer.
Ours is working (albeit very noisy) with the default code so the library does not need changing.
- do you have your sidecar power connected? - did you average some readings and save a zero G offset (not your problem yet) - are you sure the accelerometer is not plugged in backwards? I'm not a java expert but should accel be a pointer if you are going to instantiate the class with 'new'? HTH |
|
#4
|
|||
|
|||
|
Re: Trouble with the AXDL345_I2C accelerometer.
Quote:
Yes, as verified by it running several servos (as mentioned), and on all the power LEDs. However, it was pointed out to me shortly before I left today that it had 24V going in to it (it should have 12V), so that may be the issue. My mind is blown that it was properly running the servos at the correct voltage with twice the voltage running in to it. Yes, we must have checked that 100 times today. ![]() In Java anything that's not a primitive (various sized ints, 32&64 bit floats, boolean and char) is automatically a pointer (or "reference" in Java-speak). |
|
#5
|
||||
|
||||
|
Re: Trouble with the AXDL345_I2C accelerometer.
Quote:
Quote:
Good luck! Last edited by wireties : 12-02-2012 at 07:43. |
![]() |
| Thread Tools | |
| Display Modes | Rate This Thread |
|
|