
في أحد الأيام ، عند النظر إلى الإعلانات على Avito ، صادفت شيئًا مثيرًا للاهتمام - لوحة وميض أو شاشة عرض منقطة باللغة الإنجليزية. تستخدم شاشات العرض هذه لعرض المعلومات في المطارات أو محطات القطار أو الملاعب أو مؤشرات الطريق على وسائل النقل العام.
اعتقدت أنه مع هذا النوع من العرض ، يمكنك القيام بالكثير من الأشياء المثيرة للاهتمام.
حيث تم تثبيت شاشتي ، يمكن للمرء أن يخمن فقط من بقية النقش ("المتجر"). ربما كان موقف معلومات في محطة القطار أو محطة OT - اكتب أفكارك في التعليقات.
كانت الشاشة عبارة عن مصفوفة من الخلايا بقياس 7 صفوف في 30 عمودًا. تحتوي كل خلية على لوحة دائرية بلونين وصمام أخضر. كان للوحة عدد معين من العناصر المنطقية لسلسلة 74HCxxx وغيرها من الدوائر الصغيرة ، والتي ، كما اتضح لاحقًا ، كانت كافية للتحكم في الشاشة من خلال واجهة تسلسلية بسيطة.
بعد الشراء ، قضيت بعض الوقت في البحث عن معلومات حول كيفية العمل مع هذه الشاشات ، نظرًا لأنني لم أمتلك سوى الجزء الذي يعرض الصورة مباشرةً ، وعادة ما يكون هناك أيضًا جهاز تحكم يمكنه التحكم في لوحة المفاتيح أو من خلال منفذ UART مع برنامج كمبيوتر شخصي .
لم يكن من الممكن تحديد انتماء الشركة المصنعة من خلال النقوش على السبورة ، لكن ربما لم أحاول جاهدين ، لأنه كان أكثر إثارة للاهتمام معرفة كيفية عمله ، ورسم رسم تخطيطي للجهاز وتطوير وحدة نمطية للتفاعل مع متحكم نموذجي.
لكن أولاً ، كان عليك أن تضع لنفسك هدفًا محددًا ، يمكنك من خلاله تطبيق هذه الشاشة في الحياة اليومية. كانت الفكرة الأولى عبارة عن ساعة تعرض معلومات موسعة حول الطقس في الشارع والمنزل ، والوقت ، والتاريخ ، والرسائل المحفزة القصيرة ؛) ، إلخ. ثم اعتقدت أنه إذا قمت بتدوير الشاشة 90
درجة ، فإنها تبدو كزجاج لـ Tetris ، لذلك تقرر جعل تتريس ، وبعد ذلك سوف نرى.
كيف تعمل الشاشات الكهروميكانيكية؟
بسيط للغاية: تتكون كل خلية شاشة (خانة اختيار) من قرص - مغناطيس دائم مسطح مطلي باللون الأصفر من جانب والأسود من جهة أخرى ، ومغناطيس كهربائي يقع أسفل القرص. عند تطبيق دفعة كهربائية على ملف المغناطيس الكهربائي ، تنقلب العلم فوق ، والأهم من ذلك ، ثابتة في وضع واحد. عند تغيير اتجاه التيار وتطبيق النبض المتكرر ، يتم تدوير العلم وتثبيته على الجانب الآخر. للتبديل ، يكفي نبض مع مدة 1 مللي ثانية والجهد من 12 فولت.
مقاومة لفائف المغناطيس الكهربائي حوالي 18 أوم.
للراحة ، يتم دمج الملفات من خلال اثنين من الثنائيات في مصفوفة من الصفوف والأعمدة. للتبديل إلى أي مكان على الشاشة ، تحتاج إلى تنشيط المصدر الحالي (المصدر الحالي) على الخط والمغسلة الحالية (مصدر التيار) في الصف عند التقاطع الذي يوجد به ملف مغناطيسي كهربائي أو ، على العكس ، للتبديل إلى الجانب الآخر. في الواقع ، هذا يشبه التحكم في محركات التيار المستمر من خلال جسر H ، فقط في الوضع النبضي.
مع كيفية إدارة الأعلام من الناحية النظرية ، اكتشفنا ذلك. حان الوقت للانتقال إلى التنفيذ العملي.
شاشة الهندسة العكسية
بعد أن أصبحت مسلحًا بمقياس متعدد ، و Kicad ، بدأت في إعادة رسم تخطيط الشاشة ، بدءًا من التحكم في المصابيح. اتضح أن هذا الجزء مكتفٍ ذاتيًا ، وعند تطبيق إشارات الطاقة والتحكم ، يمكنك إضاءة أي مؤشر ضوئي في أي صف من الشاشة من خلال واجهة بسيطة إلى حد ما. يمكن أن يكون هناك خط واحد نشط فقط في أي وقت ، لذلك يجب أن يكون إخراج الصورة ديناميكيًا.
تتكون دائرة الوحدة النمطية من مصفوفة من المصابيح التي تتصل الكاثودات الخاصة بها ببرامج Toshiba TB62705 LED. من وجهة نظر منطق التحكم ، فهذه هي سجلات إزاحة 8 بت عادية متصلة في سلسلة. يتم توصيل الأنودات من المصابيح في كل صف وتوصيلها إلى المصارف من الترانزستورات MOSFET. يتم توصيل المصادر بإخراج محول DC-DC ، ويتم توصيل أبواب جميع الترانزستورات السبعة بمخرجات وحدة فك الترميز 74HC238 3: 8.
وبالتالي ، للتحكم في LEDs ، تحتاج إلى تحديد خط الشاشة من خلال إرسال رقمه إلى إدخال وحدة فك الترميز ، ثم تحميل 32 بت من البيانات من خلال مدخلات SERIAL و CLOCK لبرنامج تشغيل LED الأول. ثم ملف السجل. "1" إلى إدخال LATCH ، ومصابيح LED المقابلة تضيء أثناء الضغط على LATCH إلى "1".
وميض المصابيح ، استخدمت لوحة
Teensy 3.5 المتوافقة مع اردوينو. مثال على كود التحكم LED يمكن العثور عليه على
GitHubالجزء الثاني من المخطط ، المسؤول عن إدارة المخالفين ، أكثر تعقيدًا بعض الشيء.
يتكون جزء الطاقة في التحكم بالسماعات من زوج من دارات مصدر / مصدر التيار ، والتي يتم توصيل مخرجاتها خلال الثنائيات الواقية إلى المخرج الأول لكل ملف في العمود. تم استخدام شريحة Toshiba TBD62783 كمصدر حالي ، وتم استخدام ULN2803 المفضلة لدى TI كتصريف. يتم دمج الاستنتاجات الثانية للملفات في صفوف وتوصيلها بالموصل الموجود على لوحة الشاشة. على ما يبدو ، تم ذلك من أجل إخراج إدارة السلسلة في وحدة نمطية منفصلة ، حيث يمكن دمج عدة شاشات في شاشة واحدة طويلة. ومع ذلك ، ليس من الواضح سبب قيام المطورين بوضع جميع المكونات الضرورية على كل لوحة شاشة للتحكم في المصابيح.
يتكون المنطق من ثمانية أجهزة فك ترميز من نوع 3: 8 74HC238 ، يتم توصيل مدخلات التحكم فيها بشكل متواز. يتم توصيل مخرجات وحدات فك الترميز الزوجية بمدخلات التحكم الخاصة بالمصادر الحالية ، ويتم توصيل المخرجات الفردية بمدخلات المصارف. يتم توصيل المدخلات المسموح بها من 74HC238 إلى وحدة فك ترميز أخرى 3: 8 ، مما يلغي تمامًا الوضع عندما تكون الدوائر الحالية والمصدر الحالي نشطة في نفس الوقت. يتم توصيل إدخال تمكين وحدة فك الترميز الشائعة بشريحة المقارنة ولا يتم تنشيطه إلا عندما تتطابق القيم في مدخلاتها. هذا الجزء من المخطط مسؤول على الأرجح عن دمج عدة وحدات في شاشة واحدة كبيرة.
وبالتالي ، لتحديد عمود معين ، تحتاج إلى إرسال رقمه (0-7) في المجموعة إلى ناقل COL_A0-A2 ، ثم تنشيط مخرجات 74HC238 المحددة عن طريق توفير رقمه إلى المدخلات COL_EN_A0-A2 من وحدة فك الترميز الشائعة. علاوة على ذلك ، يمكن استخدام المدخلات A0 كمؤشر مصدر / مصدر ، والبتان المتبقيتان - كرقم مجموعة (0-3).
يتم توجيه منطق التحكم وإدخالات الطاقة إلى موصلين IDC من 50 سنًا. ويرد الأسلاك واحد منهم في الرسم البياني.

بعد تحليل الدائرة ، أدركت أن وميض الأعلام دون مساعدة من Kicad ومكواة لحام لم تنجح ، وشرعت في إنشاء وحدة نمطية لتحديد الأوتار والاقتران.
وحدة محول وإدارة سلسلة
لتبسيط التصميم ، قررت تكرار تنفيذ اختيار العمود ووضعه على الدائرة TBD62783 و ULN2803 المقترنين بوحدات فك ترميز 74HC238 لتحديد الخط المرغوب ، بالإضافة إلى رقاقة منطقية 74HC00 (4xNAND) لفصل أوضاع SET و RESET و PULSE بشكل واضح لفصل تزويد التيار الكهربائي بشكل مباشر إلى المغناطيس الكهربائي المحدد. لحفظ استنتاجات المتحكم الدقيق ، تقرر توصيل إشارات اختيار الصفوف والأعمدة بمخرجات سجل التحول الواحد.
نتيجة لذلك ، لإدارة العلم الذي تحتاجه:
- إرسال وإصلاح إحداثياتها في التعليمات البرمجية التسلسلية عبر SERIAL / CLOCK / LATCH
- حدد حالة SET / RESET المطلوبة
- تفعيل لفترة وجيزة نبض
فك تشفير بايت الإحداثيات:

تم تجميع الإصدار الأول من الدائرة بدون سجل إزاحة على لوح لحام بدون لحام. بعد التحقق والإثارة الشديدة في أن كل شيء سيحترق ، قمت بتشغيل الطاقة ونبض النبض يدويًا بضغطة زر واحدة. كان التيار الذي يتدفق عبر ملف المغنطيس الكهربي في حال اقتصر على مصدر طاقة المختبر. تم تبديل مربع الاختيار بنجاح ، وعند تغيير مستوى SET / RESET ، عاد مرة أخرى. "هذا هو النجاح" ، فكرت ، وبدأت في نقل الدائرة إلى لوح عادي ، باستخدام بلدي MGTF-0.07 المفضلة وسلك كينار أحادي النواة لحافلات الطاقة / الأرض.
للاتصال بالشاشة من خلال الموصل المكون من 50 دبوسًا على اللوحة ، كان من الضروري استخدام 22 جهة اتصال + طاقة ، لذلك لم أكن أرغب في الفوضى باستخدام أسلاك فردية. تم اقتراح استخدام كبل مسطح لـ IDE أو بالأحرى لأجهزة SCSI القديمة.
لقد أوصلني القليل من googling إلى أداة خاصة لتجعيد موصلات IDC ، والتي تقرر شراءها على الفور:
Crimper ProsKit 6PK-214 لوصلات IDC . بعد أن تدربت على الموصلات الصغيرة ، في المرة الأولى التي صنعت فيها نفسي حلقة قطرها 20 سنتيمتراً مع وصلات IDC-50F في النهاية.
نكتب برنامج التحكم
كما ذكرت أعلاه ، تم استخدام TEENSY 3.5 كجهاز التحكم ، بيئة التطوير التي هي Arduino IDE ، لذلك تمت كتابة البرنامج بلغة اردوينو C.
وتتمثل المهمة الرئيسية لتغيير حالة نقطة الشاشةvoid update_dot(bool state, byte row, byte col) { byte cmd=0;
لقد أجريت عدة تجارب لتحديد الجهد الأمثل لمصدر الطاقة ووقت تغذية النبض. اتضح أن 12V و 1ms كافية لتثبيت ثابت للعلم في أحد المواقع.
بعد امتلاء الاختبار بلون واحد ، لاحظت أن "بكسل" واحد مكسور ولا ينقلب. وأظهر قياس مقاومة لفائف مع المتر المتعدد عدة ميغا أوم ، وكشف فحص مفصل أن استنتاج واحد خرج. كان من حسن الحظ أن "بكسل" غير العامل كان من حافة الشاشة ، لذلك تمكنت من لحام الأسلاك. تم حل المشكلة.
صورة للخلية التي تم إصلاحها إليك ما حدث بعد التجارب الأولى مع التعبيرات وإخراج النص:
تتريس
كانت كتابة تطبيق Tetris في لغة C أسهل مما كنت أعتقد. بفضل Javier López وبرنامجه التعليمي
Tetris في C ++ للمبتدئين . أعدت كتابة الوظائف الرئيسية كما فهمتها ، وقمت بتكييف الكود لميزات شاشتي (عدم وجود حدود ودقة منخفضة). لن أتحمل تفاصيل العمل ، يصف الدليل كل شيء بالتفصيل.
للتحكم ، تم استخدام وحدة ذراع تحكم تمثيلية ، لذلك اضطررت إلى كتابة دالة لتحويل القيم عند إخراج ADC إلى ثوابت رقمية. كان هناك صعوبة في ، من ناحية ، لمنع ايجابيات كاذبة ، ومن ناحية أخرى ، لضمان اللعب الصحيح. إذا لم يتغير وضع ذراع التحكم بعد القراءة التالية للحالة ، تتم إضافة تأخير.
بعد اللعب لمدة 10 دقائق ، أدركت أنني شعرت بالملل ، لأن سرعة سقوط الأشكال لا تتغير ولا يتم عرض النتيجة على الإطلاق. لا يوجد عنصر المنافسة.
كان عرض حساب باستخدام الأعلام قبيحًا بسبب قلة المساحة على الشاشة ، لذلك تقرر استخدام مصابيح LED لإنشاء طائرة بديلة لعرض المعلومات. لقد وجدت على الإنترنت تمثيلًا بسيطًا للخط 3 × 5 للأرقام من 0 إلى 9 وكتبت وظيفة لعرض النتيجة بعدد الأسطر التي تمت إزالتها. لمزيد من الجمال ، قررت إضافة وميض الخط المملوء عندما تختفي.
دفعت الطبيعة الديناميكية للعرض إلى فكرة استدعاء وظيفة التحديث لجزء LED من الشاشة في مقاطعة مؤقت. يحدد تردد الانقطاع ووقت تعليق سلسلة LED في الحالة النشطة سطوع التوهج.
أنا أيضا جعلت ذلك بحيث تزداد سرعة هبوط أرقام tetramino كما يتم مسح الخطوط. في الإصدار الأول ، تم نقل الأرقام سطر واحد لأسفل كل 200 مللي ثانية. إذا كنت تأخذ من هذا الرقم 40 مللي ثانية كل 10 خطوط محذوفة ، فإن سرعة اللعبة تسارع إلى حد كبير ، وهناك اهتمام. سجل بلدي هو 38 خطوط!
هذه الحالة النادرة عندما الفيديو الرأسي يناسب تماما.
يتم نشر رمز المشروع وتخطيط الشاشة ووحدة الواجهة على جيثب.
إذا كانت لديك أية أفكار عما يمكنك فعله بمثل هذه الشاشة ، فيرجى كتابة التعليقات.
روابط مفيدة:
1.
Hackaday: Flip-Dot Display & DIY Controller .
2.
تتريس تعليمي في منصة C ++ مستقلة تركز في منطق اللعبة للمبتدئين .
3.
مستودع المشروع على جيثب .