جدول المحتويات:
فيديو: مصفوفة NeoPixels لعبة الأفعى: 4 خطوات
2024 مؤلف: John Day | [email protected]. آخر تعديل: 2024-01-30 07:36
هل ما زلت تتذكر لعبة الثعبان التي لعبناها على صندوق الألعاب أو الهاتف المحمول خلال طفولتنا؟ سنتعلم اليوم كيفية صنع لعبة ثعبان باستخدام 8 * 8 NeoPixels Matrix. اخترنا Arduino uno كمركز تحكم ووحدة كسر جويستيك للتحكم في الثعبان.
الخطوة 1: قائمة المكونات:
المعدات:
1 × Freaduino UNO Rev2.2 MB_EFUNO
1 X Flexible 64 RGB LED 8 * 8 NeoPixels Matrix
1 X جويستيك اندلاع وحدة BKOUT_MD01
3 X دليل الخط
برمجة:
اردوينو IDE
الخطوة 2: توصيل الأجهزة
قم بتوصيل NeoPixels بدبوس D2.
"X" على وحدة كسر جويستيك ، قم بتوصيل دبوس A0 على لوحة Arduino UNO ، و "Y" قم بتوصيل دبوس A1 ، و "K" قم بتوصيل دبوس A2.
الخطوة الثالثة: البرمجة
تتضمن P #
#define PIN 2 // Output Pin #define MAX_LED 64 // كمية الخرزة uint32_t c ؛ int a = 0 ، رقم ؛ char huan غير الموقعة = 0 ، ci = 0 ؛ حرف u غير موقع = 40 ؛ // حجم خط مجموعة الكلمات غير الموقعة char x = 0 ؛ لون حرف غير موقعة [3]؛ حرف غير موقّع = {2، 3، 4، 5، 9، 14، 17، 20، 22، 26، 27، 29، 34، 35، 36، 37، 41، 46، 49، 54، 58، 59 ، 60 ، 61} ؛ // 24 char light [8] [8] = {{0، 1، 2، 3، 4، 5، 6، 7}، {15، 14، 13، 12، 11، 10، 9، 8} ، {16 ، 17 ، 18 ، 19 ، 20 ، 21 ، 22 ، 23} ، {31 ، 30 ، 29 ، 28 ، 27 ، 26 ، 25 ، 24} ، {32 ، 33 ، 34 ، 35 ، 36 ، 37 ، 38 ، 39} ، {47 ، 46 ، 45 ، 44 ، 43 ، 42 ، 41 ، 40} ، {48 ، 49 ، 50 ، 51 ، 52 ، 53 ، 54 ، 55} ، {63 ، 62 ، 61 ، 60 ، 59 ، 58 ، 57 ، 56} ،} ؛ حرف حرف بدون إشارة [8] = // تعيين الكلمة المطلوب إرسالها {{0 ، 1 ، 1 ، 1 ، 1 ، 1 ، 0 ، 0} ، {0 ، 1 ، 0 ، 0 ، 0 ، 1 ، 0 ، 0 ، // 0 {0 ، 1 ، 1 ، 1 ، 1 ، 1 ، 0 ، 0} ، {0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0} ، {0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0} ، {0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0} ، // 1 {0 ، 1 ، 1 ، 1 ، 1 ، 1 ، 0 ، 0} ، {0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0} ، {0 ، 1 ، 0 ، 1 ، 1 ، 1 ، 0 ، 0} ، {0 ، 1 ، 0 ، 1 ، 0 ، 1 ، 0 ، 0 ، // 2 {0 ، 1 ، 1 ، 1 ، 0 ، 1 ، 0 ، 0} ، {0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0} ، {0 ، 1 ، 0 ، 1 ، 0 ، 1 ، 0 ، 0} ، {0 ، 1 ، 0 ، 1 ، 0 ، 1 ، 0 ، 0} ، // 3 {0 ، 1 ، 1 ، 1 ، 1 ، 1 ، 0 ، 0} ، {0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0} ، {0 ، 1 ، 1 ، 1 ، 0 ، 0 ، 0 ، 0 ، {0 ، 0 ، 0 ، 1 ، 0 ، 0 ، 0 ، 0 ، // 4 {0 ، 1 ، 1 ، 1 ، 1 ، 1 ، 0 ، 0} ، {0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0} ، {0 ، 1 ، 1 ، 1 ، 0 ، 1 ، 0 ، 0} ، {0 ، 1 ، 0 ، 1 ، 0 ، 1 ، 0 ، 0} ، // 5 {0 ، 1 ، 0 ، 1 ، 1 ، 1 ، 0 ، 0} ، {0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0} ، {0 ، 1 ، 1 ، 1 ، 1 ، 1 ، 0 ، 0} ، {0 ، 1 ، 0 ، 1 ، 0 ، 1 ، 0 ، 0 ، // 6 {0 ، 1 ، 0 ، 1 ، 1 ، 1 ، 0 ، 0} ، {0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0} ، {0 ، 1 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0} ، {0 ، 1 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0} ، // 7 {0 ، 1 ، 1 ، 1 ، 1 ، 1 ، 0 ، 0} ، {0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0} ، {0 ، 1 ، 1 ، 1 ، 1 ، 1 ، 0 ، 0} ، {0 ، 1 ، 0 ، 1 ، 0 ، 1 ، 0 ، 0} ، // 8 {0 ، 1 ، 1 ، 1 ، 1 ، 1 ، 0 ، 0} ، {0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، {0 ، 1 ، 1 ، 1 ، 0 ، 1 ، 0 ، 0} ، {0 ، 1 ، 0 ، 1 ، 0 ، 1 ، 0 ، 0} ، // 9 {0 ، 1 ، 1 ، 1 ، 1 ، 1 ، 0 ، 0 ، {0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 } ،} ؛ char displaycore غير الموقعة [8] [8] ؛ سرعة intS = 400 ؛ // السرعة الأولية لدرجة تناول الثعبان ؛ // Game Score int xValue ؛ // JoyStick-X int yValue؛ // JoyStick-Y int zValue؛ // JoyStick-Z int FX، FY؛ // تنسيق الغذاء int SX ، SY ؛ // تنسيق رأس الثعبان int KEY ، K ؛ تمكين int ؛ // تمكين لإعادة تشغيل لعبة char sx [64] ؛ // تنسيق هيئة شار جسد ثعبان [64] ؛ شريط Adafruit_NeoPixel = Adafruit_NeoPixel (MAX_LED ، PIN ، NEO_RGB + NEO_KHZ800) ؛ باطل RANDOM () {A: FX = random (0، 7) ؛ FY = عشوائي (0 ، 7) ؛ لـ (int i = 0؛ i <3 + Score؛ i ++) // منع عرض الطعام على جسم الثعبان {if (FX == sx && FY == sy ) goto A؛ }} إلغاء myDelay (وقت int غير موقع) {// أثناء فترة تأخير حركة الثعبان ، يتعين علينا القيام بشيء مثل بريق الطعام وقراءة اتجاه جويستيك لـ (int t = 1؛ t 950 && KEY! = 5) { ك = 8 ؛ } else if (yValue <50 && KEY! = 8) {K = 5؛ } else if (xValue 950 && KEY! = 4) {K = 6؛ }} // هنا يمكنك مقارنة ما إذا كان اتجاه لوحة المفاتيح عكس اتجاه حركة الثعبان. إذا كان عكس ذلك ، فاستسلم للوحة المفاتيح. / *************************************************** **************************************************** **************************************************** **************************************************** ******** / void gameover () {// بمجرد إيقاف برنامج Gameover ، اضغط على الزر المركزي لإعادة تشغيل اللعبة. قيمة حرف غير موقعة ، y ؛ اللون [0] = عشوائي (3 ، 18) ؛ // تعيين اللون المعلمة هي RG B ، النطاق 0-255. اللون [1] = عشوائي (3 ، 18) ؛ اللون [2] = عشوائي (3 ، 18) ؛ c = strip. Color (اللون [1] ، اللون [0] ، اللون [2]) ؛ القيمة = النتيجة / 10 ؛ القيمة = القيمة * 4 ؛ ص = 0 ؛ لـ (رقم = قيمة ؛ رقم <قيمة + 4 ؛ رقم ++) {لـ (حرف حرف عمودي بدون إشارة = 0 ؛ عمودي <8 ؛ عمودي ++) {شاشات عرض [y] [عمودي] = حرف [رقم] [عمودي] ؛ } ذ ++ ؛ } القيمة = الدرجة٪ 10 ؛ القيمة = القيمة * 4 ؛ لـ (رقم = قيمة ؛ رقم <قيمة + 4 ؛ رقم ++) {لـ (حرف حرف عمودي بدون إشارة = 0 ؛ عمودي <8 ؛ عمودي ++) {شاشات عرض [y] [عمودي] = حرف [رقم] [عمودي] ؛ } ص ++ ؛ } لـ (حرف أفقي بدون إشارة = 0 ؛ أفقي <8 ؛ أفقي ++) {لـ (حرف عمودي بدون إشارة = 0 ؛ عمودي <8 ؛ عمودي ++) {if (displaycore [أفقي] [عمودي] == 1) // احكم على الضوء قيد التشغيل. {strip.setPixelColor (ضوء [أفقي] [عمودي] ، ج) ؛ } else strip.setPixelColor (light [الأفقي] [العمودي] ، 0) ؛ }} strip.show ()؛ // إرسال تأخير البيانات (5000) ؛ ك = 0 ؛ // إعادة تعيين اتجاه جويستيك sx [0] = 2 ؛ sx [1] = 1 ؛ sx [2] = 0 ؛ sy [0] = 1 ؛ sy [1] = 1 ؛ سي [2] = 1 ؛ // إعادة تعيين درجة تنسيق الثعبان = 0 ؛ // إعادة تعيين سرعة نتيجة اللعبة S = 400 ؛ // السرعة الأولية للثعبان} إعداد الفراغ () {Serial.begin (9600)؛ // تهيئة مكتبة strip.begin () ؛ // إرسال البيانات. اللون الافتراضي لكل نقطة هو 0. لذلك لا تضيء كل نقطة في البداية. عرض الشريط()؛ ك = 0 ؛ // إعادة تعيين اتجاه جويستيك sx [0] = 2 ؛ sx [1] = 1 ؛ sx [2] = 0 ؛ sy [0] = 1 ؛ sy [1] = 1 ؛ سي [2] = 1 ؛ // إعادة تعيين درجة تنسيق الثعبان = 0 ؛ // إعادة تعيين لون نتيجة اللعبة [0] = عشوائي (3 ، 18) ؛ // تعيين اللون المعلمة هي RG B ، النطاق 0-255. اللون [1] = عشوائي (3 ، 18) ؛ اللون [2] = عشوائي (3 ، 18) ؛ c = strip. Color (اللون [1] ، اللون [0] ، اللون [2]) ؛ // أخضر أحمر أزرق // تعيين اللون لـ (رقم = 0 ؛ رقم <24 ؛ رقم ++) {strip.setPixelColor (اذهب [رقم] ، ج) ؛ } strip.show ()؛ // إرسال تأخير البيانات (2000) ؛ عشوائي()؛ // إنتاج الطعام} باطل متنقل () {KEY = K؛ // كل حركة ثعبان تجعل الاتجاه يتغير لمرة واحدة. إذا (KEY == 8) // حركة ثعبان لأعلى {لـ (int i = 2 + النتيجة ؛ i> 0 ؛ i--) {sx = sx [i - 1] ؛ sy = sy [i - 1] ؛ } sy [0] = sy [0] - 1 ؛ إذا (sy [0] <0) // تجاوز الحدود واستمر على الجانب الآخر sy [0] = 7 ؛ } else if (KEY == 5) // حركة ثعبان إلى أسفل {لـ (int i = 2 + Score؛ i> 0؛ i--) {sx = sx [i - 1]؛ sy = sy [i - 1] ؛ } sy [0] = sy [0] + 1 ؛ إذا (sy [0]> 7) // تجاوز الحدود واستمر على الجانب الآخر sy [0] = 0 ؛ } else if (KEY == 4) // حركة الثعبان اليسرى {لـ (int i = 2 + Score؛ i> 0؛ i--) {sx = sx [i - 1]؛ sy = sy [i - 1] ؛ } sx [0] = sx [0] - 1 ؛ إذا (sx [0] <0) // تجاوز الحدود واستمر على الجانب الآخر sx [0] = 7 ؛ } else if (KEY == 6) // حركة الثعبان اليمنى {لـ (int i = 2 + Score؛ i> 0؛ i--) {sx = sx [i - 1]؛ sy = sy [i - 1] ؛ } sx [0] = sx [0] + 1 ؛ إذا (sx [0]> 7) // تجاوز الحدود واستمر على الجانب الآخر sx [0] = 0 ؛ } // تحريك جسم الثعبان باستخدام الزر} عروض باطلة () {لـ (رقم = 0 ؛ رقم <64 ؛ رقم ++) // مسح الشاشة {strip.setPixelColor (رقم ، 0) ؛ } عرض الشريط()؛ اللون [0] = 40 ؛ // تعيين اللون. المعلمة هي RG B ، النطاق 0-255. اللون [1] = 0 ؛ اللون [2] = 0 ؛ c = strip. Color (اللون [1] ، اللون [0] ، اللون [2]) ؛ // أخضر أحمر أزرق // تعيين اللون x = ضوء [FX] [السنة المالية] ؛ // عرض food strip.setPixelColor (x ، c) ؛ اللون [0] = عشوائي (3 ، 18) ؛ // تعيين اللون. المعلمة هي RG B ، النطاق 0-255. اللون [1] = عشوائي (3 ، 18) ؛ اللون [2] = عشوائي (3 ، 18) ؛ c = strip. Color (اللون [1] ، اللون [0] ، اللون [2]) ؛ // أخضر أحمر أزرق // تعيين اللون لـ (int i = 2 + Score؛ i> 0؛ i--) // عرض جسم الثعبان {x = light [sx [sy ؛ strip.setPixelColor (س ، ج) ؛ } اللون [0] = 0 ؛ // تعيين اللون. المعلمة هي RG B ، النطاق 0-255. اللون [1] = 40 ؛ اللون [2] = 0 ؛ c = strip. Color (اللون [1] ، اللون [0] ، اللون [2]) ؛ // أخضر أحمر أزرق // تعيين اللون x = ضوء [sx [0] [sy [0] ؛ // عرض شريط رأس ثعبان. setPixelColor (x ، c) ؛ strip.show ()؛ // Send data} void loop () {mobile ()؛ myDelay (speedS) ؛ // ضمن () هو وقت التأخير. يعرض () ؛ SX = sx [0] ؛ SY = sy [0] ؛ // احصل على تنسيق رأس الثعبان لـ (int i = 1؛ i <= 2 + Score؛ i ++) {if (SX == sx && SY == sy ) gameover ()؛ } // احكم على ما إذا كان رأس الثعبان قد لامس جسده. إذا تم لمسها ، ثم أعد توجيهها إلى GameOver. إذا (SY == FY && SX == FX) {RANDOM () ؛ النتيجة ++ ؛ اللون [0] = 40 ؛ // تعيين اللون. المعلمة هي RG B ، النطاق 0-255. اللون [1] = 0 ؛ اللون [2] = 0 ؛ c = strip. Color (اللون [1] ، اللون [0] ، اللون [2]) ؛ // أخضر أحمر أزرق // تعيين اللون x = ضوء [FX] [السنة المالية] ؛ // عرض food strip.setPixelColor (x ، c) ؛ strip.show ()؛ // إرسال البيانات إذا (! (النتيجة٪ 5)) {// تسريع سرعة الثعبان وفقًا للنتيجة. كل 5 أطعمة تؤكل ، تتسارع 100 مللي ثانية. السرعة S = السرعة S - 50 ؛ if (speedS <150) // الحد الأدنى 200 مللي ثانية. إذا كانت السرعة أقل من 200 مللي ثانية ، تظل السرعة 200 مللي ثانية. السرعة S = 150 ؛ }} // احكم على تناول الطعام. إذا أكل الثعبان طعامًا ، فقم بإضافة الدرجات وتجديد الطعام بشكل عشوائي. }
نتيجة التجربة
الخطوة 4: نتيجة التجربة
القراءات النسبية:
FreaksBot بلوتوث سيارة
قم بإضاءة الخرزة الأولى على 8 * 8 NeoPixels Matrix مع Arduino
Micro: bit Experiment 05: RGB LED - Elecfreaks Mirco: bit Starter Kit Course
Friday Product Post: مجموعة لحام عرض طيف تردد الموسيقى LED
استخدم ElecFreaks Micro: bit Tinker Kit لإضاءة ذكية
موصى به:
مصفوفة SMART LED ذاتية الصنع (ESP8266 + WS2812 / NeoPixels): 7 خطوات (بالصور)
DIY SMART LED MATRIX (ESP8266 + WS2812 / NeoPixels): إليكم مقدمة عن مشروع يسعدني جدًا أن أعرضه عليكم. يتعلق الأمر بمصفوفة DIY Smart LED التي تتيح لك إظهار البيانات ، مثل YouTube Stats ، وإحصائيات المنزل الذكي ، مثل درجة الحرارة ، والرطوبة ، على مدار الساعة ، أو مجرد
الأفعى: الآلة عديمة الفائدة: 5 خطوات
الثعبان: الجهاز عديم الفائدة: هل تعلم عندما كنت طفلاً وكنت تلعب الأفعى على هاتف Nokia الخاص بك؟ عند نقطة معينة سيبدأ الثعبان في مطاردة ذيله ، وذلك عندما علمت أن اللعبة على وشك الانتهاء. قررنا تحويل ذلك إلى روبوت ، فقط ، اللعبة أبدًا
لعبة تنس الطاولة مع مصفوفة LED واردوينو وعصا التحكم: 5 خطوات (بالصور)
لعبة تنس الطاولة مع مصفوفة LED و Arduino و Joysticks: هذا المشروع مخصص للمبتدئين وذوي الخبرة على حد سواء. على المستوى الأساسي ، يمكن أن يتم ذلك باستخدام لوح التجارب وأسلاك التوصيل ويتم تعليقه على قطعة من مادة الخردة (كنت أستخدم الخشب) باستخدام Blu-Tack وبدون لحام. ولكن على مزيد من التقدم
4 تحويل الأفعى بت: 4 خطوات
تحويل 4 بت Adder: تم تصميم هذا المشروع لاستخدام Ardunio لتحويل adder 4 بت إلى عرض سبعة أجزاء لهذا المشروع ، ستحتاج إلى ما يلي: - Arduino - أسلاك - مصابيح LED 5x - شاشات 2x سبعة أجزاء - 2x DIP Switches SPST x4 - بوابتان XOR - 2x و
4 بت ثنائي الأفعى: 3 خطوات
4 بت ثنائي الأفعى: مرحبًا بالجميع! مرحبًا بكم في أول تدريب لدينا! سنشرح لك اليوم كيفية بناء جامع ثنائي مكون من 4 بتات باستخدام بوابات منطقية بسيطة. هذا جزء من سلسلة نقوم بها لصنع آلة حاسبة وظيفية ، لذا ترقبوا المزيد