با سلام خدمت تمامی اساتید
من یه gy271 از eca خریدم
با میکرو 7x256 راه اندازی کردم
من توی سه محور سه تا دیتا رو دریافت میکنم ولی نمیدونم چجور باید این اعداد رو به زاویه تبدیل کرد
ممنون میشم از اساتید اگه کمک کنن
این هم کد برنامه که کامل جواب میده
توی سایت هم گشتم یه سری محاسبات گیر آوردم ولی کامل گیج شدم
من یه gy271 از eca خریدم
با میکرو 7x256 راه اندازی کردم
من توی سه محور سه تا دیتا رو دریافت میکنم ولی نمیدونم چجور باید این اعداد رو به زاویه تبدیل کرد
ممنون میشم از اساتید اگه کمک کنن
این هم کد برنامه که کامل جواب میده
توی سایت هم گشتم یه سری محاسبات گیر آوردم ولی کامل گیج شدم
کد:
#include <at91sam7x256.h> #include <delay.h> #include <TFTLCD.h> #include <twi.c> #include <PIO.h> #include <stdio.h> char PORTRAIT = 0; char data; char LCD_Show_X[20],LCD_Show_Y[20],LCD_Show_Z[20]; char A=0x71; char B=0xA0; char C=0x00; char Rx; char Raw_Xout_Val_LSB=0, Raw_Yout_Val_LSB=0, Raw_Zout_Val_LSB=0; char Raw_Xout_Val_MSB=0, Raw_Yout_Val_MSB=0, Raw_Zout_Val_MSB=0; unsigned int X_Angle; unsigned int Y_Angle; unsigned int Z_Angle; int main(){ tftlcd_init(); *AT91C_PMC_PCER = (1<<9); //I2c Configuration PIO /* *AT91C_PIOA_PDR = (1<<10 | 1<<11); *AT91C_PIOA_ASR = (1<<10 | 1<<11); *AT91C_PIOA_MDER = (1<<10 | 1<<11); *AT91C_PIOA_PPUER = (1<<10 | 1<<11); */ PIO_Periph(PORT_A,1<<10 | 1<<11,0); //(6) PIO_Opendrain(PORT_A,1<<10 | 1<<11); //(7) Pullup(PORT_A,1<<10 | 1<<11); TWI_Configure(100000);//100k TWI_WriteByteIadr(BASE_TWI,0x1E,0x00,1,&A); delay_ms (10); // tftlcd_putchar('0',BLUE,GREEN,1); TWI_WriteByteIadr(BASE_TWI,0x1E,0x01,1,&B); delay_ms (10); // tftlcd_putchar('1',BLUE,GREEN,1); TWI_WriteByteIadr(BASE_TWI,0x1E,0x02,1,&C); delay_ms (10); // tftlcd_putchar('2',BLUE,GREEN,1); while(1){ TWI_ReadByteIadr(BASE_TWI,0x1E,0x03,1,&Raw_Xout_Val_MSB); TWI_ReadByteIadr(BASE_TWI,0x1E,0x04,1,&Raw_Xout_Val_LSB); TWI_ReadByteIadr(BASE_TWI,0x1E,0x05,1,&Raw_Yout_Val_MSB); TWI_ReadByteIadr(BASE_TWI,0x1E,0x06,1,&Raw_Yout_Val_LSB); TWI_ReadByteIadr(BASE_TWI,0x1E,0x07,1,&Raw_Zout_Val_MSB); TWI_ReadByteIadr(BASE_TWI,0x1E,0x08,1,&Raw_Zout_Val_LSB); X_Angle = (Raw_Xout_Val_MSB<<8|Raw_Xout_Val_LSB); Y_Angle = (Raw_Yout_Val_MSB<<8|Raw_Yout_Val_LSB); Z_Angle = (Raw_Zout_Val_MSB<<8|Raw_Zout_Val_LSB); tftlcd_gotoxy(0,0); sprintf(LCD_Show_X,"%d",X_Angle); tftlcd_puts(LCD_Show_X,BLUE,GREEN,1); tftlcd_gotoxy(0,1); sprintf(LCD_Show_Y,"%d",Y_Angle); tftlcd_puts(LCD_Show_Y,BLUE,GREEN,1); tftlcd_gotoxy(0,2); sprintf(LCD_Show_Z,"%d",Z_Angle); tftlcd_puts(LCD_Show_Z,BLUE,GREEN,1); delay_ms (500); tftlcd_clear(); } }
دیدگاه