ورود به حساب ثبت نام جدید فراموشی کلمه عبور
برای ورود به حساب کاربری خود، نام کاربری و کلمه عبورتان را در زیر وارد کرده و روی «ورود به سایت» کلیک کنید.





اگر فرم ورود برای شما نمایش داده نمیشود، اینجا را کلیک کنید.









اگر فرم ثبت نام برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.









اگر فرم بازیابی کلمه عبور برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.





کاربران برچسب زده شده

نمایش نتایج: از 1 به 2 از 2
  1. #1
    2013/12/19
    12
    0

    يه مشکل کوچيک با gy 271

    با سلام خدمت تمامي اساتيد
    من يه 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();
    	}	
    }
  2. #2
    2011/08/03
    193
    48

    پاسخ : يه مشکل کوچيک با gy 271

    سلام

    این نمونه کد زاویه رو توی دو محور به شما میده اگر بخواین تو سه محور کار کنه باید از محور z هم توی فرمولها استفاده بشه

    ممنون
    کد:
    '===============================================================================
    ' Project: HMC5883L digital compass test
    ' Created: 30/05/1392
    ' By:    alimohammad shafiee
    ' NOTE: Only uses x & y and not z to calculate so tilt will be incorrect...
    '-------------------------------------------------------------------------------
    
    '=====[ Compiler Directives ]===================================================
    $crystal = 8000000                     ' set via fuse bits to internal RC at 8megs
    $regfile = "m8def.dat"                   ' ATMEGA8A
    $hwstack = 64
    $swstack = 64
    $framesize = 64
    '-------------------------------------------------------------------------------
    
    '=====[ Global Vars & Constants ]===============================================
    
    Dim Hmc_x As Integer
    Dim Hmc_xl As Byte At Hmc_x + 0 Overlay
    Dim Hmc_xh As Byte At Hmc_x + 1 Overlay
    
    Dim Hmc_y As Integer
    Dim Hmc_yl As Byte At Hmc_y + 0 Overlay
    Dim Hmc_yh As Byte At Hmc_y + 1 Overlay
    
    Dim Hmc_z As Integer
    Dim Hmc_zl As Byte At Hmc_z + 0 Overlay
    Dim Hmc_zh As Byte At Hmc_z + 1 Overlay
    Dim Hmc_status As Byte
    
    Dim I As Byte
    Dim X As Single
    Dim Y As Single
    Dim Z As Single
    Dim Angle As Single
    Dim Real_angle As Single
    
    Const Hmc_w = &H3C                     ' HMC5883L Write address
    Const Hmc_r = &H3D                     ' HMC5883L Read address
    
    '-------------------------------------------------------------------------------
    
    Config Scl = Portc.5                    ' needed if using soft I2C
    Config Sda = Portc.4                    ' needed if using soft I2C
    Config I2cdelay = 20
    
    
    
    Config Lcd = 16x2
    Config Lcdpin = Pin , Db4 = Pind.4 , Db5 = Pind.5 , Db6 = Pind.6 , Db7 = Pind.7 , Rs = Pind.2 , E = Pind.3
    
    Cls
    Cursor Off
    Locate 1 , 3
    Lcd "electronic"
    Locate 2 , 5
    Lcd "compass"
    
    Waitms 3000
    Cls
    
    
    Gosub Hmc_initialize
    
    Waitms 100
    '-------------------------------------------------------------------------------
    
    '*****[ Start of main loop ]****************************************************
    Do
    
     Real_angle = 0
     For I = 1 To 5
    
      Gosub Hmc_readdata
    
      ' convert integer to float
      X = Hmc_x
      Y = Hmc_y
      Z = Hmc_z
    
      ' Calculate angle:
      ' angle= atan2((double)y,(double)x) * (180 / 3.14159265) + 180
      Angle = Atn2(y , X)
      Angle = Angle * 57.29577951               ' (180 / 3.14159265)
      Angle = Angle + 180
      Real_angle = Real_angle + Angle
      Next I
    
      Real_angle = Real_angle / 5
    
    
      Home
      Lcd "Angel= " ; Fusing(real_angle , "#.#") ; " N  "
    
    
      Loop
    
    End
    '-------------------------------------------------------------------------------
    
    
    '=====[ Initialize HMC Compass ]================================================
    Hmc_initialize:
    ' Initialize free running mode for compass
      I2cstart
      I2cwbyte Hmc_w
      I2cwbyte &H00                      ' set register possition to 0
      I2cwbyte &B01011000                   ' set ConfRegA [4samples, 75Hz, normal]
      I2cwbyte &H00100000                   ' set ConfRegC [gain to default (1090)]
      I2cwbyte &H00000000                   ' set free running mode
      I2cstop
    Return
    '-------------------------------------------------------------------------------
    
    '=====[ Read HMC Compass ]======================================================
    Hmc_readstatus:
    ' Read HMC Compass status
      I2cstart
      I2cwbyte Hmc_w
      I2cwbyte &H09                      ' set read position
      I2cstart
      I2cwbyte Hmc_r
      I2crbyte Hmc_status , Nack               ' read in status
      I2cstop
    Return
    '-------------------------------------------------------------------------------
    
    '=====[ Read HMC Compass ]======================================================
    Hmc_readdata:
    ' Read HMC Compass X, Y, Z integer values
      I2cstart
      I2cwbyte Hmc_w
      I2cwbyte &H03
      I2cstop
      Waitms 100                       ' set read position
      I2cstart
      I2cwbyte Hmc_r
      I2crbyte Hmc_xh , Ack                  ' read in high order x
      I2crbyte Hmc_xl , Ack                  ' read in low order x
      I2crbyte Hmc_zh , Ack                  ' read in high order z
      I2crbyte Hmc_zl , Ack                  ' read in low order z
      I2crbyte Hmc_yh , Ack                  ' read in high order y
      I2crbyte Hmc_yl , Nack                 ' read in low order y
      I2cstop
    Return
    '-------------------------------------------------------------------------------
    عامل کليدي تمام موفقيتها " عمل کردن" است
نمایش نتایج: از 1 به 2 از 2

موضوعات مشابه

  1. يه مشکل کوچيک با تايمر
    توسط raz17 در انجمن میکروکنترلرهای AVR
    پاسخ: 1
    آخرين نوشته: 2014/11/08, 10:07
  2. يه سؤال کوچيک
    توسط javad1400 در انجمن پروسسورهای ARM
    پاسخ: 10
    آخرين نوشته: 2014/08/30, 21:03
  3. يه سؤال کوچيک
    توسط javad1400 در انجمن سایر مطالب مرتبط با ميکرو ها و پروسسورها
    پاسخ: 4
    آخرين نوشته: 2014/08/29, 15:00
  4. يک مشکل کوچيک با پروگرمر JLink
    توسط mohammadali1375 در انجمن پروسسورهای ARM
    پاسخ: 2
    آخرين نوشته: 2014/03/17, 23:46
  5. اشکال کوچيک در اسپايس
    توسط siavash66 در انجمن مدارهای مجتمع خطی
    پاسخ: 0
    آخرين نوشته: 2013/06/30, 01:16

کلمات کلیدی این موضوع

علاقه مندي ها (Bookmarks)

علاقه مندي ها (Bookmarks)

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •