جدول المحتويات:

ظهور الفانوس مع الرسوم المتحركة POV: 7 خطوات
ظهور الفانوس مع الرسوم المتحركة POV: 7 خطوات

فيديو: ظهور الفانوس مع الرسوم المتحركة POV: 7 خطوات

فيديو: ظهور الفانوس مع الرسوم المتحركة POV: 7 خطوات
فيديو: لن تفكر في ممارسة العادة السرية بعد هذا الفيديو 😱 2024, يوليو
Anonim
Image
Image

مشاريع استمرارية الرؤية (POV) موجودة لبعض الوقت ، حتى أن مجموعات DIY البسيطة والرخيصة متاحة للشراء عبر الإنترنت. يعتمد POV على الوهم البصري حيث نرى الأشياء المضيئة بعد أن يتوقف الكائن عن الإضاءة حتى ولو لفترة قصيرة فقط. تتميز مشاريع POV التقليدية بالصور الثابتة بناءً على هذا المبدأ أو تشغيل الساعات على الأكثر. ومع ذلك ، لا شيء يمنع عرض الرسوم المتحركة باستخدام متحكمات دقيقة ذات سرعة كافية ومصابيح RGB LED ذكية. هذه الرسوم المتحركة الخاصة عبارة عن خفة عيد الميلاد التي تم سحبها من الرنة لتزيين Advent والتي يمكن التحكم فيها عن بُعد بواسطة أي جهاز محمول مزود بتقنية WiFi مع متصفح الويب. يتم تشغيل الفانوس بواسطة متحكم Wemos ESP8266 D1 Mini من عائلة Arduino. يعود الفضل في إطارات خفة الرنة المتحركة 8 بت إلى فنان الجرافيك الموهوب ريتشارد فينيو.

الخطوة 1: قائمة الأجزاء

خطوات التجمع
خطوات التجمع

ستحتاج إلى صندوق لهذا المشروع يكون ثقيلًا بما يكفي للحفاظ على الوحدة الدوارة في مكانها دون قلبها. تعتبر علبة PSU القديمة مثالية ، فقط كن حذرًا للسماح للمكثفات بالتفريغ قبل التفكيك. ستحتاج أيضًا إلى أي نوع من محول إمداد الطاقة 5V-12V لتشغيل محرك التيار المستمر. حقًا أي قوة تيار من 500mA وما فوق ستفعل ذلك.

الأجزاء المطلوبة مدرجة أدناه مع روابط متجر الويب والأسعار الحالية.

  • 2 قطعة 18650 بطارية ، 78 دولار أمريكي 4
  • حامل البطارية لـ 2x18650 ، 0 دولار أمريكي ، 63
  • Wemos D1 Mini، USD 2، 14
  • قش أسود ، 0 دولار أمريكي ، 10
  • المستشعر العاكس للأشعة تحت الحمراء ، 0 ، 38 دولارًا أمريكيًا
  • مفتاح متأرجح الطاقة 250 فولت ، 0 دولار أمريكي ، 10
  • تبديل الشريحة التبديل ، 0 دولار أمريكي ، 02
  • 6-900 دورة في الدقيقة DC Motor ، 3 دولارات أمريكية ، 99
  • Adafruit Neopixel WS2812 8 بت ، 1 دولار أمريكي ، 01

التكلفة الإجمالية أقل من 15 دولارًا أمريكيًا - ولكنك ستحتاج أيضًا إلى بعض الأدوات اليدوية ، والحفر ، والغراء الساخن ، إلى جانب معدات ومهارات اللحام.

الخطوة الثانية: خطوات التجميع

يمكن تجميع الوحدة بالكامل باتباع هذه الخطوات.

  1. تم بناء القاعدة الثابتة بمحرك DC ومفتاح.
  2. يتم لحام Neopixels وربطها بعمود القش.
  3. تم تصميم الحفارة الدوارة بمتحكم دقيق ، ومفتاح منزلق ، ومستشعر الأشعة تحت الحمراء ، وعمود القش.
  4. الأسلاك ملحومة على موصلات الأجزاء الكهربائية
  5. يتم تحميل كود Arduino إلى متحكم Wemos.

الخطوة 3: 1. قاعدة ثابتة بمحرك DC

1. قاعدة ثابتة بمحرك DC
1. قاعدة ثابتة بمحرك DC
1. قاعدة ثابتة بمحرك DC
1. قاعدة ثابتة بمحرك DC
1. قاعدة ثابتة بمحرك DC
1. قاعدة ثابتة بمحرك DC
  1. قم بعمل ثقب في العلبة وقم بإصلاح محرك التيار المستمر بحيث يشير العمود لأعلى.
  2. قم بلحام مفتاح الطاقة المتأرجح ومحول إمداد الطاقة العادي 5V-12V باتباع مخطط الأسلاك أدناه.
  3. يدور محرك DC المشار إليه عند حوالي 800 دورة في الدقيقة (دورات في الدقيقة) عند 12 فولت ، مما ينتج عنه حوالي 10 إطارات في الثانية (إطارات في الثانية) في الإعداد النهائي اعتمادًا على مقاومة الرياح الفعلية لعمود القش.
  4. قم بتوصيل محول التيار الكهربائي بالمأخذ (110 أو 220 فولت).
  5. قم بتشغيل الكرسي الهزاز وتحقق من عمل محرك التيار المستمر.

بعد ذلك ، سيتم تجميع الحفارة الدوارة وتثبيتها على عمود محرك DC للقاعدة.

الخطوة 4: 2. مرفق Neopixel

2. مرفق Neopixel
2. مرفق Neopixel
2. مرفق Neopixel
2. مرفق Neopixel
  1. اقطع نهاية الشفاط إلى جانبين متعارضين في أحد طرفيه بحوالي 1.5 سم كما تظهر الصورة.
  2. اربط ثلاثة أسلاك أطول فوق القش. سيقوم هذا بتوصيل دبابيس Neopixel بمنافذ Wemos على منصة الحفر.
  3. قم بلحام الأسلاك الثلاثة على دبابيس Neopixel GND و 5V و D-IN.
  4. الغراء الساخن الأسلاك نظيفة ومرتبة من نهاية ملحومة من Neopixels على طول الطريق حتى منتصف شريط LED بالضبط.
  5. اسحب الأجنحة المقطوعة للقش عن بعضها وألصقها بالصمغ الساخن في تناسق دقيق في منتصف شريط LED (أعلى الأسلاك على جانب واحد).
  6. تمر الأسلاك داخل المصاصة حتى تصل إلى منصة الحفر للوصول إلى منافذ Wemos المطابقة.

الخطوة 5: 3. تجميع الحفارة الدوارة

3. تجميع جهاز الدوران
3. تجميع جهاز الدوران

يجب تجميع الحفارة بالكامل قبل التثبيت في عمود محرك التيار المستمر. هذا لأن نقطة التثبيت تحتاج إلى أن تكون متوازنة بحيث يكون الدوران في المنتصف تمامًا دون أي تذبذب.

  1. الغراء الساخن متحكم Wemos D1 Mini ومفتاح الشريحة إلى جانب واحد من حامل البطارية كما تظهر الصورة.
  2. الغراء الساخن لمستشعر انعكاس الأشعة تحت الحمراء على الجانب الآخر من حامل البطارية.
  3. ضع البطاريات في الحامل.
  4. ضع الطرف الآخر للشفاط وقم بتثبيته أعلى البطاريات. سوف يقوم بذلك برغي صغير أو حلقة مطاطية. تأكد من أنه لن يخسر بمجرد أن يبدأ الجهاز في الدوران بسرعة 10 دورة في الدقيقة.
  5. حدد موقع مركز جاذبية الحفارات بالكامل على الجانب السفلي. موازنة ذلك على طرف إصبعك ستفعل ذلك.
  6. اصنع ثقبًا صغيرًا في المكان المحدد أسفل حامل البطارية.
  7. ضع بعض الغراء الساخن وأصلح عمود المحرك في تلك الفتحة. تأكد من عدم دخول الغراء الساخن إلى جسم المحرك. احتفظ بها ثابتة حتى يجف الغراء.
  8. قم بقص قطعة صغيرة من الورق الأبيض وألصقها على القاعدة الثابتة بحيث يتحول مستشعر الأشعة تحت الحمراء العاكس بالقرب من تلك الورقة. سيؤدي هذا إلى تشغيل رسم إطارات الرسوم المتحركة في المكان المحدد في كل دورة. تُظهر الصورة قطعة الانعكاس هذه في الزاوية السفلية اليسرى من القاعدة.

الخطوة 6: 4. توصيل الأسلاك للمكونات الكهربائية

4. الأسلاك من المكونات الكهربائية
4. الأسلاك من المكونات الكهربائية

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

  1. يتم لحام ثلاثة أسلاك (GND و 5 V و D-IN) في منافذ Wemos G و 5 V و D3 على التوالي.
  2. يتم لحام سلكين من مستشعر الأشعة تحت الحمراء العاكس (VCC ، GND ، OUT) في منافذ Wemos 5V و G و D2 على التوالي.
  3. سلك أرضي لحامل البطارية (أسود) ملحوم بمنفذ Wemos G.
  4. سلك حامل البطارية الموجب (الأحمر) ملحوم على أقرب دبوس لمفتاح الشريحة.
  5. يتم لحام منفذ Wemos 5V بالمسمار الآخر لمفتاح الشريحة.

الخطوة 7: 5. كود اردوينو

5. كود اردوينو
5. كود اردوينو

هذا الرمز الخاص للإصدار 24 بت من POV Lantern ، يمكن التحكم فيه عن بعد بواسطة أي أجهزة محمولة بها متصفحات الويب وتتميز بتأثيرات مرئية مثل World Map و Matrix Animation Effect و Reindeer Sleight animé. لا تتردد في تعديل عدد وحدات البكسل أو معلمات التأثير أو واجهة WiFi البعيدة وفقًا لاحتياجاتك في الكود المصدري.

// 24 bits POV Lantern - 2019 Peter Csurgay

# تضمين ESP8266WiFiMulti.h

# تضمين WiFiClient.h # تضمين ESP8266WebServer.h # تضمين WebSocketsServer.h # تضمين Adafruit_NeoPixel.h

#define DEBUG 1

String text [3] = {"INSTRUCTABLES" ، "ARDUINO" ، "CONTEST"} ؛

لوحة const uint8_t [8] [3] = {

{0 ، 0 ، 0} ، // 0 - شفاف {0 ، 0 ، 127} ، // 1 - أزرق {127 ، 0 ، 0} ، // 2 - أحمر {127 ، 127 ، 0} ، // 3 - أصفر {0 ، 127 ، 0} ، // 4 - أخضر {127 ، 24 ، 0} ، // 5 - برتقالي {127 ، 0 ، 127} ، // 6 - أرجواني {127 ، 127 ، 127} // 7 - أبيض} ؛

العالم char غير الموقعة [24] [42] PROGMEM =

{ { 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0 }, { 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0 }, { 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0 }, { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0 }, { 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0 }, { 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0 }, { 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0 }, { 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0 }, { 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0 }, { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0 }, { 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 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, 1, 0 }, { 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0 }, { 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0 }, { 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 1, 1, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0 } };

فلفل حار غير موقعة [24] [8 + 31] PROGMEM =

{ { 0, 0, 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, 0, 0, 0, 0, 0, 0, 0 }, { 0, 1, 1, 1, 1, 1, 1, 0, 0, 4, 4, 4, 0, 0, 4, 4, 4, 4, 0, 4, 4, 4, 0, 0, 4, 4, 4, 0, 0, 4, 4, 4, 4, 0, 4, 4, 4, 0, 0 }, { 0, 1, 1, 1, 1, 1, 1, 0, 0, 4, 0, 0, 4, 0, 4, 0, 0, 0, 0, 4, 0, 0, 4, 0, 4, 0, 0, 4, 0, 4, 0, 0, 0, 0, 4, 0, 0, 4, 0 }, { 1, 1, 0, 1, 1, 0, 1, 1, 0, 4, 0, 0, 4, 0, 4, 4, 4, 0, 0, 4, 0, 0, 4, 0, 4, 0, 0, 4, 0, 4, 4, 4, 0, 0, 4, 0, 0, 4, 0 }, { 1, 1, 1, 1, 1, 1, 1, 1, 0, 4, 4, 4, 0, 0, 4, 0, 0, 0, 0, 4, 4, 4, 0, 0, 4, 4, 4, 0, 0, 4, 0, 0, 0, 0, 4, 4, 4, 0, 0 }, { 0, 1, 1, 0, 0, 1, 1, 0, 0, 4, 0, 0, 0, 0, 4, 4, 4, 4, 0, 4, 0, 0, 0, 0, 4, 0, 0, 0, 0, 4, 4, 4, 4, 0, 4, 0, 0, 4, 0 }, { 0, 1, 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, 0, 0, 0, 0, 0, 0 }, { 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, { 0, 4, 0, 0, 4, 0, 4, 0, 0, 4, 0, 4, 4, 4, 0, 0, 4, 4, 4, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 }, { 0, 4, 0, 0, 4, 0, 4, 0, 0, 4, 0, 4, 0, 0, 4, 0, 4, 0, 0, 4, 0, 4, 0, 0, 4, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0 }, { 0, 4, 4, 4, 4, 0, 4, 0, 0, 4, 0, 4, 0, 0, 4, 0, 4, 4, 4, 0, 0, 4, 4, 4, 4, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0 }, { 0, 4, 0, 0, 4, 0, 4, 0, 0, 4, 0, 4, 4, 4, 0, 0, 4, 0, 0, 4, 0, 4, 0, 0, 4, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0 }, { 0, 4, 0, 0, 4, 0, 0, 4, 4, 0, 0, 4, 0, 0, 4, 0, 4, 4, 4, 0, 0, 4, 0, 0, 4, 0, 0, 0, 0, 1, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 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, 0, 0, 0, 0, 0, 0, 0 }, { 0, 1, 1, 1, 1, 1, 1, 0, 0, 4, 4, 4, 0, 0, 4, 4, 4, 4, 0, 4, 4, 4, 0, 0, 4, 4, 4, 0, 0, 4, 4, 4, 4, 0, 4, 4, 4, 0, 0 }, { 0, 1, 1, 1, 1, 1, 1, 0, 0, 4, 0, 0, 4, 0, 4, 0, 0, 0, 0, 4, 0, 0, 4, 0, 4, 0, 0, 4, 0, 4, 0, 0, 0, 0, 4, 0, 0, 4, 0 }, { 1, 1, 0, 1, 1, 0, 1, 1, 0, 4, 0, 0, 4, 0, 4, 4, 4, 0, 0, 4, 0, 0, 4, 0, 4, 0, 0, 4, 0, 4, 4, 4, 0, 0, 4, 0, 0, 4, 0 }, { 1, 1, 1, 1, 1, 1, 1, 1, 0, 4, 4, 4, 0, 0, 4, 0, 0, 0, 0, 4, 4, 4, 0, 0, 4, 4, 4, 0, 0, 4, 0, 0, 0, 0, 4, 4, 4, 0, 0 }, { 0, 1, 1, 0, 0, 1, 1, 0, 0, 4, 0, 0, 0, 0, 4, 4, 4, 4, 0, 4, 0, 0, 0, 0, 4, 0, 0, 0, 0, 4, 4, 4, 4, 0, 4, 0, 0, 4, 0 }, { 0, 1, 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, 0, 0, 0, 0, 0, 0 }, { 0, 0, 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, 0, 0, 0, 0, 0, 0, 0 } };

حرف ثابت بدون توقيع [8] [27 * 5] PROGMEM = {

{ 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, 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, 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, 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, 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, 0, 0, 0, 0, 0 }, { 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0 }, { 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 }, { 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0 }, { 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 }, { 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } };

كونست شار سانتا غير موقعة [4] [8] [41] PROGMEM = {

{ { 0, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0 }, { 0, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0 }, { 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 2, 0, 1, 0, 0, 0, 0, 0, 1, 1, 2, 0 }, { 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0 }, { 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0 }, { 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0 }, { 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 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, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 } }, { { 0, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0 }, { 0, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0 }, { 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 2, 0, 1, 0, 0, 0, 0, 0, 1, 1, 2, 0 }, { 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0 }, { 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0 }, { 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0 }, { 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 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, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0 } }, { { 0, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0 }, { 0, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 0, 0, 0, 0, 1, 1, 2, 0, 0, 1, 0, 0, 0, 0, 1, 1, 2, 0 }, { 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0 }, { 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0 }, { 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0 }, { 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0 }, { 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0 }, { 0, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0 }, { 0, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 2, 0, 1, 0, 0, 0, 0, 0, 1, 1, 2, 0 }, { 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0 }, { 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0 }, { 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0 }, { 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 }, { 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 } } };

#define INFRATRIGGER_PIN D2

#define NEOPIXELS_PIN D3 #define NEO_NUMPIXELS 24

Adafruit_NeoPixel pixels = Adafruit_NeoPixel (NEO_NUMPIXELS، NEOPIXELS_PIN، NEO_GRB + NEO_KHZ800) ؛

IPAddress localIPaddress ؛

عنوان IP خادم WiFiServer (80) ؛ WebSocketsServer webSocket = WebSocketsServer (81) ، قماش uint8_t [24] [65] ؛ uint8_t co = 0 ؛ uint8_t المشهد = 0 ؛ uint8_t numScenes = 5 ؛ مشاهد سلسلة [6] = {"WORLD"، "SANTA"، "PEPPER"، "TEXT"، "MATRIX"}؛ uint8_t استدارة = 1 ؛ uint8_t numGreens = 0 ؛ // عدد المصفوفة من الخطوط المتساقطة uint8_t greens [64] [2] ؛ // MATRIX random pos x و y للخطوط الساقطة

الإعداد باطل() {

إذا (DEBUG) {Serial.begin (9600) ، Serial.println ("ابدأ …") ؛ } تأخير (3000) ؛

ESP8266WiFiMulti wifi متعدد ؛

wifiMulti.addAP ("wifissid"، "pwd") ؛ wifiMulti.addAP ("mobilessid"، "pwd") ؛ wifiMulti.addAP ("laptopssid"، "pwd") ؛ إذا (DEBUG) Serial.print ("توصيل المحطة بـ") ؛ بينما (wifiMulti.run ()! = WL_CONNECTED) {delay (1000) ؛ إذا (DEBUG) Serial.print (".") ؛ } إذا (DEBUG) Serial.println ("") ؛ إذا (DEBUG) Serial.print ("WiFi متصل: SSID =") ؛ إذا (DEBUG) Serial.println (WiFi. SSID ()) ؛ localIPaddress = WiFi.localIP () ، if (DEBUG) Serial.print ("عنوان IP للمحطة المحلية:") ؛ إذا (DEBUG) Serial.println (localIPaddress) ؛

server.begin () ،

إذا (DEBUG) Serial.println ("Server (80) بدأ") ؛ webSocket.begin () ، webSocket.onEvent (webSocketEvent) ؛ إذا (DEBUG) Serial.println ("WebSocket (81) بدأ") ؛ uint8_t coli = 0 ؛ لـ (int i = 0؛ i <24؛ i ++) {لـ (int j = 0؛ j <64؛ j ++) {canvas [j] = coli ++؛ القولونية = القولونية٪ 7 ؛ } لوحة [64] = 0 ؛ } pinMode (INFRATRIGGER_PIN، INPUT) ؛ attachInterrupt (digitalPinToInterrupt (INFRATRIGGER_PIN) ، الطلاء ، RISING) ؛ pixels.begin () ، pixels.show () ، إذا (DEBUG) {Serial.print ("بدأ Neopixel ، NUMPIXELS:") ؛ Serial.println (pixels.numPixels ()) ؛ }}

webSocketEvent باطل (uint8_t num، WStype_t type، uint8_t * payload، size_t length) {

if (type == WStype_TEXT) {String req = String ((const char *) payload) ؛ إذا (DEBUG) {Serial.print ("81 Req:") ؛ Serial.println (مطلوب) ؛ } processReq (req) ؛ }}

سلسلة rip2 (سلسلة) {

دقة السلسلة كثافة العمليات أنا = 0 ؛ while (s ! = '/') i ++ ؛ أنا ++ ؛ while (s ! = '/') i ++ ؛ أنا ++ ؛ while (s ! = '/' && s ! = '' && s ! = '\ r' && s ! = '\ n') res + = s [i ++] ؛ عودة الدقة }

عملية باطلة (طلب سلسلة) {

if (req.indexOf ("/ rotate")! = -1) {rotate = 1؛ } else if (req.indexOf ("/ scene")! = -1) {rotate = 0؛ السلسلة sc = rip2 (req) ؛ إذا (isDigit (sc [0])) مشهد = sc.toInt () ؛ آخر {مشهد = 0 ؛ لـ (int i = 0 ؛ i

حلقة فارغة() {

webSocket.loop () ، عميل WiFiClient = server.available () ؛ إذا (! العميل) {عودة؛ } String req = client.readStringUntil ('\ r') ؛ إذا (DEBUG) {Serial.print ("80 Req:") ؛ Serial.println (مطلوب) ؛ } processReq (req) ؛

client.flush () ،

String s = "HTTP / 1.1 200 موافق / r / n نوع المحتوى: text / html؛ charset = UTF-8 / r / nAccess-Control-Allow-Headers: Content-Type / r / nAccess-Control-Allow-Origin: * / r / n الاتصال: أغلق / r / n / r / n "؛ s + = "localIP:" + ipToString (localIPaddress) + "" ؛ s + = "apIP:" + ipToString (apIPaddress) + "" ؛ العميل.طباعة (ق) ؛ تأخير (100) ؛ client.stop () ؛ }

طلاء باطل () {

لـ (int i = 0؛ i <65؛ i ++) {for (int j = 0؛ j <24؛ j ++) {unsigned char ind = canvas [j] ؛ pixels.setPixelColor (j، pixels. Color (لوح [ind] [0] ، لوح [ind] [1] ، لوح [ind] [2])) ؛ } pixels.show ()؛ تأخير ميكروثانية (10) ؛ } co = (co + 1)٪ 40 ؛ إذا (تدوير) {if (co == 0) {مشهد = (مشهد + 1)٪ numScenes ؛ if (DEBUG) {Serial.print ("Scene:") ؛ Serial.println (مشهد) ؛ }} if (co == 0) loadCanvas (scenes [scene])؛ } إذا (مشاهد [مشهد].indexOf ("SANTA")! = -1) {لـ (int i = 0؛ i <8؛ i ++) لـ (int j = 0؛ j = co && j

void loadCanvas (String what) {

clearCanvas () ، if (DEBUG) {Serial.print ("loadCanvas:")؛ Serial.println (ماذا) ؛ } if (what.indexOf ("TEXT")! = -1) {for (int l = 0؛ l <3؛ l ++) for (int n = 0؛ n = 12 && j <51) canvas [j] = pgm_read_byte_near (فلفل + j-12) ؛ } else if (what.indexOf ("WORLD")! = -1) {for (int i = 0؛ i <24؛ i ++) لـ (int j = 0؛ j = 11 && j <53) canvas [j] = pgm_read_byte_near (العالم + j-11) ؛ }}

باطل clearCanvas () {

if (DEBUG) Serial.println ("clearCanvas") ؛ لـ (int i = 0 ؛ i <24 ؛ i ++) لـ (int j = 0 ؛ j <65 ؛ j ++) canvas [j] = 0 ؛ }

String ipToString (IPAddress ip) {

سلسلة s = "" ؛ لـ (int i = 0 ؛ i <4 ؛ i ++) s + = i؟ "." + سلسلة (ip ): String (ip ) ؛ عائدات؛ }

موصى به: