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
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
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; }