|
|
|
![]() |
|
|||||||
|
||||||||
![]() |
| Thread Tools | Rate Thread | Display Modes |
|
#1
|
||||
|
||||
|
Accelerometer Code Making Robot Stop Moving
Hey, apologies if this is an already answered question. I couldn't find anything on the topic.
The problem that we're having is whenever we state the accelerometer (not even doing anything with it, but just instantiating it), our robot components stop working completely. The robot won't move, et cetera. Also, we don't know how to get the values from the gyro once in teleop, or rather the method to use to get the values from the accelerometer. This is our code: Code:
class RobotDemo : public SimpleRobot
{
RobotDrive myRobot; // robot drive system
Joystick stick1, stick2; // only joystick
ADXL345_SPI adxl;
Code:
public: RobotDemo(void): myRobot(2, 1), // these must be initialized in the same order stick1(1), // as they are declared above. stick2(2), adxl(5, 6, 7, 8, ADXL345_SPI::kRange_2G) |
|
#2
|
|||
|
|||
|
Re: Accelerometer Code Making Robot Stop Moving
Quote:
If you only have one digital IO module in the cRIO, it will be module #1. Does the following code work better? Code:
adxl(1, 5, 6, 7, 8) |
|
#3
|
||||
|
||||
|
Re: Accelerometer Code Making Robot Stop Moving
It did work.. kinda. It gave us the values but after it showed us these values it didn't update after that:
X: 0 Y: 2 Z: 4 This is how we're getting the values: Code:
dsLCD->PrintfLine(DriverStationLCD::kUser_Line4, "Accelerometer X: %d", adxl.kAxis_X); dsLCD->PrintfLine(DriverStationLCD::kUser_Line5, "Accelerometer Y: %d", adxl.kAxis_Y); dsLCD->PrintfLine(DriverStationLCD::kUser_Line6, "Accelerometer Z: %d", adxl.kAxis_Z); |
|
#4
|
||||
|
||||
|
Re: Accelerometer Code Making Robot Stop Moving
Apologies! We just edited our code to try and find values:
Code:
dsLCD->PrintfLine(DriverStationLCD::kUser_Line4, "X: %d", adxl.GetAcceleration(adxl.kAxis_X)); dsLCD->PrintfLine(DriverStationLCD::kUser_Line5, "Y: %d", adxl.GetAcceleration(adxl.kAxis_Y)); dsLCD->PrintfLine(DriverStationLCD::kUser_Line6, "Z: %d", adxl.GetAcceleration(adxl.kAxis_Z)); X: 21360244 Y: 21360244 Z: 21360244 And the values never changed. Is there a "reset" for the accelerometer? Any ideas? |
|
#5
|
|||||
|
|||||
|
Re: Accelerometer Code Making Robot Stop Moving
I thought %d was for integers. Doesn't the GetAcceleration() method return a float?
|
|
#6
|
|||
|
|||
|
Re: Accelerometer Code Making Robot Stop Moving
in ADXL345_SPI.h, it says
Code:
virtual double GetAcceleration(Axes axis); |
|
#7
|
||||
|
||||
|
Re: Accelerometer Code Making Robot Stop Moving
Quote:
%f is for floats %i is for integers but the accelerometer values return a double as Sushena pointed out. |
![]() |
| Thread Tools | |
| Display Modes | Rate This Thread |
|
|