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

كيفية إضافة عرض بالحبر الإلكتروني إلى مشروعك: 12 خطوة (بالصور)
كيفية إضافة عرض بالحبر الإلكتروني إلى مشروعك: 12 خطوة (بالصور)

فيديو: كيفية إضافة عرض بالحبر الإلكتروني إلى مشروعك: 12 خطوة (بالصور)

فيديو: كيفية إضافة عرض بالحبر الإلكتروني إلى مشروعك: 12 خطوة (بالصور)
فيديو: طريقة عمل استبيان الكتروني باستخدام نماذج جوجل GOOGLE FORMS | لإرساله إلى عينة حقيقية | وجمع النتائج 2024, يوليو
Anonim
كيفية إضافة عرض بالحبر الإلكتروني إلى مشروعك
كيفية إضافة عرض بالحبر الإلكتروني إلى مشروعك
كيفية إضافة عرض بالحبر الإلكتروني إلى مشروعك
كيفية إضافة عرض بالحبر الإلكتروني إلى مشروعك

تتضمن الكثير من المشاريع مراقبة نوع من البيانات ، مثل البيانات البيئية ، وغالبًا ما تستخدم Arduino للتحكم. في حالتي ، أردت مراقبة مستوى الملح في منقي الماء. قد ترغب في الوصول إلى البيانات عبر شبكتك المنزلية ، ولكنك قد ترغب أيضًا في عرضها حيث يتم قياسها. أو يمكن أن يكون لديك شاشة متصلة عن بُعد تعمل دائمًا في مكان أكثر ملاءمة.

يوجد الآن عدة أنواع من شاشات العرض يمكنك استخدامها ، وكلها رخيصة جدًا ، ولكن لها مزايا وعيوب مختلفة:

  • شاشة LCD الأبجدية الرقمية هي الأرخص ولكنها أيضًا محدودة.
  • يمكن لشاشة OLED عرض الرسومات ولكن رخيصة منها صغيرة جدًا. تُظهر الصورة الثانية شاشة OLED بحجم 128 × 64 بكسل بجوار E-Ink.
  • تعد شاشة E-Ink (أو الورق الإلكتروني) أكبر إلى حد ما وبالتالي يسهل قراءتها ، وتتميز بميزة الاحتفاظ بالشاشة حتى عند إيقاف تشغيلها! لكن الأمر يستغرق عدة ثوانٍ لإعادة رسم الشاشة.

بدت شاشة E-Ink مثالية لتطبيقي حيث يمكنني برمجة Arduino للاستيقاظ كل بضع ساعات فقط ، وأخذ القراءة وعرضها قبل العودة إلى النوم. ومن ثم ليس من العواقب أن يستغرق الأمر عدة ثوانٍ لإعادة رسم الشاشة.

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

اللوازم

تم بيع أرخص شاشات E-Ink التي وجدتها بواسطة BuyDisplay ، وهي متوفرة أيضًا لدى العديد من بائعي eBay. لسوء الحظ ، تترك الوثائق الكثير مما هو مرغوب فيه ، لذلك أخذت على عاتقي كتابة برنامج تعليمي - تابع القراءة!

اعتمادًا على متطلباتك وميزانيتك ، يمكنك اختيار أحجام مختلفة:

  • 1.54 بوصة (152 × 152 = 23 ، 104 بكسل)
  • 2.13 بوصة (212 × 104 = 22 ، 048 بكسل)
  • 2.6 بوصة (296 × 152 = 44 ، 992 بكسل)
  • 2.7 بوصة (176 × 264 = 46 ، 464 بكسل)
  • 2.9 بوصة (296 × 128 = 37 ، 888 بكسل)
  • 4.2 بوصة (400 × 300 = 120 ، 000 بكسل)
  • 5.83 بوصة (640 × 480 = 307 ، 200 بكسل)
  • 7.5 بوصة (880 × 528 = 464 ، 640 بكسل)

