البرمجة

فهم برمجة MPU-6050 باستخدام Arduino وبروتوكول I2C

فيما يتعلق بالشيفرة التي قدمتها، يبدو أنها تستخدم مستشعر MPU-6050 الذي يعمل عبر بروتوكول I2C. لنقم بتفسير الشيفرة خطوة بخطوة لفهم كيف يعمل البرنامج.

أولاً، يتم تضمين مكتبة Wire.h التي تستخدم للتحكم في تواصل I2C. يتم تحديد عنوان MPU-6050 كـ 0x68.

في دالة setup():

  1. يتم بداية اتصال I2C باستخدام Wire.begin().
  2. يتم بداية اتصال I2C مع جهاز MPU-6050 باستخدام Wire.beginTransmission(MPU).
  3. يتم كتابة قيمة 0 إلى العنوان 0x6B في السجل PWR_MGMT_1 لتفعيل جهاز MPU-6050 باستخدام Wire.write(0x6B).
  4. يتم إنهاء اتصال I2C مع Wire.endTransmission(true).
  5. يتم بدء Serial communication بسرعة 9600 بت/ثانية.

في دالة loop():

  1. يتم بدء اتصال I2C مع جهاز MPU-6050 باستخدام Wire.beginTransmission(MPU).
  2. يتم كتابة عنوان البداية للقراءة (register 0x3B) باستخدام Wire.write(0x3B).
  3. يتم إنهاء اتصال I2C بـ Wire.endTransmission(false).
  4. يتم طلب 14 مستندًا من MPU-6050 باستخدام Wire.requestFrom(MPU, 14, true).
  5. يتم قراءة قيم التسارع (AcX، AcY، AcZ) ودرجة الحرارة (Tmp) وسرعة الدوران (GyX، GyY، GyZ) وتخزينها.
  6. تتم عمليات القراءة باستخدام الشيفرة Wire.read()<<8|Wire.read() للحصول على القيم بصيغة 16 بت.
  7. يتم طباعة القيم المقروءة عبر Serial communication.

هذا البرنامج يستخدم I2C للتحكم في MPU-6050 واسترجاع قيم التسارع ودرجة الحرارة وسرعة الدوران. يمكنك فهمه كمثال على كيفية استخدام I2C للتحدث مع أجهزة إلكترونية عبر بروتوكول محدد. يفضل أن تكون قدرتك على فهم التحكم في I2C والاستفادة من البيانات التي يتم قراءتها من MPU-6050.

المزيد من المعلومات

تعتبر شيفرة البرنامج المُقدمة مبنية على لغة البرمجة C++ باستخدام لوحة تطوير Arduino. البرنامج يستخدم مكتبة Wire.h لإدارة تواصل I2C، وهو نوع من البروتوكولات الخاصة بالتواصل بين أجهزة متصلة في نفس الدائرة الإلكترونية.

في الجزء الخاص بإعداد البرنامج (دالة setup()):

  • تبدأ البرنامج بفتح اتصال I2C باستخدام Wire.begin()، ومن ثم يبدأ اتصال مع مستشعر MPU-6050 باستخدام Wire.beginTransmission(MPU).
  • يتم كتابة القيمة 0 إلى عنوان السجل PWR_MGMT_1 باستخدام Wire.write(0x6B)، وهذا يعمل على إيقاظ جهاز MPU-6050.
  • يُنهي الاتصال I2C مع Wire.endTransmission(true)، ثم يتم بدء Serial communication بسرعة 9600 بت/ثانية باستخدام Serial.begin(9600).

في دالة loop():

  • يتم بدء اتصال I2C مع جهاز MPU-6050 باستخدام Wire.beginTransmission(MPU)، ثم يتم كتابة عنوان السجل الذي نريد قراءته (0x3B) باستخدام Wire.write(0x3B).
  • يُنهي الاتصال I2C بـ Wire.endTransmission(false).
  • يتم طلب 14 مستندًا (14 بايت) من MPU-6050 باستخدام Wire.requestFrom(MPU, 14, true)، حيث يتم قراءة هذه القيم باستخدام Wire.read() ومعالجتها للحصول على القيم النهائية.
  • يتم طباعة قيم التسارع (AcX، AcY، AcZ) ودرجة الحرارة (Tmp) وسرعة الدوران (GyX، GyY، GyZ) عبر Serial communication.

تُستخدم الدالة delay(333) لتأخير البرنامج لمدة 333 مللي ثانية قبل بدء تكرار العملية مرة أخرى.

يعتبر البرنامج فعّالًا لقراءة البيانات من MPU-6050 وطباعتها عبر واجهة Serial لتتمكن من فحص القيم المسترجعة من التسارع ودرجة الحرارة وسرعة الدوران للتحكم في الأجهزة الإلكترونية بشكل فعّال.

مقالات ذات صلة

زر الذهاب إلى الأعلى
إغلاق

أنت تستخدم إضافة Adblock

يرجى تعطيل مانع الإعلانات حيث أن موقعنا غير مزعج ولا بأس من عرض الأعلانات لك فهي تعتبر كمصدر دخل لنا و دعم مقدم منك لنا لنستمر في تقديم المحتوى المناسب و المفيد لك فلا تبخل بدعمنا عزيزي الزائر