Esempio n. 1
0
int main ()
{	struct intvector mag;	// integer vector of magnetometer measurements
	#define magx mag.x.i16	// x axis
	#define magy mag.y.i16	// y axis
	#define magz mag.z.i16	// z axis

	microcontroller_init();

	uart1_open(57600l);		// open UART1

	printf ("Starting test...\n\r");
	microcontroller_delay_ms(5);
	i2c_init();				// Initialise the I2C(1) module
	hmc5843_init();			// initialize the HMC5843 chip
	test_HMC5843();			// display configuration and ID registers

	while(1)
	{
		hmc5843_read(&mag);		// update magnetometer data

		printf( "%5d %5d %5d -> %f\r\n",magx,magy,magz, atan2f(-magy,magx)/3.14*180.0);

		microcontroller_delay_ms(100);
		
	}	// end while
}		// end main
Esempio n. 2
0
int main ()
{	struct intvector mag;	// integer vector of magnetometer measurements
	#define magx mag.x.i16	// x axis
	#define magy mag.y.i16	// y axis
	#define magz mag.z.i16	// z axis

	microcontroller_init();

	uart1_open(38400);		// open UART1
	printf ("Starting test...\n\r");

	InitI2C();				// Initialise the I2C(1) module
	init_HMC5843();			// initialize the HMC5843 chip
	test_HMC5843();			// display configuration and ID registers

	while(1)
	{
		HMC5843(&mag);		// update magnetometer data

		printf( "%5d %5d %5d\r",magx,magy,magz);

		microcontroller_delay_ms(100);
		
	}	// end while
}		// end main
Esempio n. 3
0
int main()
{
    char buffer[20];
    int i;
    float tmp, roll_angle;
    float acc_gyro = 0, dt;
    struct Gyro1DKalman filter_roll;
    struct Gyro1DKalman filter_pitch;

    init_microcontroller();

    adc_init();
    adc_start();

    timer_init_ms();

    uart1_open();
    uart1_puts("Device initialized\n\r");

    uart1_puts("Entering main loop\n\r");

    init_Gyro1DKalman(&filter_roll, 0.0001, 0.0003, 0.69);

    while(1)
    {
        dt = timer_dt();   // time passed in s since last call

        // execute kalman filter
        tmp = PredictAccG_roll(accelero_z(), accelero_y(), accelero_x());
        ars_predict(&filter_roll, gyro_roll_rad(), dt);    // Kalman predict
        roll_angle = ars_update(&filter_roll, tmp);        // Kalman update + result (angle)

        //PrintAll(accelero_x(), accelero_y(), accelero_z(), gyro_roll_rad(), gyro_pitch_rad(), r);
        PrintForVbApp(roll_angle / 3.14*180.0, tmp);
        //PrintForStabilizer(r);
    }

    uart1_close();

    return 0;
}