مكتبة Arduino للتواصل مع وحدات القياس بالقصور الذاتي ذات المحاور الستة ICM42688 (IMU).
يدعم InvenSense ICM42688 I2C، حتى 400 كيلو هرتز، واتصال SPI، حتى 1 ميجا هرتز لإعداد التسجيل و24 ميجا هرتز لقراءة البيانات. تتوفر نطاقات أجهزة الاستشعار واسعة النطاق التالية القابلة للتحديد:
جيروسكوب النطاق الكامل | نطاق مقياس التسارع الكامل |
---|---|
+/- 15.6 (درجة/ثانية) | - |
+/- 31.2 (درجة/ثانية) | - |
+/- 62.5 (درجة/ثانية) | - |
+/- 125 (درجة/ثانية) | - |
+/- 250 (درجة/ثانية) | +/- 2 (ز) |
+/- 500 (درجة/ثانية) | +/- 4 (ز) |
+/- 1000 (درجة/ثانية) | +/- 8 (ز) |
+/- 2000 (درجة/ثانية) | +/- 16 (ز) |
يقوم ICM42688 باختبار الجيروسكوبات ومقاييس التسارع باستخدام محولات تناظرية إلى رقمية 16 بت. كما يتميز أيضًا بمرشحات رقمية قابلة للبرمجة، وساعة دقيقة، ومستشعر درجة حرارة مدمج، ومقاطعات قابلة للبرمجة (بما في ذلك التنبيه عند الحركة)، ومخزن مؤقت FIFO سعة 512 بايت.
تدعم هذه المكتبة اتصالات I2C وSPI مع ICM42688.
ما عليك سوى استنساخ هذه المكتبة أو تنزيلها في مجلد Arduino/libraries الخاص بك.
تدعم هذه المكتبة اتصالات I2C وSPI مع ICM42688. تم تحميل تعريف كائن ICM42688 بشكل زائد بتعريفات مختلفة لاتصالات I2C وSPI. تظل جميع الوظائف الأخرى كما هي. بالإضافة إلى ذلك، يتم تضمين فئة مشتقة، ICM42688FIFO ، والتي توفر وظيفة إعداد FIFO وتجميع البيانات بالإضافة إلى كافة الوظائف المضمنة في فئة ICM42688 الأساسية.
ICM42688(TwoWire &bus, uint8_t عنوان) يجب تعريف كائن ICM42688، مع تحديد ناقل I2C وعنوان ICM42688 I2C. سيكون عنوان ICM42688 I2C هو 0x68 إذا تم تأريض طرف AD0 أو 0x69 إذا تم سحب طرف AD0 للأعلى. على سبيل المثال، تعلن التعليمة البرمجية التالية عن كائن ICM42688 يسمى IMU مع مستشعر ICM42688 الموجود على ناقل I2C 0 مع عنوان مستشعر 0x68 (AD0 مؤرض).
ICM42688 IMU (Wire, 0x68 );
ICM42688(TwoWire &bus, uint8_t عنوان) يجب تعريف كائن ICM42688، مع تحديد ناقل I2C وعنوان ICM42688 I2C. سيكون عنوان ICM42688 I2C هو 0x68 إذا تم تأريض طرف AD0 أو 0x69 إذا تم سحب طرف AD0 للأعلى. على سبيل المثال، تعلن التعليمة البرمجية التالية عن كائن ICM42688 يسمى IMU مع مستشعر ICM42688 الموجود على ناقل I2C 0 مع عنوان مستشعر 0x68 (AD0 مؤرض). يجب عليك تحديد دبابيس SDA وSCL لاتصال I2C الخاص بك (الافتراضي لـ Arduino هو SDA=18، SCL=19، ESP32 هو SDA=21، SCL=22)
ICM42688 IMU (Wire, 0x68 , _sda_pin, _scl_pin);
ICM42688FIFO(SPIClass &bus, uint8_t csPin, uint32_t SPI_HS_CLK=8000000) يجب الإعلان عن كائن ICM42688، مع تحديد ناقل SPI ودبوس تحديد الشريحة المستخدمة. يمكن استخدام عدة ICM42688 أو كائنات SPI أخرى على نفس ناقل SPI، ولكل منها دبوس تحديد الشريحة الخاص بها. يمكن أن يكون دبوس تحديد الشريحة هو أي دبوس رقمي متاح. على سبيل المثال، يعلن التعليمة البرمجية التالية عن كائن ICM42688 يسمى IMU مع مستشعر ICM42688 الموجود على ناقل SPI 0 مع الشريحة المحددة رقم 10.
ICM42688 IMU (SPI, 10 );
لاحظ أنه تم ضبط ساعة ناقل SPI عالية السرعة الافتراضية على 8 ميجا هرتز، لكن ICM 42688-p يدعم ما يصل إلى 24 ميجا هرتز على مدار الساعة SPI. استخدم ساعة أسرع لنقل بيانات SPI بشكل أسرع عند قراءة البيانات.
يتم استخدام الوظائف التالية لإعداد حساس ICM42688. يجب أن يتم استدعاؤها مرة واحدة قبل جمع البيانات، وعادةً ما يتم ذلك في وظيفة Arduino setup()
. يجب دائمًا استخدام الدالة begin()
. اختياريًا، يمكن استخدام وظائف setAccelFS
و setGyroFS
و setAccelODR
و setGyroODR
لتعيين نطاقات النطاق الكامل لمقياس التسارع والجيروسكوب ومعدل بيانات الإخراج إلى قيم غير القيمة الافتراضية. يتحكم الخيار enableDataReadyInterrupt
و disableDataReadyInterrupt
في ما إذا كان ICM42688 يقوم بإنشاء مقاطعة على البيانات الجاهزة. يقوم enableFifo
بإعداد وتمكين المخزن المؤقت FIFO. يتم وصف هذه الوظائف بالتفصيل أدناه.
int begin() يجب استدعاء هذا في وظيفة الإعداد الخاصة بك. فهو يبدأ الاتصال مع ICM42688، ويقوم بإعداد المستشعر لقراءة البيانات، ويقدر انحياز الجيروسكوب، الذي تتم إزالته من بيانات المستشعر. ترجع هذه الدالة قيمة موجبة عند التهيئة الناجحة وترجع قيمة سالبة عند التهيئة غير الناجحة. إذا لم ينجح ذلك، يرجى التحقق من الأسلاك أو محاولة إعادة ضبط الطاقة على المستشعر. ما يلي هو مثال لإعداد ICM42688.
int status = IMU.begin();
(اختياري) int setAccelRange(نطاق AccelRange) تقوم هذه الوظيفة بتعيين نطاق مقياس التسارع الكامل على القيمة المحددة. افتراضيًا، إذا لم يتم استدعاء هذه الوظيفة، فسيتم استخدام نطاق كامل يبلغ +/- 16 جم. النطاقات الكاملة لمقياس التسارع المذكورة هي:
اسم مقياس التسارع | نطاق مقياس التسارع الكامل |
---|---|
gpm2 | +/- 2 (ز) |
gpm4 | +/- 4 (ز) |
gpm8 | +/- 8 (ز) |
gpm16 | +/- 16 (ز) |
تُرجع هذه الدالة قيمة موجبة عند النجاح وقيمة سالبة عند الفشل. الرجاء الاطلاع على مثال Advanced_I2C . فيما يلي مثال على اختيار نطاق مقياس التسارع الكامل +/- 8 جم.
status = IMU.setAccelFS(ICM42688::gpm2);
(اختياري) int setGyroRange(GyroRange range) تقوم هذه الوظيفة بتعيين نطاق النطاق الكامل للجيروسكوب على القيمة المحددة. افتراضيًا، إذا لم يتم استدعاء هذه الوظيفة، سيتم استخدام نطاق كامل من +/- 2000 درجة/ثانية. نطاقات النطاق الكامل للجيروسكوب المذكورة هي:
اسم الجيروسكوب | جيروسكوب النطاق الكامل |
---|---|
dps15_625 | +/- 15.625 (درجة/ثانية) |
dps31_25 | +/- 31.25 (درجة/ثانية) |
dps62_5 | +/- 62.5 (درجة/ثانية) |
dps125 | +/- 125 (درجة/ثانية) |
dps250 | +/- 250 (درجة/ثانية) |
dps500 | +/- 500 (درجة/ثانية) |
dps1000 | +/- 1000 (درجة/ثانية) |
dps2000 | +/- 2000 (درجة/ثانية) |
ترجع هذه الدالة قيمة موجبة عند النجاح وقيمة سالبة عند الفشل. الرجاء الاطلاع على مثال Advanced_I2C . فيما يلي مثال على اختيار نطاق جيروسكوب كامل النطاق +/- 250 درجة/ثانية.
status = IMU.setGyroFS(ICM42688::dps250);
(اختياري) int setFilters(bool gyroFilters, bool accFilters) هذه وظيفة اختيارية لتعيين عوامل التصفية القابلة للبرمجة (Notch Filter، Anti-Alias Filter، UI Filter Block). بشكل افتراضي، يتم تشغيل جميع عوامل التصفية. يوضح الشكل التالي رسمًا تخطيطيًا لمسار الإشارة لـ ICM42688:
تُرجع هذه الدالة قيمة موجبة عند النجاح وقيمة سالبة عند الفشل. فيما يلي مثال على تشغيل المرشحات.
status = IMU.setFilters( true , true );
(اختياري) intenableDataReadyInterrupt() ترتبط المقاطعة بمعدل إخراج البيانات. سوف يقوم طرف ICM42688 INT بإصدار نبضة 50us عندما تكون البيانات جاهزة. يعد هذا مفيدًا للغاية لاستخدام المقاطعات لجمع البيانات على مدار الساعة والتي يجب أن تحدث على فترات زمنية منتظمة. يرجى الاطلاع على مثال Interrupt_SPI . تعمل هذه الوظيفة على تمكين هذه المقاطعة، والتي ستحدث عند تردد محدد بواسطة الجهاز SRD. ترجع هذه الدالة قيمة موجبة عند النجاح وقيمة سالبة عند الفشل. ما يلي هو مثال لتمكين مقاطعة البيانات الجاهزة.
status = IMU.enableDataReadyInterrupt();
(اختياري) int DisableDataReadyInterrupt() تعمل هذه الوظيفة على تعطيل مقاطعة البيانات الجاهزة، الموضحة أعلاه. ترجع هذه الدالة قيمة موجبة عند النجاح وقيمة سالبة عند الفشل. ما يلي هو مثال لتعطيل مقاطعة البيانات الجاهزة.
status = IMU.disableDataReadyInterrupt();
(اختياري) uin8_t isInterrupted() هذه الوظيفة تقرأ بيانات تسجيل المقاطعة الجاهزة. ترجع هذه الدالة صحيحًا عند مقاطعتها. فيما يلي مثال على قراءة سجل المقاطعة الجاهز لقراءة البيانات.
status = IMU.isInterrupted();
(اختياري) int calibrateGyro() يتم تقدير انحياز الجيروسكوب تلقائيًا أثناء وظيفة begin() وإزالته من قياسات المستشعر. ستعمل هذه الوظيفة على إعادة تقدير انحياز الجيروسكوب وإزالة الانحياز الجديد من قياسات المستشعر المستقبلية. يجب أن يكون المستشعر ثابتًا أثناء هذه العملية. ترجع هذه الدالة قيمة موجبة عند النجاح وقيمة سالبة عند الفشل. فيما يلي مثال لتقدير تحيزات الجيروسكوب الجديدة.
status = IMU.calibrateGyro();
(اختياري) float getGyroBiasX() تقوم هذه الدالة بإرجاع انحياز الجيروسكوب الحالي في الاتجاه X بوحدات درجة/ثانية.
float gxb;
gxb = IMU.getGyroBiasX();
(اختياري) float getGyroBiasY() تقوم هذه الدالة بإرجاع انحياز الجيروسكوب الحالي في الاتجاه Y بوحدات درجة/ثانية.
float gyb;
gyb = IMU.getGyroBiasY();
(اختياري) float getGyroBiasZ() تقوم هذه الدالة بإرجاع انحياز الجيروسكوب الحالي في الاتجاه Z بوحدات درجة/ثانية.
float gzb;
gzb = IMU.getGyroBiasZ();
(اختياري) void setGyroBiasX(التحيز العائم) تقوم هذه الوظيفة بتعيين انحياز الجيروسكوب المستخدم في الاتجاه X إلى قيمة الإدخال بوحدات درجة/ثانية.
float gxb = 0.001 ; // gyro bias of 0.001 deg/s
IMU.setGyroBiasX(gxb);
(اختياري) مجموعة باطلة GyroBiasY(تحيز عائم) تقوم هذه الوظيفة بتعيين انحياز الجيروسكوب المستخدم في الاتجاه Y إلى قيمة الإدخال بوحدات درجة/ثانية.
float gyb = 0.001 ; // gyro bias of 0.001 deg/s
IMU.setGyroBiasY(gyb);
(اختياري) void setGyroBiasZ(التحيز العائم) تقوم هذه الوظيفة بتعيين انحياز الجيروسكوب المستخدم في الاتجاه Z إلى قيمة الإدخال بوحدات درجة/ثانية.
float gzb = 0.001 ; // gyro bias of 0.001 deg/s
IMU.setGyroBiasZ(gzb);
(اختياري) int calibrateAccel() ستقوم هذه الوظيفة بتقدير الانحياز وعامل القياس اللازم لمعايرة مقاييس التسارع. تعمل هذه الوظيفة على محور واحد في كل مرة ويجب تشغيلها لجميع اتجاهات المستشعرات الستة. وبعد أن تجمع ما يكفي من بيانات المستشعر، ستقوم بتقدير التحيز وعامل القياس لجميع قنوات مقياس التسارع الثلاثة وتطبيق هذه التصحيحات على البيانات المقاسة. يلزم إجراء معايرة مقياس التسارع مرة واحدة فقط على وحدة IMU، ويمكن استخدام وظائف الحصول والضبط المفصلة أدناه لاسترداد عوامل التحيز والقياس المقدرة واستخدامها أثناء دورات الطاقة المستقبلية أو العمليات مع IMU. ترجع هذه الدالة قيمة موجبة عند النجاح وقيمة سالبة عند الفشل.
status = IMU.calibrateAccel();
(اختياري) float getAccelBiasX_mss() تُرجع هذه الدالة انحياز مقياس التسارع الحالي في الاتجاه X بوحدات m/s/s.
float axb;
axb = IMU.getAccelBiasX_mss();
(اختياري) getAccelScaleFactorX() ترجع هذه الدالة عامل مقياس التسارع الحالي في الاتجاه X.
float axs;
axs = IMU.getAccelScaleFactorX();
(اختياري) float getAccelBiasY_mss() تُرجع هذه الدالة انحياز مقياس التسارع الحالي في الاتجاه Y بوحدات m/s/s.
float ayb;
ayb = IMU.getAccelBiasY_mss();
(اختياري) float getAccelScaleFactorY() تقوم هذه الدالة بإرجاع عامل مقياس التسارع الحالي في الاتجاه Y.
float ays;
ays = IMU.getAccelScaleFactorY();
(اختياري) float getAccelBiasZ_mss() تُرجع هذه الدالة انحياز مقياس التسارع الحالي في الاتجاه Z بوحدات m/s/s.
float azb;
azb = IMU.getAccelBiasZ_mss();
(اختياري) float getAccelScaleFactorZ() تقوم هذه الدالة بإرجاع عامل مقياس التسارع الحالي في الاتجاه Z.
float azs;
azs = IMU.getAccelScaleFactorZ();
(اختياري) void setAccelCalX(floatتحيز,floatscaleFactor) تقوم هذه الوظيفة بتعيين انحياز مقياس التسارع (m/s/s) وعامل القياس المستخدم في الاتجاه X لقيم الإدخال.
float axb = 0.01 ; // accel bias of 0.01 m/s/s
float axs = 0.97 ; // accel scale factor of 0.97
IMU.setAccelCalX(axb,axs);
(اختياري) void setAccelCalY(floatتحيز,floatscaleFactor) تقوم هذه الوظيفة بتعيين انحياز مقياس التسارع (m/s/s) وعامل القياس المستخدم في الاتجاه Y لقيم الإدخال.
float ayb = 0.01 ; // accel bias of 0.01 m/s/s
float ays = 0.97 ; // accel scale factor of 0.97
IMU.setAccelCalY(ayb,ays);
(اختياري) void setAccelCalZ(floatتحيز,floatscaleFactor) تقوم هذه الوظيفة بتعيين انحياز مقياس التسارع (m/s/s) وعامل القياس المستخدم في الاتجاه Z لقيم الإدخال.
float azb = 0.01 ; // accel bias of 0.01 m/s/s
float azs = 0.97 ; // accel scale factor of 0.97
IMU.setAccelCalZ(azb,azs);
يتم استخدام الوظائف الموضحة أدناه لجمع البيانات من مستشعر ICM42688. يرجى الرجوع إلى قسم ورقة البيانات 10.1 لمعرفة اتجاه المحاور الحساسة.
يقرأ int getAGT() المستشعر ويخزن أحدث البيانات في مخزن مؤقت، ويجب استدعاؤه في كل مرة تريد فيها استرداد البيانات من المستشعر. تُرجع هذه الدالة قيمة موجبة عند النجاح وقيمة سالبة عند الفشل.
IMU.getAGT();
يحصل float accX() على قيمة مقياس التسارع من المخزن المؤقت للبيانات في الاتجاه X ويعيدها بوحدات g.
float ax = IMU.accX();
يحصل float accY() على قيمة مقياس التسارع من المخزن المؤقت للبيانات في الاتجاه Y ويعيدها بوحدات g.
float ay = IMU.accY();
يحصل float accZ() على قيمة مقياس التسارع من المخزن المؤقت للبيانات في الاتجاه Z ويعيدها بوحدات g.
float az = IMU.accZ();
يحصل float gyrX() على قيمة الجيروسكوب من المخزن المؤقت للبيانات في الاتجاه X ويعيدها بوحدات درجة/ثانية.
float gx = IMU.gyrX();
float gyrY() يحصل على قيمة الجيروسكوب من المخزن المؤقت للبيانات في الاتجاه Y ويعيدها بوحدات درجة/ثانية.
float gy = IMU.gyrY();
float gyrZ() يحصل على قيمة الجيروسكوب من المخزن المؤقت للبيانات في الاتجاه Z ويعيدها بوحدات درجة/ثانية.
float gz = IMU.gyrZ();
float temp() تحصل على قيمة درجة حرارة القالب من المخزن المؤقت للبيانات وتعيدها بوحدات C.
float temperature = IMU.temp();
تعمل الفئة المشتقة من ICM42688FIFO على توسيع الوظائف التي توفرها الفئة الأساسية ICM42688 من خلال توفير الدعم لإعداد وقراءة المخزن المؤقت ICM42688FIFO. كافة الوظائف الموصوفة أعلاه، كجزء من فئة ICM42688، متاحة أيضًا للفئة ICM42688FIFO .
ICM42688FIFO(TwoWire &bus, uint8_t عنوان) يجب تعريف كائن ICM42688FIFO، مع تحديد ناقل I2C وعنوان ICM42688 I2C. سيكون عنوان ICM42688 I2C هو 0x68 إذا تم تأريض طرف AD0 أو 0x69 إذا تم سحب طرف AD0 للأعلى. على سبيل المثال، تعلن التعليمة البرمجية التالية عن كائن ICM42688FIFO يسمى IMU مع مستشعر ICM42688 الموجود على ناقل I2C 0 مع عنوان مستشعر 0x68 (AD0 مؤرض).
ICM42688FIFO IMU (Wire, 0x68 );
ICM42688FIFO(SPIClass &bus, uint8_t csPin, uint32_t SPI_HS_CLK=8000000) يجب تعريف كائن ICM42688FIFO، مع تحديد ناقل SPI ودبوس تحديد الشريحة المستخدمة. يمكن استخدام عدة ICM42688 أو كائنات SPI أخرى على نفس ناقل SPI، ولكل منها دبوس تحديد الشريحة الخاص بها. يمكن أن يكون دبوس تحديد الشريحة هو أي دبوس رقمي متاح. على سبيل المثال، تعلن التعليمة البرمجية التالية عن كائن ICM42688FIFO يسمى IMU مع مستشعر ICM42688 الموجود على ناقل SPI 0 مع الشريحة المحددة رقم 10.
ICM42688FIFO IMU (SPI, 10 );
لاحظ أنه تم ضبط ساعة ناقل SPI عالية السرعة الافتراضية على 8 ميجا هرتز، لكن ICM 42688-p يدعم ما يصل إلى 24 ميجا هرتز على مدار الساعة SPI. استخدم ساعة أسرع لنقل بيانات SPI بشكل أسرع عند قراءة البيانات.
(اختياري) int EnableFifo(bool accel,bool gyro,bool temp) تقوم هذه الوظيفة بتكوين وتمكين المخزن المؤقت ICM42688 FIFO. يقوم هذا المخزن المؤقت الذي يبلغ 512 بايت بتجميع البيانات بمعدل إخراج البيانات الذي يحدده SRD ويمكّن وحدة التحكم الدقيقة من قراءة البيانات بشكل مجمّع، مما يقلل من عبء عمل وحدة التحكم الدقيقة لتطبيقات معينة. تم تكوينه بمجموعة من القيم المنطقية التي تصف البيانات التي سيتم تخزينها مؤقتًا في FIFO: مقياس التسارع، أو الجيروسكوب، أو درجة الحرارة. يستغرق كل من بيانات مقياس التسارع والجيروسكوب 6 بايت من المساحة لكل عينة ودرجة الحرارة 2 بايت. من المهم تحديد مصادر البيانات المطلوبة فقط لضمان عدم تجاوز ما يصرف أولاً بين قراءته. على سبيل المثال، قد يستغرق تمكين كافة مصادر البيانات 21 بايت لكل عينة مما يسمح لـ FIFO بالاحتفاظ بـ 24 عينة فقط قبل تجاوز السعة. إذا كانت هناك حاجة فقط إلى بيانات مقياس التسارع، فإن هذا يزيد إلى 85 عينة قبل أن يفيض. ترجع هذه الدالة قيمة موجبة عند النجاح وقيمة سالبة عند الفشل. يرجى الاطلاع على مثال FIFO_SPI . فيما يلي مثال لتمكين FIFO من تخزين بيانات مقياس التسارع والجيروسكوب مؤقتًا.
status = IMU.enableFifo( true , true , false , false );
يقوم int readFifo() بقراءة مخزن FIFO المؤقت من ICM42688، ثم يقوم بتحليله وتخزين البيانات في مخازن مؤقتة على وحدة التحكم الدقيقة. يجب أن يتم استدعاؤه في كل مرة تريد فيها استرداد البيانات من المخزن المؤقت FIFO. ترجع هذه الدالة قيمة موجبة عند النجاح وقيمة سالبة عند الفشل.
IMU.readFifo();
يحصل void getFifoAccelX_mss(size_t size,float data) على قيمة مقياس التسارع من المخزن المؤقت للبيانات في الاتجاه X ويعيدها بوحدات m/s/s. يتم إرجاع البيانات كمصفوفة مع عدد العناصر داخل تلك المصفوفة. تأكد من أن المخزن المؤقت الذي تقوم بالنقل إليه لديه سعة كافية لتخزين البيانات.
float ax[ 100 ];
size_t samples;
IMU.getFifoAccelX_mss(&samples,ax);
يحصل void getFifoAccelY_mss(size_t size,float data) على قيمة مقياس التسارع من المخزن المؤقت للبيانات في الاتجاه Y ويعيدها بوحدات m/s/s. يتم إرجاع البيانات كمصفوفة مع عدد العناصر داخل تلك المصفوفة. تأكد من أن المخزن المؤقت الذي تقوم بالنقل إليه لديه سعة كافية لتخزين البيانات.
float ay[ 100 ];
size_t samples;
IMU.getFifoAccelY_mss(&samples,ay);
يحصل void getFifoAccelZ_mss(size_t size,float data) على قيمة مقياس التسارع من المخزن المؤقت للبيانات في الاتجاه Z ويعيدها بوحدات m/s/s. يتم إرجاع البيانات كمصفوفة مع عدد العناصر داخل تلك المصفوفة. تأكد من أن المخزن المؤقت الذي تقوم بالنقل إليه لديه سعة كافية لتخزين البيانات.
float az[ 100 ];
size_t samples;
IMU.getFifoAccelZ_mss(&samples,az);
يحصل void getFifoGyroX(size_t size,float data) على قيمة الجيروسكوب من المخزن المؤقت للبيانات في الاتجاه X ويعيدها بوحدات درجة/ثانية. يتم إرجاع البيانات كمصفوفة مع عدد العناصر داخل تلك المصفوفة. تأكد من أن المخزن المؤقت الذي تقوم بالنقل إليه لديه سعة كافية لتخزين البيانات.
float gx[ 100 ];
size_t samples;
IMU.getFifoGyroX(&samples,gx);
يحصل void getFifoGyroY(size_t size,float data) على قيمة الجيروسكوب من المخزن المؤقت للبيانات في الاتجاه Y ويعيدها بوحدات درجة/ثانية. يتم إرجاع البيانات كمصفوفة مع عدد العناصر داخل تلك المصفوفة. تأكد من أن المخزن المؤقت الذي تقوم بالنقل إليه لديه سعة كافية لتخزين البيانات.
float gy[ 100 ];
size_t samples;
IMU.getFifoGyroY(&samples,gy);
يحصل void getFifoGyroZ(size_t size,float data) على قيمة الجيروسكوب من المخزن المؤقت للبيانات في الاتجاه Z ويعيدها بوحدات درجة/ثانية. يتم إرجاع البيانات كمصفوفة مع عدد العناصر داخل تلك المصفوفة. تأكد من أن المخزن المؤقت الذي تقوم بالنقل إليه لديه سعة كافية لتخزين البيانات.
float gz[ 100 ];
size_t samples;
IMU.getFifoGyroZ(&samples,gx);
يحصل void getFifoTemperature_C(size_t size,float data) على قيمة درجة حرارة القالب من المخزن المؤقت للبيانات ويعيدها بوحدات C. ويتم إرجاع البيانات كمصفوفة مع عدد العناصر داخل تلك المصفوفة. تأكد من أن المخزن المؤقت الذي تقوم بالنقل إليه لديه سعة كافية لتخزين البيانات.
float temp[ 100 ];
size_t samples;
IMU.getFifoTemperature_C(&samples,temp);
برجاء الرجوع إلى ورقة بيانات ICM42688. يجب أن تعمل هذه المكتبة بشكل جيد مع اللوحات الفرعية الأخرى أو أجهزة الاستشعار المدمجة، يرجى الرجوع إلى الرسم التخطيطي الخاص بالبائع.
يجب توصيل منافذ ICM42688 على النحو التالي:
يجب استخدام مقاومات 4.7 كيلو أوم كمقاومات سحب على SDA وSCL، ويجب أن تكون هذه المقاومات قابلة للسحب بمصدر 3.3 فولت.
يجب توصيل منافذ ICM42688 على النحو التالي:
تتطلب بعض لوحات الاختراق، بما في ذلك لوحة الاختراق Embedded Masters، تعديلًا طفيفًا لتمكين SPI. يرجى الرجوع إلى وثائق البائع الخاص بك.