اطلاعیه

Collapse
No announcement yet.

مشکل با cmps03

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

    مشکل با cmps03

    سلام دوستان
    من چند تا ماژول cmps03 حریدم که مشکل دارم باهاشون . اونایی که باشون مشکل دارم این شکلین:

    ولی عینا همین کدی که من دارمم باهاش کار می کنم با این مدل cmps03 مشکلی نداره و به خوبی عدد میده:

    سوال اینه که آیا تفاوتی بین مدل جدید و قدیمی هست یا نه . ینی من باید تو کدم چه تغییراتی بدم ؟

    #2
    پاسخ : مشکل با cmps03

    مشکل چیست؟ اصلا عددی خروجی نمی دهد یا عدد خروجی درست نیست؟

    دیدگاه


      #3
      پاسخ : مشکل با cmps03

      فک کنم خروجی نمیده

      در ضمن تست کردم دیدم روی ماژول میتونم رایت کنم ولی تو خروجی ای که میگیرم 0 میده

      دیدگاه


        #4
        پاسخ : مشکل با cmps03

        در کل این دوتا تفاوت چندانی ندارند. شما کد را بگذارید تا بررسی کنیم.

        دیدگاه


          #5
          پاسخ : مشکل با cmps03

          خروجی صفر میده
          کد:
          while (1)
          i2c_start()
          i2c_write(oxc0)
          i2c_write(0x02)
          i2c_start()
          i2c_write(0xc1)
          h= i2c_read(1)
          l=i2c_read(0)
          i2c_stop()

          دیدگاه


            #6
            پاسخ : مشکل با cmps03

            نوشته اصلی توسط sqr
            خروجی صفر میده
            کد:
            while (1)
            i2c_start()
            i2c_write(oxc0)
            i2c_write(0x02)
            i2c_start()
            i2c_write(0xc1)
            h= i2c_read(1)
            l=i2c_read(0)
            i2c_stop()
            کد:
             int8 compass[4];
             
             i2c_start();
             i2c_write(0xC0);
             i2c_write(0x00);
             i2c_start();
             i2c_write(0xC1);
             compass[0] = i2c_read();   
             compass[1] = i2c_read();   
             compass[2] = i2c_read();   
             compass[3] = i2c_read(0);
             i2c_stop();
            
             z_angle =(float)( ((int16)compass[2] << 8) + (int16)compass[3]) / 10;
            این کد درسته
            کد شما روی کامپس های قدیمی هم نباید جواب بده!!!
            AYRIC

            دیدگاه


              #7
              پاسخ : مشکل با cmps03

              نوشته اصلی توسط roboreza
              کد:
               int8 compass[4];
               
               i2c_start();
               i2c_write(0xC0);
               i2c_write(0x00);
               i2c_start();
               i2c_write(0xC1);
               compass[0] = i2c_read();   
               compass[1] = i2c_read();   
               compass[2] = i2c_read();   
               compass[3] = i2c_read(0);
               i2c_stop();
              
               z_angle =(float)( ((int16)compass[2] << 8) + (int16)compass[3]) / 10;
              این کد درسته
              کد شما روی کامپس های قدیمی هم نباید جواب بده!!!
              شما خودتون از این جواب گرفتید؟ آخه فک نکنم از رجیستر صفر خروجی بده .

              دیدگاه


                #8
                پاسخ : مشکل با cmps03

                نوشته اصلی توسط sqr
                شما خودتون از این جواب گرفتید؟
                بله
                4 بار خوانده شده
                دو مقدار آخر خروجی کامپس به صورت 16 بیتی(0 تا 3600) هستند که از رجیستر های 2 و 3 گرفته شده
                مقدار اول ورزن نرم افزار و مقدار دوم خروجی کامپس به صورت 8 بیتی هست
                این سنسور با هربار رید کردن i2c شماره رجیستر رو 1 واحد افزایش میده
                اگر مقادیر درست نباشند مشکل از سخت افزارتونه
                AYRIC

                دیدگاه


                  #9
                  پاسخ : مشکل با cmps03

                  نوشته اصلی توسط sadeghmojtabaei
                  در کل این دوتا تفاوت چندانی ندارند. شما کد را بگذارید تا بررسی کنیم.
                  منم همین مشکل رو پیدا کردم عدد میده ولی اعداد به نظر معقولانه نیست و روی اعداد پرش داره.

                  دیدگاه

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