(لقد توسع النطاق منذ آخر مرة بحثت فيها ، لذا ربما توسع أكثر بحلول المرة التي تقرأ فيها هذا.)

وهي متوفرة إما بلونين (أسود / أبيض) أو 3 ألوان (أسود / أحمر / أبيض أو أسود / أصفر / أبيض). يفترض هذا Instructable أنك تستخدم اللون الأحمر ، ولكن إذا اخترت الإصدار الأصفر ، فما عليك سوى قراءة "أصفر" بدلاً من "أحمر" طوال الوقت.

اختر إصدار SPI (4 أسلاك). لقد استخدمت الطراز 1.54 بوصة ، وهو حجم رائع جدًا.

الخطوة 1: توصيل شاشتك

توصيل شاشتك
توصيل شاشتك

تأتي هذه الشاشات مع رأس دبوس 2x4. يتم تمييز أرقام الدبوس بوضوح ، الدبابيس 7 و 5 و 3 و 1 (من اليسار إلى اليمين) على طول الصف العلوي و 8 و 6 و 4 و 2 على طول الجزء السفلي.

قد تأتي شاشتك مزودة بكابل توصيل بثماني اتجاهات ، مما يجعل الاتصال سهلاً. (كابل التصحيح الخاص بي به سلكان أحمر وسلكان بنيان. لا يمكن استبدالهما!

يوضح الجدول التالي الاتصالات التي تنطبق على معظم أنواع Arduino (بما في ذلك Uno و Pro Mini و Pro Micro و Nano).

وحدة الحبر الإلكتروني اردوينو
دبوس اسم دبوس اسم
1 VDD Vcc 3.3 / 5 فولت
2 VSS Gnd Gnd
3 تسلسل البيانات بتنسيق 11 MOSI
4 الساعة التسلسلية 13 SCK
5 / اختيار رقاقة 10
6 البيانات / Instr 9
7 إعادة ضبط 8
8 الجهاز مشغول 7

الخطوة 2: قم بتنزيل البرنامج المقدم

يمكنك استخدام البرنامج المقدم كما هو موضح في هذه الخطوة ، أو يمكنك استخدام مكتبتي المحسّنة في الخطوة التالية باستثناء واحدة.

ابحث عن جهازك في BuyDisplay.com. في الجزء السفلي من الصفحة ، ستجد ملف ZIP يتم تنزيله "Arduino Library and Example for 4-wire SPI". انقر فوق هذا للتنزيل والفتح في مستكشف Windows.

سيعرض Windows Explorer هذا على أنه يحتوي على مجلد واحد من المستوى الأعلى "Libraries-Examples_ER-EPM0154-1R". (سيكون الاسم مختلفًا قليلاً إذا لم يكن اسمك من طراز 1.54 بوصة.)

انسخ مجلد المستوى الأعلى هذا إلى مجلد مكتبات Arduino. انقر بزر الماوس الأيمن لإعادة تسمية المجلد ، واحذف "Libraries-Examples_" من الاسم.

(للعثور على مجلد مكتبات Arduino ، في Arduino IDE ، انقر فوق File… Preferences ، ولاحظ موقع Sketchbook. انتقل إلى هذا ، وستجد مجلد Arduino "مكتبات" بين مجلدات الرسم.)

افتح هذا المجلد وافتح المجلد "مكتبات" بداخله. اسحب جميع الملفات الموجودة في هذا المجلد وأفلتها في المجلد الرئيسي بمستوى واحد لأعلى ("ER-EPM0154-1R"). احذف مجلد "المكتبات" (الفارغ الآن).

لقد قمت الآن بتثبيت الملفات ورسم اختبار كمكتبة Arduino. لاحظ أنه إذا لم تكن شاشة العرض الخاصة بك مقاس 1.54 بوصة ، فسيبدو الاختلاف الوحيد في سطرين في ER-ERM * -1.h الذي يحدد WIDTH و HEIGHT.

في Arduino IDE ، انقر فوق File… Exampes وانتقل لأسفل إلى ER-EPM0154-1R للحصول على الرسم التوضيحي ، والذي يجب أن تكون قادرًا على تجميعه وتشغيله بمجرد توصيل شاشة العرض بـ Arduino.

الخطوة 3: تشغيل العرض التوضيحي

تشغيل العرض التوضيحي
تشغيل العرض التوضيحي
تشغيل العرض التوضيحي
تشغيل العرض التوضيحي

في Arduino IDE ، انقر فوق ملف … أمثلة … ER-EPM0154-1R.

قم بتوصيل Arduino بجهاز الكمبيوتر الخاص بك باستخدام كابل USB ، أو بالطريقة المعتادة.

ضمن أدوات ، قم بتعيين اللوحة والمعالج والمنفذ.

ضمن رسم ، انقر فوق تحميل.

سيكون هناك تأخير طفيف بعد اكتمال التحميل ، وسيومض التأخير عشر مرات عدة مرات لأنه يرسم الصورة الأولى. شاهد بينما يمر خلال العرض التوضيحي.

الخطوة 4: استخدام المكتبة المحسنة

يمكنك تنزيل مكتبتي المحسّنة من github على

ملحوظة. لدي درجة عالية من الثقة في أن مكتبتي ستعمل مع أي شاشة متوافقة مع أي حجم ، لكنني في الواقع اختبرتها فقط مع نموذج 1.54 بوصة. إذا كنت تستخدم واحدة مختلفة ، فيرجى إعلامي في التعليقات في النهاية من Instructable ، لتأكيد أنه يعمل. ولكن إذا لم يحدث ذلك ، فسأبذل قصارى جهدي لمساعدتك.

قم بتنزيل وحفظ الملف المضغوط. في Arduino IDE ، انقر فوق Sketch… Include Library… Add. ZIP Library وحدد الملف المضغوط المحفوظ.

تحتوي مكتبتي على عدة تحسينات طفيفة:

  • يسمح باستخدام أرقام دبوس Arduino مختلفة (باستثناء MOSI).
  • يمكن استخدام نفس المكتبة لأي جهاز بحجم.
  • يتم توفير تعبئة مظللة جديدة بنسبة 50٪ وتعبئة منقط (مجموعة وحدات بكسل عشوائية).

تأتي المكتبة كملف قياسي من نوع Arduino مضغوط (zip). قم بتنزيله إلى مجلد التنزيلات (أو المكان الذي تفضله) ، وفي Arduino IDE ، انقر فوق Sketch… Include Library… Add ZIP Library.

ضمن الأمثلة ، ستجد الآن E-ink_ER-EPM. هناك 3 أمثلة للرسومات:

  • اختبار ER_EPM154-1R: العرض التوضيحي الأصلي المقدم من البائع
  • E-ink_demo: تم تطوير الرسم التخطيطي في الخطوات التالية
  • معدل الحبر الإلكتروني: عرض لتدوير الصورة.

الخطوة 5: برمجتها بنفسك

لسوء الحظ ، لا يوجد توثيق مع الكود الذي قدمه البائع ، كما لم يتم التعليق على رمز المثال بشكل كافٍ. هذا يجعل الأمر أكثر صعوبة مما ينبغي أن يكون استخدامه ، والغرض الرئيسي من هذا Instructable هو وضع هذا الحق.

مفاهيم أساسية

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

تُعرف هذه المقاطع من الشاشة باسم كائنات "الرسام". ما عليك سوى واحد ، ولكل قسم من الشاشة تحدد ارتفاعه وعرضه ودورانه. عند الانتهاء ، تقوم بتحميله ، وتحديد الموضع على الشاشة لتحميله عليه وما إذا كان يجب أن يكون باللونين الأسود والأبيض أو الأحمر والأبيض.

الزاوية العلوية اليسرى من الشاشة لها إحداثيات أفقية (س) وعمودية (ص) (0 ، 0) ، أسفل يسار (0 ، 151) وأعلى يمينها (151 ، 0).

التهيئة

افتح رسم تخطيطي لـ E-ink_demo في Arduino IDE واتبعه أثناء وصف كيفية استخدام المكتبة.

سترى في الجزء العلوي من الرسم السطور التالية ، والتي تكون مطلوبة دائمًا:

# تضمين <SPI.h # تضمين "ER-ERM0154-1.h" # تضمين "imagedata.h" # تضمين "epdpaint.h" # تعريف ملون 0 # تعريف غير ملون 1 Epd epd؛

# تضمين الأسطر تسحب المكتبات المطلوبة. SPI.h هي مكتبة Arduino قياسية ، لكن الآخرين يشكلون جزءًا من مكتبة الحبر الإلكتروني.

نحدد أسماء البكسلات غير الملونة (البيضاء) والملونة (الأسود أو الأحمر). (ملاحظة لزملائي الأوروبيين: تم استخدام التهجئة الأمريكية لـ COLOR.)

epd epd؛ يقوم الخط بإنشاء كائن الجهاز الورقي الإلكتروني ، والذي سنعرض عليه. يجب أن يكون هذا هنا في بداية المخطط لإتاحته مع وظائف الإعداد () والحلقة ().

إذا كان لديك شاشة عرض مختلفة الحجم ، فيمكنك استبدال خط EPD عن طريق:

epd epd (عرض ، ارتفاع) ؛

(بعد أن تم تعريف WIDTH و HEIGHT مسبقًا في # عبارات تعريف.)

بنفس الطريقة يمكنك تحديد أرقام التعريف الشخصية غير الافتراضية باستخدام:

epd epd (WIDTH، HEIGHT، BUSY_PIN، RESET_PIN، DC_PIN، CS_PIN) ؛

ضمن الإعداد () ، نحتاج إلى تهيئة الجهاز على النحو التالي:

Serial.begin (9600)

if (epd. Init ()! = 0) {Serial.print ("فشل تهيئة الورق الإلكتروني") ؛ إرجاع؛ }

(في الواقع ، لا يُرجع epd. Init () أي خطأ مطلقًا ، ولكن قد يكتشف التحسين المستقبلي عدم وجود شاشة عرض أو عدم وجود شاشة لا تعمل.)

الخطوة السادسة: كتابة النص

كتابة نص
كتابة نص

في E-ink_demo ، حوّل انتباهك إلى حلقة (). أولاً ، دعنا نمسح الشاشة:

epd. ClearFrame ()

(هذا ليس ضروريًا في الواقع إذا كنت على وشك عرض صورتك الخاصة.)

قبل أن نتمكن من رسم أي شيء (سواء كان نصًا أو رسومات) ، نحتاج إلى إنشاء كائن Paint للرسم عليه:

صورة حرف غير موقعة [1024]

طلاء الدهان (صورة ، 152 ، 18) ؛ // يجب أن يكون العرض هو مضاعف 8

هذا يحتفظ ببعض المساحة (1024 بايت) ويخصصها لكائن الرسام ، مقسومًا بالسطر الثاني. تم تكوين هذا مؤقتًا على أنه 152 بكسل عرضًا وعمق 18 بكسل. يمكننا إعادة تكوينه لاحقًا لإعادة استخدامه حسب الضرورة ، ولكن لاحظ: يجب أن يكون العرض متعددًا من 8 نظرًا لأنه يتم تخزين 8 بكسل لكل بايت ولا يمكننا تقسيم البايت. (سيتم تقريبه في الواقع إذا لزم الأمر ، ولكن قد يكون الأمر محيرًا عندما لا تبدو شاشتك كما ينبغي.

الآن يجب علينا مسح كائن الطلاء إلى UNCOLORED (أبيض) ، ثم في الموضع (x ، y) = (22 ، 2) نكتب "e-ink Demo" باستخدام خط عالي 16 بكسل ، وملون (لإظهاره مقابل خلفية غير ملونة.

دهان واضح (غير ملون)

paint. DrawStringAt (12، 2، "e-paper Demo"، & Font16، COLORED) ؛

لاحظ أن الإحداثيات (22 ، 2) هي الزاوية اليسرى العلوية للحرف الأول من السلسلة ، وهي 22 بكسل في و 2 بكسل لأسفل بالنسبة إلى الركن الأيسر العلوي من كائن الطلاء ، وليس الشاشة بأكملها. يبدو النص أفضل بمقدار بكسل واحد على الأقل لأسفل من أعلى كائن الطلاء.

الخطوط التالية متوفرة:

الخط 8 - 5 × 8 بكسل الخط 12 - 7 × 12 بكسل الخط 16 - 11 × 16 بكسل الخط 20 - 14 × 20 بكسل الخط 24 - 17 × 24 بكسل

علينا الآن فقط إرسال كائن الطلاء ("الطلاء") إلى الجهاز ("epd"):

epd. SetPartialWindowBlack (paint. GetImage ()، 0، 3، paint. GetWidth ()، paint. GetHeight ()) ؛

SetPartialWindowBlack هي طريقة نطبقها على كائن epd ، باستخدام الصورة وخصائص عرضها وعمق كائن الطلاء. نطلب منه كتابة هذه الصورة على الجهاز عند (x، y) = (0، 3). ونقول أن البيكسلات الملونة ستكون سوداء.

لم يكن ذلك صعبًا جدًا ، أليس كذلك؟ لنجرب واحدة أخرى.

الطلاء واضح (ملون) ؛

paint. DrawStringAt (20، 2، "(أبيض على لون)"، & Font12، UNCOLORED)؛ epd. SetPartialWindowRed (paint. GetImage ()، 0، 24، paint. GetWidth ()، paint. GetHeight ()) ؛

نعيد استخدام نفس كائن الطلاء ، ونفس العرض والارتفاع ، ولكن هذه المرة ، دعنا نزيله إلى COLORED ونكتب سلسلة غير ملونة إليه. وللتغيير ، سنجعل وحدات البكسل الملونة باللون الأحمر ونكتبها على الجهاز عند (0 ، 24) ، أسفل الأولى مباشرة.

لقد كتبنا كائني الطلاء في ذاكرة الجهاز ولكن لم نطلبه بعد لعرضهما. نقوم بذلك بالبيان التالي:

epd. DisplayFrame () ،

(في الرسم التخطيطي E-ink_demo ، نترك هذا في الواقع حتى النهاية ، بعد رسم بعض الأشياء الأخرى ، ولكن يمكنك إدخالها هنا إذا أردت ، يتبعها تأخير (10000) ؛ لإعطائك الوقت للاستمتاع بعملك اليدوي.

الخطوة 7: رسم الخطوط والمستطيلات

رسم الخطوط والمستطيلات
رسم الخطوط والمستطيلات

دعونا نرى كيفية رسم الخطوط والمستطيلات. سنستخدم نفس كائن الطلاء ، لكننا نحتاج إلى إعادة تكوينه بعرض 40 بكسل وارتفاعه 36 بكسل. سنقوم بمسحها إلى UNCOLORED.

paint. SetWidth (40) ؛

الطلاء. SetHeight (36) ؛ الطلاء واضح (غير ملون) ؛

سنقوم برسم مستطيل (ملون) بأعلى الزاوية اليسرى (5 ، 3) وأسفل يمين (35 ، 33) ، بالنسبة إلى كائن الطلاء ، كالمعتاد. سنقوم أيضًا برسم الأقطار كخطوط من (5 ، 3) إلى (35 ، 33) ومن (35 ، 3) إلى (5 ، 33). أخيرًا ، سنكتب كائن الطلاء بالكامل (أحمر) على الشاشة عند (32 ، 42).

//الصف العلوي:

// مستطيل دهان واضح (غير ملون) ؛ دهان رسم مستطيل (5 ، 3 ، 35 ، 33 ، ملون ؛) دهان رسم خط (5 ، 3 ، 35 ، 33 ، ملون) ؛ رسم خط (35 ، 3 ، 5 ، 33 ، ملون) ؛ epd. SetPartialWindowRed (paint. GetImage ()، 32، 42، paint. GetWidth ()، paint. GetHeight ()) ؛

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

// دهان مستطيل مظلل واضح (غير ملون) ؛ دهان مستطيل مظلل (5 ، 3 ، 35 ، 33) ؛ epd. SetPartialWindowBlack (paint. GetImage () ، 72 ، 42 ، paint. GetWidth () ، paint. GetHeight ()) ؛ // دهان مستطيل معبأ. واضح (غير ملون) ؛ paint. DrawFilledRectangle (5 ، 3 ، 35 ، 33 ، ملون) ؛ epd. SetPartialWindowRed (paint. GetImage () ، 112 ، 42 ، paint. GetWidth () ، paint. GetHeight ()) ؛

الخطوة 8: رسم الدوائر

دوائر الرسم
دوائر الرسم

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

//الصف الثاني

// دهان دائري واضح (غير ملون) ؛ paint. DrawCircle (20 ، 18 ، 15 ، ملون) ؛ epd. SetPartialWindowBlack (paint. GetImage ()، 32، 78، paint. GetWidth ()، paint. GetHeight ()) ؛ // دهان دائري مظلل واضح (غير ملون) ؛ دهان مظلل دائرة (20 ، 18 ، 15) ؛ epd. SetPartialWindowRed (paint. GetImage ()، 72، 78، paint. GetWidth ()، paint. GetHeight ()) ؛ // دهان دائري معبأ. واضح (غير ملون) ؛ paint. DrawFilledCircle (20 ، 18 ، 15 ، ملون) ؛ epd. SetPartialWindowBlack (paint. GetImage () ، 112 ، 78 ، paint. GetWidth () ، paint. GetHeight ()) ؛

الخطوة 9: غير ملون على خلفية ملونة

غير ملون على أرضية خلفية ملونة
غير ملون على أرضية خلفية ملونة

نحن نحصل على شهرة هنا! لذا أثناء قيامنا بالتدحرج ، لنقم بثلاث دوائر أخرى في صف أدناه ، هذه المرة غير ملون على كائن طلاء ملون ، كما فعلنا مع السطر الثاني من النص.

//الصف الثالث

// دهان دائري واضح (ملون) ؛ paint. DrawCircle (20 ، 18 ، 15 ، غير ملون) ؛ epd. SetPartialWindowRed (paint. GetImage ()، 32، 114، paint. GetWidth ()، paint. GetHeight ()) ؛ // دهان دائري مظلل دهان واضح (ملون) دائرة مظللة مظللة (20 ، 18 ، 15) ؛ epd. SetPartialWindowBlack (paint. GetImage () ، 72 ، 114 ، paint. GetWidth () ، paint. GetHeight ()) ؛ // دهان دائري معبأ. واضح (ملون) ؛ paint. DrawFilledCircle (20 ، 18 ، 15 ، غير ملون) ؛ epd. SetPartialWindowRed (paint. GetImage () ، 112 ، 114 ، paint. GetWidth () ، paint. GetHeight ()) ؛

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

دهان مرقط دائري (20 ، 18 ، 15 ، 25) ؛

المعلمة النهائية (25) هي الكثافة ، أي النسبة المئوية للبكسل التي سيتم تلوينها. إذا تم حذفه ، فسيتم افتراض 50٪.

يوجد أيضًا DrawSpeckledRectangle ، مع معلمة إضافية اختيارية تحدد الكثافة.

الخطوة 10: الدوران

دوران
دوران
دوران
دوران

أي شيء يمكننا رسمه ، يمكننا تدويره بمقدار 90 أو 180 أو 270 درجة. (نحسب الدورات في اتجاه عقارب الساعة.)

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

لذلك إذا كنت تريد تدوير النص في اتجاه عقارب الساعة بمقدار 90 درجة بحيث يقرأ من أعلى إلى أسفل (بدلاً من اليسار إلى اليمين) ، فسيكون الركن العلوي الأيمن من كائن الطلاء (0 ، 0) لأغراض أي شيء تكتبه أو ارسمها ، مع قياس x من تلك الزاوية لأسفل ، و y من تلك الزاوية نحو اليسار.

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

لاحظ أنه على الرغم من قيامك بتدوير كائن طلاء ، فإن التدوير ينطبق فقط عندما ترسم وحدات بكسل عليه. عندما تأتي لكتابته على الجهاز ، لا تزال إحداثيات الزاوية اليسرى العلوية التي يجب عليك تقديمها إلى SetPartialWindow.

للتلخيص ، لنقم بتكوين كائن الطلاء الخاص بنا ليكون عرضه 32 وارتفاعه 110 ، وسنمنحه خاصية ROTATE_270. لا يعني ذلك أنه يتعين علينا القيام بكل هذا قبل الكتابة أو الرسم على أي شيء.

paint. SetWidth (32) ؛

الطلاء. SetHeight (110) ؛ paint. SetRotate (ROTATE_270) ؛

سنقوم بمسحها إلى COLORED وكتابة سلسلة غير ملونة إليها ، ثم نضعها في (0 ، 42). (هذا هو أعلى الزاوية اليسرى ، تذكر. انس أي تدوير للبكسل فيه.)

الطلاء واضح (ملون) ؛ paint. DrawStringAt (8، 8، "Sideways!"، & Font16، UNCOLORED) ؛ epd. SetPartialWindowBlack (paint. GetImage ()، 0، 42، paint. GetWidth ()، paint. GetHeight ()) ؛

أخيرًا ، نحتاج إلى إخبار الجهاز بعرض جميع وحدات البكسل التي قدمناها له. وإذا كنا لا نرغب في تغييرها لفترة من الوقت ونريد الحفاظ على طاقة البطارية ، فيمكننا وضعها في وضع السكون ، ولماذا لا نضع Arduino في وضع السكون أيضًا ، ليتم إيقاظك عندما يحين وقت أخذ آخر وعرض آخر قياس.

epd. DisplayFrame () ،

epd. Sleep () ،

يوضح الرسم التوضيحي المثال الثاني الدوران خلال 90 درجة و 180 و 270 درجة. الآن يجب أن تكون قادرًا على متابعته بنفسك.

الخطوة 11: رسم الصور النقطية

رسم الصور النقطية
رسم الصور النقطية

يتضمن العرض التوضيحي للمورد عرض بضع صور نقطية. من السهل إنشاء هذه باستخدام أداة يمكن تنزيلها من

www.buydisplay.com/image2lcd

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

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

يمكنك إنشاء صورتك بأي برنامج رسم تعرفه ، أو يمكنك مسحه ضوئيًا في رسم تخطيطي أو رسم ، ولكن في كلتا الحالتين ، يجب أن تكون قادرًا على تصغيرها إلى مستويين فقط. احفظه بتنسيق.gif أو-j.webp

قم بتشغيل Image2Lcd. على طول الجزء السفلي ، سترى علامة تبويب التسجيل. انقر فوق هذا وأدخل رمز التسجيل الذي جاء في ملف نصي في الملف المضغوط الذي قمت بتنزيله. سيؤدي هذا إلى إزالة تراكب على الصورة.

في Image2Lcd ، افتح ملف الصورة الخاص بك. في الجزء الأيمن ، تأكد من أن لديك

  • نوع ملف الإخراج: C مجموعة
  • وضع المسح الضوئي: مسح أفقي
  • بت بيكسل: أحادي اللون
  • العرض والارتفاع الأقصى: حجم الشاشة ، و
  • تضمين بيانات الرأس يجب أن تكون غير محددة.

انقر فوق الزر الموجود بجوار Max Width و Height للمعالجة. سيتم عرض نتيجة المعالجة. قد تضطر إلى ضبط منزلقات السطوع والتباين للحصول على أفضل النتائج.

انقر فوق خانة اختيار اللون العكسي أعلى منزلق السطوع ، مما يجعلها صورة سلبية ، وهو أمر ضروري لسبب ما ، ثم انقر فوق حفظ لحفظها كـ imagedata.cpp في المجلد الذي يحتوي على رسم Arduino الخاص بك. في المرة القادمة التي تفتح فيها الرسم باستخدام Arduino IDE ، يجب أن تراه كعلامة تبويب جديدة.

الخطوة 12: عرض الصورة النقطية الخاصة بك

عرض الصورة النقطية الخاصة بك
عرض الصورة النقطية الخاصة بك

في الملف الرئيسي لرسم Arduino الخاص بك ، مباشرة بعد #include الأسطر في الأعلى ، أدخل:

# تضمين "imagedata.h"

قم بإنشاء علامة تبويب جديدة (انقر فوق السهم لأسفل في نهاية سطر علامات التبويب) وقم بتسميتها imagedata.h. أدخل السطرين التاليين فيه:

حرف ثابت خارجي غير موقعة IMAGE_BLACK ؛

حرف ثابت خارجي غير موقعة IMAGE_RED ؛

في ملف imagedata.cpp الخاص بك ، سيبدأ السطر الأول بـ

const غير موقعة char gImage_image [2888] = {

(سيكون الرقم الموجود بين قوسين مربعين مختلفًا إذا كنت لا تستخدم شاشة مقاس 1.54 بوصة). استبدل هذا بـ

حرف غير موقّع IMAGE_BLACK PROGMEM = {

هذا لصورة بالأبيض والأسود. إذا كنت تريده باللونين الأحمر والأبيض ، فقم بتغييره إلى

حرف غير موقّع IMAGE_RED PROGMEM = {

قبل هذا السطر ، أضف

#يشمل

# تضمين "imagedata.h"

أنت الآن جاهز لعرض صورتك. في حلقة () في ملفك الرئيسي ، أضف

epd. ClearFrame () ،

epd. DisplayFrame (IMAGE_BLACK، NULL) ،

أو ، إذا كانت صورة حمراء قمت بإنشائها ، فيجب أن يكون السطر الثاني

epd. DisplayFrame (NULL ، IMAGE_RED) ،

في الواقع يمكنك إنشاء صورة مجمعة باللونين الأحمر والأسود عن طريق تحويل الجزأين الأحمر والأسود بشكل منفصل باستخدام Image2Lcd ، وعرضهما معًا

epd. DisplayFrame (IMAGE_BLACK، IMAGE_RED) ؛

ومع ذلك ، فإن أي وحدات بكسل تم تحديدها باللون الأسود في الصورة بالأبيض والأسود ، والأحمر باللون الأحمر والأبيض ، ستظهر باللون الأحمر.

أخيرًا ، يمكنك تراكب صورتك مع أي من وظائف النص أو الرسومات التي تعلمناها سابقًا. كنت أرغب في إضافة مقبض Twitter الخاص بي ، لذلك أضفت

طلاء الدهان (صورة ، 20 ، 152) ؛ // يجب أن يكون العرض هو مضاعف 8

paint. SetRotate (ROTATE_270) ؛ الطلاء واضح (غير ملون) ؛ paint. DrawStringAt (20، 2، "pleriche"، & Font16، COLORED) ؛ epd. SetPartialWindowRed (paint. GetImage ()، 0، 0، paint. GetWidth ()، paint. GetHeight ()) ؛ epd. SetPartialWindowRed (paint. GetImage ()، 0، 0، paint. GetWidth ()، paint. GetHeight ()) ؛ epd. DisplayFrame () ،

موصى به: