اطلاعیه

Collapse
No announcement yet.

راه اندازی ماژول gy-80

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    راه اندازی ماژول gy-80

    سلام به دوستان عزیز ایام فاطمیه رو به همه دوستان تسلیت میگم
    برای راه اندازی ماژول IMU تقریبا دوروزه دارم تو نت میگردم اما هرچی پیدا میکنم یا با زبان سی هست یا با واسط اردونیو مثل این سایت

    http://www.forum.arduino.ir/8/21/202...://192.168.1.1

    تنها برنامه ای که بیسیک بودو تونستم پیدا کنم اینه که همراه ماژول gps هست و واسه فلایت کنترلر نوشته شده

    http://www.mcselec.com/index.php?opt...sk=view&id=269

    دارم دیگه قاطی میکنم
    دوستان خواهشا اگه کسی با این ماژول کار کرده ووبرنامه بیسیک نوشته شده داره کمکم کنه وو اینجا برنامشو بزاره تا بفهمم چیکار باید بکنم

    پیشاپیش ممنون از همه شما

    #2
    پاسخ : راه اندازی ماژول gy-80

    نوشته اصلی توسط رامین چمن آرا
    سلام به دوستان عزیز ایام فاطمیه رو به همه دوستان تسلیت میگم
    برای راه اندازی ماژول IMU تقریبا دوروزه دارم تو نت میگردم اما هرچی پیدا میکنم یا با زبان سی هست یا با واسط اردونیو مثل این سایت

    http://www.forum.arduino.ir/8/21/202...://192.168.1.1

    تنها برنامه ای که بیسیک بودو تونستم پیدا کنم اینه که همراه ماژول gps هست و واسه فلایت کنترلر نوشته شده

    http://www.mcselec.com/index.php?opt...sk=view&id=269

    دارم دیگه قاطی میکنم
    دوستان خواهشا اگه کسی با این ماژول کار کرده ووبرنامه بیسیک نوشته شده داره کمکم کنه وو اینجا برنامشو بزاره تا بفهمم چیکار باید بکنم

    پیشاپیش ممنون از همه شما
    رامین جان شما هنوز بیسیک کار میکنی خوب بیا این دفعه کلا زبان C را یاد بگیر خودت را خلاص کن از بند بیسیک
    دوربين مدار بسته و دزد گير و رفع مشكلات
    بانك اطلاعاتي سنسورها
    ساخت رقص نور براي شيشه سكوريت مغازه ها
    تعمير لوازم خانگي را اينجا مطرح كنيد
    [move][b] موفقيت بر روي ستون هاي شکست شکل مي گيرد.

    دیدگاه


      #3
      پاسخ : راه اندازی ماژول gy-80

      نوشته اصلی توسط حمید رضا ریاحی
      رامین جان شما هنوز بیسیک کار میکنی خوب بیا این دفعه کلا زبان C را یاد بگیر خودت را خلاص کن از بند بیسیک
      سلام داداش حمید خودم.خوبی پسر؟کجایی بامرام
      چه کنیم زنو بچه نمیزارن وقت کنیم بریم دنبال سی
      هی یخوام سی رو شروع کنم یه مشکل پیش میاد مجبور میشم ولش کنم
      میدونم زبان سی بهتره .ای کاش از همون اول سی یاد میگرفتم .ایشا... سی رو هم به زودی با جدیت شروع میکنم
      تا خدا چی بخواد.
      حمید با این ماژول کار کردی؟برنامشو داری؟

      دیدگاه


        #4
        پاسخ : راه اندازی ماژول gy-80

        اگر قطب نما خواستی بگو برنامه اش رو نوشتم برات بزارم

        دیدگاه


          #5
          پاسخ : راه اندازی ماژول gy-80

          نوشته اصلی توسط بنیامین خلیلی
          اگر قطب نما خواستی بگو برنامه اش رو نوشتم برات بزارم
          لطف میکنی.بلاخره از یه قسمتیش باید شروع کرد
          دست گلت درد نکنه

          دیدگاه


            #6
            پاسخ : راه اندازی ماژول gy-80

            اگر مازولت مثل من GY-271هست کد زیر جواب می ده
            کد:
            #include <mega8.h>
             #include <delay.h>
            // I2C Bus functions
            #include <i2c.h>
              #include <math.h>
            // Alphanumeric LCD functions
            #include <alcd.h>
              #include <stdlib.h>
            // Standard Input/Output functions
            #include <stdio.h>
            
            // Declare your global variables here
            
            void main(void)
            {
            // Declare your local variables here
            int a;
            int xh;
             double angle;
             float xo;
             int xl;
             double yh;
             int yl;
             float yo;
             double zh;
            
             double l;
             double zl;
             double zo;
             char bb[20];
              char aa[100]; 
              char cc[22];
            // Input/Output Ports initialization
            // Port B initialization
            // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
            // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
            PORTB=0x00;
            DDRB=0x00;
            
            
            PORTC=0x00;
            DDRC=0x00;
            
            
            PORTD=0x00;
            DDRD=0x00;
            
            // Timer/Counter 0 initialization
            // Clock source: System Clock
            // Clock value: Timer 0 Stopped
            TCCR0=0x00;
            TCNT0=0x00;
            TCCR1A=0x00;
            TCCR1B=0x00;
            TCNT1H=0x00;
            TCNT1L=0x00;
            ICR1H=0x00;
            ICR1L=0x00;
            OCR1AH=0x00;
            OCR1AL=0x00;
            OCR1BH=0x00;
            OCR1BL=0x00;
            
            // Timer/Counter 2 initialization
            // Clock source: System Clock
            // Clock value: Timer2 Stopped
            // Mode: Normal top=0xFF
            // OC2 output: Disconnected
            ASSR=0x00;
            TCCR2=0x00;
            TCNT2=0x00;
            OCR2=0x00;
            
            // External Interrupt(s) initialization
            // INT0: Off
            // INT1: Off
            MCUCR=0x00;
            
            // Timer(s)/Counter(s) Interrupt(s) initialization
            TIMSK=0x00;
            
            // USART initialization
            // Communication Parameters: 8 Data, 1 Stop, No Parity
            // USART Receiver: On
            // USART Transmitter: On
            // USART Mode: Asynchronous
            // USART Baud Rate: 2400
            UCSRA=0x00;
            UCSRB=0x18;
            UCSRC=0x86;
            UBRRH=0x00;
            UBRRL=0x19;
            
            
            // Analog Comparator Input Capture by Timer/Counter 1: Off
            ACSR=0x80;
            SFIOR=0x00;
            
            
            ADCSRA=0x00;
            
            SPCR=0x00;
            
            TWCR=0x00;
            
            i2c_init();
            
            lcd_init(8);
            
            while (1)
               {
               // Place your code here 
               i2c_start();
                delay_ms(10);
                i2c_write(0x3C);  //write to HMC
                delay_ms(10);
                i2c_write(0x02);  //mode register
                delay_ms(10);
                i2c_write(0x00);  //continuous measurement mode
                delay_ms(10);
                i2c_stop();
             //===================================================================================   
                //must read all six registers plus one to move the pointer back to 0x03
                i2c_start();
                delay_ms(10);
                i2c_write(0x3D);     //read from HMC
                delay_ms(10);
                xh = i2c_read(1);  //x high byte
                delay_ms(10);
             xl = i2c_read(1); //x low byte
                delay_ms(10);
                xo = xl|(xh << 8); 
                 
                lcd_gotoxy(0,0);
                itoa(xo,bb);
                lcd_puts(bb); 
                delay_ms(50); 
                
             //==================================================================================
                yh = i2c_read(1);  //x high byte
                delay_ms(10);
             yl = i2c_read(1); //x low byte
                delay_ms(10);
                yo = yl|(xh << 8); 
              
                lcd_gotoxy(4,0);
               itoa(yo,cc);
               lcd_puts(cc);
                delay_ms(50);
              
                i2c_write(0x3D);     //must reach 0x09 to go back to 0x03
               
                
                
                
                
                i2c_stop();
            
               angle= atan2((double)yo,(double)xo) * (180 / 3.14159265) + 180; // angle in degrees
                
            itoa(angle,aa);; 
            
            lcd_gotoxy(0,1);
            lcd_puts(aa); 
             puts(aa);
            if((angle<22)||(angle>337)){
            lcd_gotoxy(5,1);
                   lcd_putsf("S");
                   //printf("S%c");
                   
            } 
            if((angle>22)&&(angle<67)){
            lcd_gotoxy(4,1);
                   lcd_putsf("S_W");
                   // printf("S-W%c");
            }
            if((angle>67)&&(angle<112)){
            lcd_gotoxy(4,1);
                   lcd_putsf("W");
                   //printf("W%c");
                   
            }
            if((angle>112)&&(angle<157)){
            lcd_gotoxy(5,1);
                   lcd_putsf("N_W");
                  // printf("N-W%c");
            } 
            if((angle>157)&&(angle<202)){
            lcd_gotoxy(5,1);
                   lcd_putsf("N");
                   // printf("N%c");
            }
            if((angle>202)&&(angle<247)){
            lcd_gotoxy(5,1);
                   lcd_putsf("N_E");
                   // printf("N-E%c");
            }
            if((angle>247)&&(angle<292)){
            lcd_gotoxy(5,1);
                   lcd_putsf("E");
                   //printf("E%c");
            }  
            if((angle>292)&&(angle<337)){
            lcd_gotoxy(5,1);
                   lcd_putsf("S_E");
                   //printf("S-E%c");
            }
            
                delay_ms(100);     
                lcd_clear();
              
               
               }
            
               
            }

            دیدگاه


              #7
              پاسخ : راه اندازی ماژول gy-80

              نوشته اصلی توسط بنیامین خلیلی
              اگر مازولت مثل من GY-271هست کد زیر جواب می ده
              کد:
              #include <mega8.h>
               #include <delay.h>
              // I2C Bus functions
              #include <i2c.h>
                #include <math.h>
              // Alphanumeric LCD functions
              #include <alcd.h>
                #include <stdlib.h>
              // Standard Input/Output functions
              #include <stdio.h>
              
              // Declare your global variables here
              
              void main(void)
              {
              // Declare your local variables here
              int a;
              int xh;
               double angle;
               float xo;
               int xl;
               double yh;
               int yl;
               float yo;
               double zh;
              
               double l;
               double zl;
               double zo;
               char bb[20];
                char aa[100]; 
                char cc[22];
              // Input/Output Ports initialization
              // Port B initialization
              // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
              // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
              PORTB=0x00;
              DDRB=0x00;
              
              
              PORTC=0x00;
              DDRC=0x00;
              
              
              PORTD=0x00;
              DDRD=0x00;
              
              // Timer/Counter 0 initialization
              // Clock source: System Clock
              // Clock value: Timer 0 Stopped
              TCCR0=0x00;
              TCNT0=0x00;
              TCCR1A=0x00;
              TCCR1B=0x00;
              TCNT1H=0x00;
              TCNT1L=0x00;
              ICR1H=0x00;
              ICR1L=0x00;
              OCR1AH=0x00;
              OCR1AL=0x00;
              OCR1BH=0x00;
              OCR1BL=0x00;
              
              // Timer/Counter 2 initialization
              // Clock source: System Clock
              // Clock value: Timer2 Stopped
              // Mode: Normal top=0xFF
              // OC2 output: Disconnected
              ASSR=0x00;
              TCCR2=0x00;
              TCNT2=0x00;
              OCR2=0x00;
              
              // External Interrupt(s) initialization
              // INT0: Off
              // INT1: Off
              MCUCR=0x00;
              
              // Timer(s)/Counter(s) Interrupt(s) initialization
              TIMSK=0x00;
              
              // USART initialization
              // Communication Parameters: 8 Data, 1 Stop, No Parity
              // USART Receiver: On
              // USART Transmitter: On
              // USART Mode: Asynchronous
              // USART Baud Rate: 2400
              UCSRA=0x00;
              UCSRB=0x18;
              UCSRC=0x86;
              UBRRH=0x00;
              UBRRL=0x19;
              
              
              // Analog Comparator Input Capture by Timer/Counter 1: Off
              ACSR=0x80;
              SFIOR=0x00;
              
              
              ADCSRA=0x00;
              
              SPCR=0x00;
              
              TWCR=0x00;
              
              i2c_init();
              
              lcd_init(8);
              
              while (1)
                 {
                 // Place your code here 
                 i2c_start();
                  delay_ms(10);
                  i2c_write(0x3C);  //write to HMC
                  delay_ms(10);
                  i2c_write(0x02);  //mode register
                  delay_ms(10);
                  i2c_write(0x00);  //continuous measurement mode
                  delay_ms(10);
                  i2c_stop();
               //===================================================================================   
                  //must read all six registers plus one to move the pointer back to 0x03
                  i2c_start();
                  delay_ms(10);
                  i2c_write(0x3D);     //read from HMC
                  delay_ms(10);
                  xh = i2c_read(1);  //x high byte
                  delay_ms(10);
               xl = i2c_read(1); //x low byte
                  delay_ms(10);
                  xo = xl|(xh << 8); 
                   
                  lcd_gotoxy(0,0);
                  itoa(xo,bb);
                  lcd_puts(bb); 
                  delay_ms(50); 
                  
               //==================================================================================
                  yh = i2c_read(1);  //x high byte
                  delay_ms(10);
               yl = i2c_read(1); //x low byte
                  delay_ms(10);
                  yo = yl|(xh << 8); 
                
                  lcd_gotoxy(4,0);
                 itoa(yo,cc);
                 lcd_puts(cc);
                  delay_ms(50);
                
                  i2c_write(0x3D);     //must reach 0x09 to go back to 0x03
                 
                  
                  
                  
                  
                  i2c_stop();
              
                 angle= atan2((double)yo,(double)xo) * (180 / 3.14159265) + 180; // angle in degrees
                  
              itoa(angle,aa);; 
              
              lcd_gotoxy(0,1);
              lcd_puts(aa); 
               puts(aa);
              if((angle<22)||(angle>337)){
              lcd_gotoxy(5,1);
                     lcd_putsf("S");
                     //printf("S%c");
                     
              } 
              if((angle>22)&&(angle<67)){
              lcd_gotoxy(4,1);
                     lcd_putsf("S_W");
                     // printf("S-W%c");
              }
              if((angle>67)&&(angle<112)){
              lcd_gotoxy(4,1);
                     lcd_putsf("W");
                     //printf("W%c");
                     
              }
              if((angle>112)&&(angle<157)){
              lcd_gotoxy(5,1);
                     lcd_putsf("N_W");
                    // printf("N-W%c");
              } 
              if((angle>157)&&(angle<202)){
              lcd_gotoxy(5,1);
                     lcd_putsf("N");
                     // printf("N%c");
              }
              if((angle>202)&&(angle<247)){
              lcd_gotoxy(5,1);
                     lcd_putsf("N_E");
                     // printf("N-E%c");
              }
              if((angle>247)&&(angle<292)){
              lcd_gotoxy(5,1);
                     lcd_putsf("E");
                     //printf("E%c");
              }  
              if((angle>292)&&(angle<337)){
              lcd_gotoxy(5,1);
                     lcd_putsf("S_E");
                     //printf("S-E%c");
              }
              
                  delay_ms(100);     
                  lcd_clear();
                
                 
                 }
              
                 
              }
              ممنون بنیامین جان لطف کردی.حیف که من زبان سی بلد نیستم.اگه بیسیکشو میزاشی عالی میشد

              دیدگاه


                #8
                پاسخ : راه اندازی ماژول gy-80

                بیسیک کار نکن من کار کردم الان پشیمون هستم ای کاش سی کار می کردم همش الان خیلی بلدتر بودم سی بهتره قدرتمندتره منطقی تره و ....

                دیدگاه


                  #9
                  پاسخ : راه اندازی ماژول gy-80

                  سلام
                  میخواستم ببینم برای راه اندازی این ماژول از کجا باید شروع کنم. فقط میدونم که با پروتوکل i2c اطلاعاتو میشه خوند.
                  و از 4 سنسور شتاب - ژیروسکوپ - قطب نما - فشار تشکیل شده. سوال مبهمی که تو ذهنمه اینکه تو ارتباط i2 c میشه به طور همزمان مثلا با شتاب سنج و ژیروسکوپ ارتباط بر قرار کرد یا یه فاصلی ی زمانی خیلی کمی برای خوندنشون باید باشه . اگر کسسی در این زمینه اطلاعاتی داره راهنمایی کنه سپاسگذار میشم.

                  در ضمن یه نمونه برنامه نویسی هم برای شتاب سنجadxl345 به زبون c خوندم از سایت roboengo اما میخوام بدونم با بسکام چطور میشه این کار رو کرد.

                  دیدگاه


                    #10
                    پاسخ : راه اندازی ماژول gy-80

                    سلام

                    یه شبکه I2C داریم

                    دیدگاه


                      #11
                      پاسخ : راه اندازی ماژول gy-80

                      سلام
                      من برای مکان یابی در انتخاب بین دو ماژول GY-80 و MPU9250 موندم :angry:
                      دقت برام مهمترین چیزه
                      کسی با این دو ماژول کار کرده؟ کدوم دقیق تر و صحیحتره ؟

                      دیدگاه

                      لطفا صبر کنید...
                      X