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

مجموعة من محطات ANSI: 10 خطوات
مجموعة من محطات ANSI: 10 خطوات

فيديو: مجموعة من محطات ANSI: 10 خطوات

فيديو: مجموعة من محطات ANSI: 10 خطوات
فيديو: كيف تعرف الاتجاهات (10 طرق لمعرفة الإتجاهات) 2024, يوليو
Anonim
مجموعة من محطات ANSI
مجموعة من محطات ANSI

بدأ هذا المشروع كطريقة لعرض نص مكون من 80 عمودًا على شاشة LCD مناسبة لتشغيل معالج كلمات قديم مثل Wordstar. تمت إضافة شاشات عرض أخرى مختلفة تتراوح أحجامها من 0.96 إلى 6 بوصات. تستخدم شاشات العرض ثنائي الفينيل متعدد الكلور بالإضافة إلى رسم / برنامج Arduino واحد.

يوجد اتصال تسلسلي RS232 للاتصال بجهاز كمبيوتر ومقبس PS / 2 للوحة المفاتيح. تم اختيار شاشات العرض لتمثيل تلك المتوفرة بشكل عام وبأسعار معقولة. اعتمادًا على الذاكرة المطلوبة ، تستخدم شاشات العرض Arduino Nano أو Uno أو Mega.

الخطوة 1: ملخص العروض

ملخص العروض
ملخص العروض

هناك شاشات مختلفة بدقة 480 × 320. يسمح هذا بخط 9 × 5 ونص 80 عمودًا. هناك العديد من اللوحات بدقة 320 × 240 ، مع خطوط 9 × 5 وأيضًا خط صغير جدًا 7 × 3 للسماح بنص 80 عمودًا. توجد أيضًا لوحات أصغر بحجم 160 × 120 و 128 × 64 بكسل. يتم أيضًا عرض نصوص بحجم 20 × 4 و 16 × 2 ، وأخيراً لوحة عرض بحجم 12 × 2 مكونة من أربعة عشر مقطعًا على شكل انفجار نجمي.

تستخدم بعض شاشات العرض I2C ، والبعض الآخر SPI وللشاشات الأكبر ، ناقل بيانات 16 بت لسرعات تحديث أسرع.

تستخدم شاشات العرض الأصغر Arduino Uno. تحتاج اللوحات الأكبر حجمًا إلى ذاكرة أكبر ، لذا استخدم Mega. تستخدم لوحة عرض starburst نانو.

في هذه المرحلة ، قد أذكر أن الصور لا تنصف العديد من العروض. تتميز شاشة oled البيضاء الصغيرة بالوضوح الشديد والسطوع مما يجعل من الصعب على الكاميرا التركيز ، كما أن شاشة العرض led starburst تبدو أكثر وضوحًا في الحياة الواقعية.

الخطوة 2: الأجهزة

المعدات
المعدات

تم تصميم PCB للعمل مع أكبر عدد ممكن من الشاشات. من السهل التغيير بين Mega و Uno باستخدام أربعة وصلات عبور. توجد مقاومات لتقسيم الجهد لشاشات العرض التي تعمل بجهد 3 فولت. يتم إحضار دبابيس I2C في مجموعة بحيث يمكن توصيل شاشات العرض مباشرة. تعمل المحطة عند 9600 باود ، وعلى الرغم من إمكانية زيادتها ، فإن العديد من الشاشات الأكبر حجمًا لن يتم إعادة رسمها بشكل أسرع من ذلك بكثير. يتم توصيل لوحة مفاتيح PS2 بمقبس DIN6. ستعمل لوحات مفاتيح USB أيضًا مع قابس محول رخيص. يمكنك إجراء اختبار استرجاع بسيط عن طريق ضم الدبوس 2 و 3 على D9 ثم تظهر الأحرف المكتوبة على لوحة المفاتيح على الشاشة.

في بعض الحالات ، لا تكون هناك حاجة إلى PCB ومن الممكن الحصول على أشياء تعمل مع وحدات مسبقة الصنع متوفرة على موقع ebay ، مثل محولات PS2 ولوحات محول RS232 وشاشات العرض التي يتم توصيلها مباشرة بألواح اردوينو.

هناك أيضًا لوحة منفصلة لشاشة عرض النجوم النجمية - انظر لاحقًا في هذا Instructable.

الخطوة الثالثة: البرمجيات

يوجد أدناه ملف يسمى Package.txt هذا في الواقع ملف.zip لذا قم بتنزيله وإعادة تسميته (لا تسمح Instructables بملفات zip). تم تضمين رسم / برنامج Arduino وهو برنامج واحد تستخدمه جميع شاشات العرض. هناك أيضًا جميع ملفات.zip لكل من شاشات العرض.

