مشروع مصفوفة LEDs RGB ESP32-S3 6 - لعبة Cible

مشروع مصفوفة LEDs RGB ESP32-S3 6 - لعبة Cible

المشروع 6 - لعبة الهدف (ميل اللوحة لضرب الدائرة)

المشروع 6 هو المشروع النهائي والأكثر تفاعلية في سلسلة مصفوفة LED RGB ESP32-S3. باستخدام مستشعر الحركة QMI8658C المدمج، يمكنك إمالة اللوحة لتحريك نقطة حول المصفوفة 8×8. توجد "منطقة هدف" دائرية في منتصف الشاشة. عندما تلمس نقطتك الدائرة، يتغير اللون و(اختياريًا) يصدر جرس صوتيًا. وهذا يخلق لعبة بسيطة ولكنها ممتعة بشكل مدهش لتوازن/تنسيق الحركة.

تظهر جميع المشاريع الستة في فيديو واحد على يوتيوب (مضمن في هذه الصفحة). يتم تحميل كود اللعبة الكامل تلقائيًا أسفل هذه المقالة، وتظهر روابط الشراء التابعة للوحدة تحت قسم الكود.

نظرة عامة على وحدة مصفوفة LEDs RGB ESP32-S3

تتضمن هذه الوحدة:

  • مت controlador ESP32-S3(Wi-Fi + BLE)
  • مصفوفة LED RGB بحجم 8×8(64 مصباح LED قابلة للع address)
  • مقياس تسارع QMI8658Cلإحساس الميل والتوجيه
  • يو إس بي-سيمنفذ للطاقة والبرمجة
  • إعادة تشغيل / إعادة تعيينأزرار
  • متوفردبابيس GPIOلملحقات مثل الصفارات أو المستشعرات

بالنسبة لهذه اللعبة، فإن مقياس التسارع ضروري - فهو يُبلغ باستمرار عن ميل X/Y، مما يسمح للنقطة بالتحرك بسلاسة بناءً على زاوية اللوحة. تُظهر قسم الفيديو لهذا المشروع بوضوح كيف تنزلق النقطة وتستجيب أثناء ميولك للوحدة لليسار/اليمين/الأمام/الخلف.:contentReference[oaicite:0]{index=0}

المشاريع التي تم تغطيتها في الفيديو (الطوابع الزمنية)

  • 00:00- مقدمة
  • 02:01- تثبيت لوحات ESP32
  • 03:32- تثبيت المكتبات
  • 05:32- المشروع 1: النقطة المتحركة
  • 11:11- المشروع 2: تمرير النص
  • 12:59- المشروع 3: نص HTTP
  • ١٦:٤١- المشروع 4: نقطة الميل
  • ١٨:٥٥- المشروع 5: سهم لأعلى
  • ٢٠:٠٢-المشروع 6: لعبة الهدف (هذا المشروع)

تظهر هذه الجزء من الفيديو كل من حركة النقطة ومنطق اكتشاف الدائرة في العمل، مما يسهل فهم كيفية تصرف الإحداثيات.:contentReference[oaicite:1]{index=1}

تثبيت لوحات ESP32 في بيئة تطوير أريدوينو

إذا كنت قد أتممت المشاريع السابقة، فإن تركيب اللوحة قد تم. خلاف ذلك اتبع:

  1. File > Preferences→ أضف رابط لوحة ESP32.
  2. Tools > Board > Boards Manager…قم بتثبيت "ESP32".
  3. اختر لوحة ESP32-S3 تحتTools > Board.
  4. حدد منفذ COM الصحيح تحتTools > Port.

تثبيت المكتبات المطلوبة

هذه اللعبة تستخدم:

  • Adafruit NeoMatrix
  • Adafruit NeoPixel
  • Adafruit GFX
  • QMI8658حساس الحركة

قم بتثبيتها عبر:

  1. Sketch > Include Library > Manage Libraries…
  2. بحث:نيو مَاتريكس→ تثبيت
  3. تثبيت الاعتمادات (جرافيكس+نيوبكسل)
  4. بحث وتثبيتQMI8658

كيف تعمل لعبة الهدف

يقدم مقياس التسارع QMI8658C قيم ميل المحور X و Y. هذه القيم مرتبطة بإحداثيات LED (من 0 إلى 7 في كلا الاتجاهين). تتحرك النقطة الخاصة بك عبر المصفوفة بناءً على زاوية اللوحة.

دائرة (أو حلقة) مرسومة على الشاشة كـ "منطقة الهدف." تفوز بـ "ضربة" كلما تداخل النقطة مع الدائرة. في تلك اللحظة:

  • تغير لون الهدف (عشوائي أو محدد مسبقًا)
  • يصدر جهاز التنبيه الاختياري صوت صفير (إذا كان متصلاً)

نظرًا لصغر المصفوفة، يتم رسم الدائرة باستخدام فحص بسيط لنصف القطر. اللعبة تعمل بشكل مستمر، لذا يمكنك الميل للأمام والخلف لضرب الدائرة مرارًا وتكرارًا.

المشروع 6 - إعدادات الكود (التحكم في اللعبة)

فيما يلي الإعدادات الرئيسية القابلة للتعديل من قبل المستخدم والمتواجدة في أعلى الرسم التخطيطي. يتم تضمين الشيفرة الكاملة تلقائيًا أسفل هذه المقالة.

تهيئة المصفوفة


// Matrix configuration
const int MATRIX_PIN    = 14;
const int MATRIX_WIDTH  = 8;
const int MATRIX_HEIGHT = 8;

مصفوفة RGB متصلة بشكل مباشر بـ GPIO 14 - لا تغير هذا.

سطوع


uint8_t matrixBrightness = 40;   // 0–255

للاستخدام الداخلي، 30-60 هو المثالي.

لون النقطة


// Dot color (R, G, B)
uint8_t dotRed   = 255;
uint8_t dotGreen = 255;
uint8_t dotBlue  = 255;

هذه هي النقطة التي تتحرك من خلالها عند إمالة اللوحة.

لون الدائرة (عشوائي أو ثابت)


// Circle (target) color
uint8_t circleRed   = 0;
uint8_t circleGreen = 0;
uint8_t circleBlue  = 255;

// If true, choose a new random color each time the dot hits
bool randomCircleColor = true;

مجموعةrandomCircleColor = false;إذا كنت تريد لونًا ثابتًا.

نصف قطر الدائرة


// Target size (radius)
int targetRadius = 3;   // 3 fits well on 8×8 matrix

تجعل الأقطار الأكبر اللعبة أسهل؛ بينما تجعل الأقطار الأصغر اللعبة أكثر صعوبة.

حساسية الميل


// Sensitivity of tilt mapping
float tiltScale = 4.0f;   // increase = faster movement across screen

إذا تحرك النقطة بسرعة كبيرة أو قفزت، قلل من هذا الرقم.

إعدادات الجرس (اختياري)


// Buzzer pin (optional)
int buzzerPin = 6;      // connect buzzer + to pin 6, – to GND
bool useBuzzer = true;  // set false to disable sound

إذا لم تقم بتوصيل صفارة، فقط قم بتعيينuseBuzzer = false;

ملخص

يجمع المشروع 6 كل ما تم تعلمه من المشاريع السابقة: رسم المصفوفات، إدخال مستشعر الحركة، التحكم في الألوان، تنعيم الحركة، وصوت اختياري. يميل اللوح لتحريك النقطة، وضغط الدائرة يغير لونها وتفعيل صفارة (اختياريًا). إنها عرض ممتع للكشف عن الحركة على شاشة RGB مدمجة.

يتم عرض رمز "لعبة الهدف" الكامل تلقائيًا أسفل هذه المقالة. يمكنك أيضًا مشاهدة الجزء الخاص بمشروع 6 من الفيديو لرؤية كيفية تحرك النقطة وكيف يتم الكشف عن الضربات. إذا كنت ترغب في بناء لعبتك الخاصة، ستظهر روابط تابعة لشراء وحدة مصفوفة LED RGB ESP32-S3 تحت قسم الرمز.

الصور

ESP32 S3 Matrix
ESP32 S3 Matrix
ESP32 S3 Matrix  pin out
ESP32 S3 Matrix pin out
ESP32-S3_RGB_8x8_matrix-3
ESP32-S3_RGB_8x8_matrix-3
ESP32 S3 Matrix displaying rainbow heart 3
ESP32 S3 Matrix displaying rainbow heart 3
ESP32-S3_RGB_8x8_matrix1
ESP32-S3_RGB_8x8_matrix1
ESP32-S3_RGB_8x8_matrix-2
ESP32-S3_RGB_8x8_matrix-2
804-ESP32-S3 RGB LED Matrix Project 6 - Cible game
اللغة: C++
تم النسخ!

الأشياء التي قد تحتاجها

الموارد والمراجع

ملفات📁

Fritzing File