Chief Delphi

Chief Delphi (http://www.chiefdelphi.com/forums/index.php)
-   Programming (http://www.chiefdelphi.com/forums/forumdisplay.php?f=51)
-   -   Dual-Axis Accelerometer (http://www.chiefdelphi.com/forums/showthread.php?t=41909)

doubleslash 27-01-2006 02:55

Re: Dual-Axis Accelerometer
 
Quote:

Originally Posted by railerobotics
Sorry, Thanks. I still can't figure out why it is giving me a protoype error on the line that has atan2.

#include <math.h>

As a rule, any sort of math function has a good chance of being in "math.h," again, nothing a quick Google search can't confirm.

Team 614 27-01-2006 16:38

Re: Dual-Axis Accelerometer
 
Quote:

Originally Posted by Kevin Watson
Um, before posting, perhaps you could just google "atan2()".

-Kevin

PWNED>!!!!!11!!lll1!l!11!one!!11!

railerobotics 27-01-2006 21:31

Re: Dual-Axis Accelerometer
 
Quote:

Originally Posted by Kevin Watson
Here's my first-cut at code that will give an angle relative to the gravity vector, which points down. I'm working on a calibration routine for the bias,
but for now, just assume it's at the 2.5v mid-point. This code will work with the ADC code on my website. I imagine this code would work great for knowing what angle your ball launcher was at.

-Kevin

Code:


int Accel_Angle(void)
{
int x_axis;
int y_axis;
int angle;
 
x_axis
= (int)Get_ADC_Result(X_AXIS_CHANNEL) - X_AXIS_BIAS;
 
y_axis
= (int)Get_ADC_Result(Y_AXIS_CHANNEL) - Y_AXIS_BIAS;
 
angle
= (int)(ANGULAR_CONVERSION * atan2((float)y_axis, (float)x_axis));
 
return(angle);
}
 
 

Here are the constants:

Code:

// Analog channel on the robot controller that's hooked-up to
// the x-axis accelerometer
#define X_AXIS_CHANNEL 1

 
// Analog channel on the robot controller that's hooked-up to
// the y-axis accelerometer
#define Y_AXIS_CHANNEL 2
 
// 800Hz sample rate & 16 samples averaged per update (see adc.h)

#define X_AXIS_BIAS 2048

#define Y_AXIS_BIAS 2048
 

// Pick the angular unit by removing the // from one of these two lines.
// #define MILLIRADIANS
// #define TENTHS_OF_A_DEGREE
#define DEGREES
 
 
#ifdef MILLIRADIANS
#define ANGULAR_CONVERSION 1000.0// milliradians per radian
#endif
 
#ifdef TENTHS_OF_A_DEGREE
#define ANGULAR_CONVERSION 573.0// tenths of a degree per radian
#endif
 
#ifdef DEGREES
#define ANGULAR_CONVERSION 57.3// degrees per radian
#endif
 
// function prototypes
int Accel_Angle(void);


When I build this code I get a syntax error and it points me towards the bracket under int Accel_Angle(void). What's wrong?

TubaMorg 27-01-2006 22:06

Re: Dual-Axis Accelerometer
 
LOL Ok yall....quit taking code snippets and trying to compile them. Take the snippets with grace and appreciation for the fact that there's people here that can figure this stuff out. It is YOUR responsibility to adhere to proper C syntax to get it to compile. ORRRR you can wait for Kevin Watson to finish tweaking it and supply the entire source on his site. We should ALL thank him for his work. Without him half the teams would be lost! Hip hip....hoorayyy! :)

Oh in case it wasn't clear from my post, you need to add in the stuff that makes it a compilable C program (i.e. Math.h and appropriate brackets). Look at the rest of your working code for guidance. You could put the constants in Accel.h then the function blocks in Accel.c or something.


All times are GMT -5. The time now is 20:20.

Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Copyright © Chief Delphi