في بداية البرنامج سلسلة من العبارات #define. أزل التعليق الذي يتوافق مع العرض. استخدم Tools / Board لتحديد Uno أو Mega أو Nano. تغيير اللوحات بسيط مثل تغيير سطر واحد في الكود.

أحد التحديات التي تواجه العمل مع العديد من شاشات العرض هو أنهم جميعًا يحتاجون إلى برامج تشغيل خاصة بهم. يتم تضمين كل هذه في الحزمة. اشتمل الاختبار على أخذ الحزمة وإعادة تثبيتها على جهاز جديد تمامًا من نقطة الصفر. يمكنك أيضًا الحصول على الكود المصدري من Github و Adafruit و LCDWiki. هناك بضع حالات لا تعمل فيها الإصدارات الأحدث ، لذا يتم تضمين جميع إصدارات العمل في ملف zip. من حين لآخر ، كانت هناك حالات حيث أوقف أحد السائقين سائقًا آخر عن العمل حيث استخدموا نفس اسم الملف ولكن إصدارات مختلفة. يوجد وصف في التعليقات أعلى البرنامج يوضح كيفية تثبيت كل برنامج تشغيل. يتم تثبيت معظمها من Arduino IDE مع Sketch / Include Library / Add ZIP library وهذا يأخذ ملف zip ويضعه في c: / users / computername / mydocuments / arduino / libraries.

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

نظرًا لأن جميع شاشات العرض تستخدم نفس مخطط Arduino ، فإن تغيير شاشات العرض هو مجرد مسألة إلغاء تعليق أحد الأسطر أدناه:

// شاشات مختلفة ، اترك واحدًا من التالي غير المعلق # حدد DISPLAY_480X320_LCDWIKI_ILI9486 // 3.5 "، 480x320 ، نص 80x32 ، mega ، 16 بت ، مقابس في mega 36 pin (و 2 دبابيس طاقة). https://www.lcdwiki.com /3.5 inch_Arduino_Display-Mega2560. أبطأ من بعض الخيارات أدناه ولكن خط أكثر قابلية للقراءة وشاشة أكبر ، تمهيد 5 ثوانٍ // # حدد DISPLAY_480X320_MCUFRIEND_ILI9486 // 3.5 "، 480x320 ، نص 80x32 ، mega ، 5x9 الخط ، فقط للميجا لكن يستخدم فقط دبابيس uno ، الطاقة ، D0-D14 ، A0-A5 ، خط أجمل من وحدة 40 pin ssd1289 ولكن أبطأ كثيرًا https://www.arduinolibraries.info/libraries/mcufriend_kbv https://github.com/adafruit/Adafruit -GFX-Library // # عرّف DISPLAY_320X240_MCUFRIEND_ILI9341 // 2.4 "، 320x240 ، نص 53x24 ، mega // # عرّف DISPLAY_320X240_SSD1289_40COL // 3.5" ، 320x240 ، نص 40x20 ، mega ، مكتبة UTFT (لا توجد خطوط أصغر من 8x12). سريع // # عرّف DISPLAY_320X240_SSD1289_53COL // 3.5 "، 320x240 ، نص 53x24 ، ميغا ، خط 9x5 ، يمكنه تحرير الخط. Fast // # عرّف DISPLAY_320X240_SSD1289_80COL // 3.5" ، 320x240 ، نص 80x30 ، ميغا ، خط صغير 7x3 ، يمكنه تعديل الخط ، برنامج تشغيل أسرع من الاثنين أعلاه ، الأسرع من كل ذلك مثل محرك الأقراص المباشر 16 بت على الشاشة بدلاً من spi / i2c // # حدد DISPLAY_160X128_ST7735 // 1.8 "، 160x128 ، نص 26x12 ، uno (ILI9341) SPI 128x160 // # حدد DISPLAY_128X64_OLED_WHITE // 0.96 "، 128x64 ، نص 21x6 ، ميجا ، I2C ، أبيض على أسود (مكتبة tft لهذه اللوحة بالإضافة إلى كل الكود بالإضافة إلى لوحة المفاتيح نفد تخزين البرنامج ، على الرغم من أن احتياجات ذاكرة الوصول العشوائي صغيرة جدًا ، لذلك فقط يعمل على ميجا) // # حدد DISPLAY_20X4 // نص 20x4 ، uno ، LCD مع I2C ، نص LCD https://www.arduino.cc/en/Reference/L LiquidCrystal // # حدد DISPLAY_16X2 // text 16x2 ، uno ، يتم توصيله بـ uno ، ويستخدم المسامير من 4 إلى 10 // # حدد DISPLAY_STARBURST // نص 12x2 ، nano ، starburst display with nano controller // # حدد DISPLAY_320X240_QVGA_SPI_ILI9341 / / 2.2 "، 320x240، text 11x8، uno، large font، uno، 3v signal، 9 pin SPI display راجع تعليمات Bodmer's Instructables - uno https://www.instructables.com/id/Arduino-TFT-display-and-font- مكتبة / احصل على الرمز المضغوط في الأسفل ووضع gfx و 9341 يدويًا في مجلد مكتبة اردوينو

الخطوة 4: معيار ANSI

معيار ANSI
معيار ANSI

يسمح ANSI بأوامر بسيطة لمسح الشاشة وتحريك المؤشر وتغيير الألوان. يوجد في عدد قليل من الصور عرض توضيحي يوضح جميع ألوان المقدمة والخلفية. هذه الألوان هي الأحمر والأصفر والأخضر والأزرق والسماوي والأرجواني والأسود والأبيض والرمادي الداكن والرمادي الفاتح ويمكن أن تكون الألوان ساطعة أو خافتة لذا يوجد 16 لونًا في المقدمة و 16 لونًا للخلفية.

من الممكن تمامًا التفكير في إضافة وضع "رسومات" حيث يمكنك رسم صور بدقة أعلى بكثير على مستوى البكسل وبألوان 256 أو أكثر. تتمثل القيود الرئيسية في الذاكرة الداخلية لـ Arduino والوقت الذي يستغرقه إرسال صورة أسفل ارتباط تسلسلي على 9600 باود.

يحتاج الكود إلى بايت واحد لتخزين الحرف وبايت واحد لتخزين الألوان (3 بت للمقدمة ، و 3 للخلفية ، وواحد للسطوع / الخافت وواحد للخط العريض). لذا فإن الشاشة مقاس 80 × 30 ستحتاج إلى 2400 × 2 = 4800 بايت ، والتي ستلائم Mega وليس Uno.

الخطوة 5: يعرض

يعرض
يعرض
يعرض
يعرض
يعرض
يعرض

أعلاه صور لكل عرض فردي. هناك صور من الأمام والخلف لكل شاشة وهي تمثل العديد من العلامات التجارية المتوفرة على موقع ئي باي أو ما شابه. بعضها عبارة عن I2C ، وبعضها متوازي ، وبعضها يحتوي على خطوط أكبر ، ويمكن للبعض الآخر عرض 80 عمودًا كاملاً مناسبًا لبرنامج Wordstar وبرامج معالجة النصوص القديمة الأخرى. يوجد المزيد من التفاصيل في نص كود اردوينو.

الخطوة 6: التخطيطي

يوجد أدناه ملفان. يتم تسميتها باسم.txt لأن Instructables لا تتعامل مع ملفات.zip. قم بتنزيلها وإعادة تسميتها باسم zip.

يوجد التخطيط التخطيطي وتخطيط اللوحة كملفات pdf. هناك أيضًا حزمة لـ Seeed PCB. هذه هي أنواع الجربير وإذا ذهبت إلى Seeed وقمت بتحميل هذا ، فيجب أن يعرض الجربير ويمكنك بعد ذلك الحصول على مركبات ثنائي الفينيل متعدد الكلور. اللوحة المكونة من 14 قطعة كبيرة وتكلف أكثر قليلاً ، لكن اللوحة الأصغر تناسب تنسيق Seeed المفضل 10x10 سم ، لذا فهي معقولة جدًا لـ 5 أو 10 لوحات - في الواقع ، تكاليف الشحن أكثر من اللوحات.

من الممكن تمامًا استخدام العديد من الشاشات دون الحاجة إلى PCB. هناك وحدات مقبس PS2 ، ودروع / وحدات RS232 كلها متوفرة على موقع ebay أو ما شابه. يمكن لبعض شاشات العرض مثل شاشات I2C استخدام عدد قليل من أسلاك التوصيل. يأتي بعضها مثل شاشات SSD1289 مع لوحات مهايئ ويمكن توصيلها مباشرة بميغا.

الخطوة 7: عرض Starburst

عرض ستاربرست
عرض ستاربرست

شاشة starburst عبارة عن لوحة أكبر وتستخدم شريحة Nano وعددًا من شرائح 74xx لإجراء مضاعفة الإرسال. كان هناك الكثير من التجارب لتحديد عدد الشاشات التي يمكنك تعددها قبل أن تصبح خافتة جدًا أو يصبح الوميض ملحوظًا للغاية. جاءت الشاشات من Futurlec https://www.futurlec.com/LEDDisp.shtml يمكن لشاشات 14 مقطعًا أيضًا عمل أحرف صغيرة ويمكن تعديلها في الكود إذا لزم الأمر. أعد تسمية هذه الملفات من.txt إلى.zip

الخطوة 8: إضافة رمز لشاشات أخرى

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

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

التالي هو الذهاب إلى السطر 544 وإضافة الرمز لعرض حرف. في بعض الحالات يكون هذا مجرد سطر واحد ، على سبيل المثال

my_lcd. Draw_Char (xPixel ، yPixel ، c ، tftForecolor ، tftBackcolor ، 1 ، 0) ؛ // x، y، char، forward، back، size، mode

التالي هو الذهاب إلى السطر 664 وإضافة الكود لرسم بكسل. مرة أخرى ، أحيانًا يكون هذا سطرًا واحدًا فقط ، على سبيل المثال:

tft.drawPixel (xPixel ، yPixel ، tftForecolor) ؛

أخيرًا انتقل إلى السطر 727 وأضف الكود لرسم خط عمودي للمؤشر ، على سبيل المثال

tft.drawFastVLine (xPixel ، yPixel ، fontHeight ، tftForecolor) ؛

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

الخطوة 9: عرض Wordstar

تم ذلك باستخدام جهاز كمبيوتر CP / M ، وهناك العديد من الخيارات المتاحة هنا. كنت بحاجة إلى شيء سريع الإعداد ، لذلك استخدمت محاكاة على ESP32 (Google ESP32 CP / M). هناك العديد من أجهزة الكمبيوتر القديمة الأخرى المتاحة ، على سبيل المثال ، محاكاة FPGA من Grant Searle ، و RC2014 لأولئك الذين يفضلون استخدام Z80 حقيقي. تميل العديد من أجهزة الكمبيوتر إلى استخدام برنامج طرفي على جهاز كمبيوتر كشاشة عرض ، على سبيل المثال Teraterm. تضمن الكثير من تصحيح أخطاء مشروع ANSI هذا تشغيل برنامج طرفي وبرنامج ANSI بالتوازي والتأكد من أن الشاشات تبدو متطابقة.

الخطوة 10: مزيد من الأفكار

كلما زاد حجم شاشات العرض ، فإنها تصبح أبطأ وأبطأ. تتضمن إعادة رسم شخصية إعادة رسم كل بكسل في تلك الشخصية حيث يجب رسم لون الخلفية أيضًا ، لذلك كل شيء يتعلق بمدى السرعة التي يمكنك بها رسم بكسل. هناك بعض التعديلات ، على سبيل المثال إذا لم تتمكن الشاشة من مواكبة البيانات الواردة ، فقم فقط بتخزين النص في مخزن الشاشة ثم قم بإعادة رسم ملء الشاشة عند عدم ورود المزيد من النص. العديد من شاشات العرض التي تراها من أجل يُظهر البيع صورة جميلة على الشاشة ، ولكن ما قد لا يظهرونه هو المدة التي استغرقها عرض تلك الصورة ، وفي بعض الحالات يمكن أن تكون 5 ثوانٍ أو أكثر. يعتبر I2C و SPI رائعين للشاشات الأصغر ولكن أي شيء يزيد عن 50 عمودًا يحتاج إلى ناقل بيانات 8 أو 16 بت.

يعد Wordstar صعب الاستخدام قليلاً في 9600 باود و 19200 أكثر قابلية للاستخدام لتمرير النص ، لكن شاشات العرض لا يمكنها مواكبة ذلك.

أسرع عرض استخدمته كان على شريحة Propeller مع شريحتين من ذاكرة الوصول العشوائي 8 بت بسعة 512 كيلو بايت ، لإنشاء ناقل بيانات متوازي 16 بت. تم تحميل كل خط مسبقًا في ذاكرة الوصول العشوائي. تم استخدام سلسلة من رقائق عداد 74xx لتسجيل البيانات في الشاشة. هذا يعني أنه لم تكن هناك معالجة داخلية داخل وحدة المعالجة المركزية (CPU) لجلب البيانات وإخراجها ، وكان معدل التحديث بنفس سرعة رقاقة Propeller التي يمكن أن تقوم بتبديل دبوس. والمثير للدهشة أن الشاشات كانت قادرة على مواكبة ذلك ، حتى عند 20 ميجا هرتز ، ولذا كان من الممكن إجراء تحديث ملء الشاشة في 30 مللي ثانية فقط. هذا النوع من المعدل سريع بما يكفي للتمرير بسلاسة ، كما ترى على الهواتف المحمولة.

كانت شريحة Propeller متطورة منذ أكثر من عشر سنوات ، وهناك المزيد من الخيارات الآن بما في ذلك ESP8266 و ESP32 التي تحتوي على كميات كبيرة من ذاكرة الوصول العشوائي الداخلية. ومع ذلك ، لا تزال هذه الرقائق لا تحتوي على أعداد كبيرة من المسامير ، لذلك لا يزال هناك ميزة في استخدام طريقة skool القديمة لشريحة ذاكرة الوصول العشوائي الخارجية التي تم تسجيلها على الشاشة.

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

أتمنى أن تجد هذا المشروع مفيدًا.

جيمس موكسهام

أديلايد ، أستراليا

موصى به: