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

استخدام Dot Matrix LED مع Arduino و Shift Register: 5 خطوات
استخدام Dot Matrix LED مع Arduino و Shift Register: 5 خطوات

فيديو: استخدام Dot Matrix LED مع Arduino و Shift Register: 5 خطوات

فيديو: استخدام Dot Matrix LED مع Arduino و Shift Register: 5 خطوات
فيديو: CS50 2013 - Week 9 2024, شهر نوفمبر
Anonim
استخدام Dot Matrix LED مع Arduino و Shift Register
استخدام Dot Matrix LED مع Arduino و Shift Register
استخدام Dot Matrix LED مع Arduino و Shift Register
استخدام Dot Matrix LED مع Arduino و Shift Register
استخدام Dot Matrix LED مع Arduino و Shift Register
استخدام Dot Matrix LED مع Arduino و Shift Register

يعد مؤشر LED المصفوف النقطي DLO7135 من سيمنز قطعة رائعة من الإلكترونيات الضوئية. وصفت بأنها شاشة 5x7 Dot Matrix Intelligent Display (r) مع ذاكرة / وحدة فك ترميز / برنامج تشغيل. إلى جانب هذه الذاكرة ، يحتوي على شاشة ASCII مكونة من 96 حرفًا مع أحرف كبيرة وصغيرة ، ومولد شخصيات مدمج ومضاعف ، وأربعة مستويات من شدة الضوء ، وكلها تعمل على 5 فولت. ، وبسعر 16 دولارًا أمريكيًا للبوب ، يجب أن يكون بالتأكيد. أثناء قضاء نصف اليوم في متجر الإلكترونيات المحلي المفضل لدي ، وجدت صندوقًا مليئًا بهذه الأشياء مقابل 1.50 دولارًا للقطعة. غادرت المتجر مع العديد. سيوضح لك هذا التوجيه كيفية الاتصال بمصفوفة نقطية LED وشخصيات العرض باستخدام Arduino المستند إلى AVR. إذا كنت قد قرأت أيًا من أدلةي السابقة ، فقد تحصل على فكرة أنني غالبًا ما أؤيد الحل الأكثر بخلًا ، ولن تكون مخطئًا ، حتى لو لم أحقق الهدف من وقت لآخر. لذلك ، سأذهب أيضًا إلى خطوة أخرى في هذا التوجيه وأوضح لك كيف يمكنك تقليل عدد منافذ الإدخال / الإخراج اللازمة لتشغيل مصابيح LED ذات المصفوفة النقطية الكبيرة هذه.

الخطوة 1: احصل على السلع …

احصل على البضائع …
احصل على البضائع …

لهذا المشروع الصغير القصير ، سوف تحتاج إلى:

  • متحكم قائم على AVR مثل Arduino أو أي من أنواعه. من المحتمل أن يتم تكييف هذه التعليمات مع MCU الذي تختاره.
  • DLO7135 نقطية LED أو غيرها في نفس العائلة
  • سجل إزاحة 8 بت مثل 74LS164 أو 74C299 أو 74HC594
  • لوح التجارب
  • سلك التوصيل ، قواطع الأسلاك ، إلخ.

ليست هناك حاجة إلى مكواة لحام ، على الرغم من أنني استخدم واحدة لاحقًا ؛ يمكنك الحصول عليها بدونها.

الخطوة 2: قم بالتوصيل المباشر بشاشة LED

قم بالتوصيل المباشر بشاشة LED
قم بالتوصيل المباشر بشاشة LED
قم بالتوصيل المباشر بشاشة LED
قم بالتوصيل المباشر بشاشة LED
قم بالتوصيل المباشر بشاشة LED
قم بالتوصيل المباشر بشاشة LED

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

الجانب الأيسر

موجب وسالب بدءًا من أعلى اليسار ، قم بتوصيل Vcc بـ 5V. ربما تكون فكرة جيدة ألا يتم تشغيل اللوحة الخاصة بك حتى تكتمل الجانب الأيسر بالكامل ؛ يمكن أن يكون مؤشر LED ساطعًا إذا كنت تحاول رؤية ثقوب صغيرة لكزة في الأسلاك. قم بتوصيل الجزء السفلي الأيسر من GND بالأرض. اختبار المصباح ، وتمكين الشريحة وكتابة الثانية والثالثة من أعلى اليسار هما اختبار المصباح وتمكين الشريحة. كلاهما منطق سلبي ، مما يعني أنه يتم تمكينهما عندما يكونان عند قيمة منطقية 0 بدلاً من 1. يجب أن تحتوي صورتي أدناه على أشرطة ، لكنني لم أقم بتوضيح ذلك لأي منهما. يضيء طرف LT عند التمكين كل نقطة في المصفوفة النقطية عند سطوع 1/7. إنه اختبار بكسل أكثر ، ولكن الشيء المثير للاهتمام حول LT pin هو أنه لا يستبدل أي شخصية موجودة في الذاكرة ، لذلك إذا كان لديك العديد من هذه العناصر معًا (لديهم مسافة عرض 20 قدمًا) ، يمكن أن تجعلها تبدو كمؤشر. للتأكد من تعطيله ، قم بتوصيله بجهد 5 فولت. تعتبر دبابيس CE و WR أيضًا منطقًا سلبيًا ويجب تمكينها حتى تتم الكتابة إلى هذا الجهاز الذكي. يمكنك إجراء إدارة دقيقة لهذه المسامير باستخدام منافذ الإدخال / الإخراج الاحتياطية على وحدة التحكم الدقيقة الخاصة بك ، لكننا لن ننزعج هنا. فقط قم بتوصيلهم بالأرض للحفاظ على تمكينهم. مستويات السطوع هناك أربعة مستويات سطوع قابلة للبرمجة في عائلة DLO من مصابيح LED:

  • فارغ
  • 1/7 سطوع
  • 1/2 سطوع
  • سطوع كامل

BL1 HIGH و BL0 LOW هو 1/2 سطوع. كلاهما عالي السطوع الكامل. اضبطه على ما تريد. مرة أخرى ، إذا كان لديك منافذ I / O لتجنيبها وكانت مهمة بما فيه الكفاية بالنسبة لك ، فيمكن أيضًا التحكم في هذا بواسطة Arduino الخاص بك. إذا قمت بإحضار الطاقة إلى لوحك ، يجب أن ترى إضاءة LED. العب باستخدام عناصر التحكم في السطوع واختبار المصباح للتعرف عليها ، إذا كنت فضوليًا.

الجانب الأيمن

يتكون الجانب الأيمن بالكامل من منافذ البيانات. يمثل الجزء السفلي الأيمن ، رقم التعريف الشخصي 8 أو D0 على وجه الدقة ، أقل قيمة بت في الحرف المكون من 7 بتات. يمثل الجزء العلوي الأيمن ، الدبوس 14 أو D6 ، البت الأكثر أهمية. يتيح لك هذا معرفة الترتيب الذي تريد تبديل البتات به عند الكتابة إلى مؤشر LED. عندما يكون لديك منافذ إدخال البيانات سلكية ، ابحث عن سبعة منافذ إدخال / إخراج رقمية فارغة على Arduino أو AVR وقم بتوصيلها. ربما تريد أن تتذكر منفذ إخراج البيانات الموجود على AVR الخاص بك والذي ينتقل إلى منفذ إدخال البيانات على LED. أنت الآن جاهز لدفع بعض البيانات إلى هذا LED الذكي. هل ترتجف من الإثارة بعد؟ انا اعرف انني…

الخطوة 3: تحديد شخصية لعرضها

تحديد الحرف المراد عرضه
تحديد الحرف المراد عرضه

مجموعة الأحرف المستخدمة في CMOS LED هذا هو ASCII الخاص بك الذي يبدأ من 0x20 (رقم عشري 32 ؛ مسافة) وينتهي عند 0x7F (رقم عشري 127 ؛ حذف ، على الرغم من تمثيله على مؤشر LED كرسم مؤشر). لذا ، فإن وجود شخصية على شاشة LED لا يستلزم شيئًا أكثر من دفع المنطق 1 أو 0 على دبابيس إخراج البيانات ، متبوعًا عادةً بنبض WR ، لكنني أتخلى عن ذلك في هذا التمرين. تذكرت أي دبابيس تذهب إلى أي منافذ ، أليس كذلك؟ اخترت PD [2..7] و PB0 (دبابيس رقمية من 2 إلى 8 في Arduino-Speak). لا أقترح عادةً استخدام PD [0..1] لأنني أكرسه لاتصالي التسلسلي مرة أخرى إلى مربع FreeBSD ، و Arduino's et al. قم بتعيين هذه المسامير على قناة اتصال FTDI USB الخاصة بهم ، وعلى الرغم من أن الدبابيس 0 و 1 ستعمل إذا لم تقم بتهيئة الاتصال التسلسلي ، إلا أنني لم أتمكن مطلقًا من استخدام هذه المسامير كإدخال / إخراج رقمي عادي. في الواقع ، قضيت يومين في محاولة تصحيح مشكلة عندما حاولت استخدام PD0 و PD1 ووجدت أنهما دائمًا ما يكونان مرتفعين. * تجاهُل * قد يكون من الجيد أن يكون لديك نوع من المدخلات الخارجية ، مثل ربما لوحة مفاتيح ، أو عجلة دفع أو مفتاح إبهام ، أو ربما حتى إدخال من طرف طرفية (ArduinoTerm الخاص بي ليس جاهزًا لوقت الذروة حتى الآن …). الخيار لك. في الوقت الحالي ، سأقوم فقط بتوضيح كيفية الحصول على الكود للحصول على الشخصية التي تريدها على مؤشر LED. يوجد ملف مضغوط للتنزيل بما في ذلك الكود المصدري وملف Makefile وهناك أيضًا فيلم قصير يعرض طباعة LED لمجموعة الأحرف الخاصة به. نأسف على الجودة السيئة للفيديو. يطبع الكود أدناه السلسلة "مرحبًا بك في Instructable!" ثم يتنقل عبر مجموعة الأحرف الكاملة التي يدعمها مؤشر LED.

DDRD = 0xFF ؛ // OutputDDRB = (1 << DDB0) ؛ char msg = "مرحبًا بك في Instructable!"؛ uint8_t i؛ for (؛؛) {for (i = 0؛ i <27؛ i ++) {Print2LED (msg )؛ _delay_ms (150) ؛ } لـ (i = 0x20؛ i <0x80؛ i ++) {Print2LED (i) ؛ _delay_ms (150) ؛ } Print2LED (& apos * & apos)؛}يتم الاهتمام بإخراج المنفذ في وظيفة Print2Led ()

voidPrint2LED (uint8_t i) {PORTD = (i << 2) ؛ إذا (i & 0b01000000) PORTB = (1 <

يتم تضمين الرمز و Makefile في ملف مضغوط أدناه.

الخطوة 4: الحفاظ على منافذ الإدخال / الإخراج باستخدام سجل التحول

الحفاظ على منافذ الإدخال / الإخراج مع سجل التحول
الحفاظ على منافذ الإدخال / الإخراج مع سجل التحول
الحفاظ على منافذ الإدخال / الإخراج مع سجل التحول
الحفاظ على منافذ الإدخال / الإخراج مع سجل التحول
الحفاظ على منافذ الإدخال / الإخراج مع سجل التحول
الحفاظ على منافذ الإدخال / الإخراج مع سجل التحول

حتى الآن يمكن لوحدة التحكم الدقيقة الخاصة بنا إرسال البيانات إلى مصفوفة نقطية LED ولكنها تستخدم ثمانية منافذ إدخال / إخراج. يستثني ذلك استخدام ATtiny في حزمة DIP ذات 8 أسنان ، وحتى مع Arduino الأحدث الذي يحتوي على ATmega328p الذي يحتوي على الكثير من منافذ الإدخال / الإخراج لمؤشر LED واحد. ومع ذلك ، يمكننا التغلب على هذا باستخدام IC يسمى سجل التحول. لحظة "لتغيير" التروس … يمكن فهم سجل التحول بشكل أفضل من خلال التفكير في الكلمتين اللتين تشكلان اسمه: "التحول" و "التسجيل". تشير كلمة shift إلى كيفية تحرك البيانات عبر السجل. هنا (كما هو الحال في Arduino و microcontroller لدينا ، بشكل عام) السجل هو موقع يحتوي على البيانات. يقوم بذلك عن طريق تنفيذ سلسلة خطية من الدوائر المنطقية الرقمية تسمى "flip flops" والتي لها حالتان ثابتتان يمكن تمثيلهما إما بـ 1 أو 0. لذلك ، من خلال وضع ثمانية شبشب معًا ، يكون لديك جهاز قادر على حمل ويمثل 8 بت بايت ، تمامًا كما توجد عدة أنواع من flip flops ، والعديد من الاختلافات حول موضوع سجلات التحول (عدادات التفكير لأعلى / لأسفل وعدادات Johnson) ، هناك أيضًا عدة أنواع من سجلات التحول بناءً على كيفية استخدام البيانات مغلق في السجل وكيفية إخراج هذه البيانات. بناءً على ذلك ، ضع في اعتبارك الأنواع التالية من سجلات المناوبة:

  • دخل تسلسلي / مخرج متوازي (SIPO)
  • Serial In / Serial Out (SISO)
  • دخل متوازي / مخرج تسلسلي (PISO)
  • Parallel In / Parallel Out (PIPO)

اثنان من المذكرة هي SIPO و PISO. تأخذ سجلات SIPO البيانات بشكل متسلسل ، أي بتًا تلو الآخر ، وتحويل بت الإدخال السابق إلى التقليب التالي وإرسال البيانات على جميع المدخلات في وقت واحد. هذا يجعل المسلسل لطيف لمحول متوازي. على العكس من ذلك ، تحتوي سجلات إزاحة PISO على مدخلات متوازية ، لذلك يتم إدخال جميع وحدات البت في وقت واحد ، ولكن يتم إخراجها واحدة تلو الأخرى. وقد خمنت ذلك ، فهذا يجعله موازيًا لطيفًا للمحول التسلسلي. سيسمح لنا سجل التحويل الذي نريد استخدامه لتقليل عدد دبابيس الإدخال / الإخراج بأخذ 8 دبابيس IO التي استخدمناها سابقًا وتقليلها إلى واحد ، أو ربما زوجين فقط ، مع الأخذ في الاعتبار أننا قد نحتاج إلى التحكم في كيفية الإدخال البتات. لذلك ، فإن سجل الإزاحة الذي سنستخدمه هو Serial In / Parallel Out. قم بربط سجل التحويل بين LED و Arduino باستخدام سجل التحول أمر سهل. الجزء الأصعب هو مجرد تصور دبابيس إخراج البيانات وكيف سينتهي الأمر بالأرقام الثنائية في IC ، وكيف ستظهر في النهاية على مؤشر LED. خذ لحظة للتخطيط لهذا. 1. قم بتوصيل 5 فولت بالدبوس 14 (أعلى اليمين) وخذ السن 7 (أسفل اليسار) لأسفل إلى الأرض. يحتوي سجل الإزاحة على مدخلين متسلسلين لكننا سنستخدم واحدًا فقط ، لذلك قم بتوصيل الدبوس الثاني بـ 5V3. لن نستخدم الدبوس الشفاف (المستخدم لإلغاء جميع المخرجات) لذا اتركه عائمًا أو مهاجمته إلى 5V4. قم بتوصيل منفذ إدخال رقمي واحد لتثبيت أحد سجلات الإزاحة. هذا هو دبوس الإدخال التسلسلي. قم بتوصيل منفذ إدخال رقمي واحد بالدبوس 8 (أسفل اليمين). هذا هو دبوس الساعة 6. قم بتوصيل خطوط البيانات الخاصة بك من Q0 إلى Q6. نحن نستخدم 7 بت فقط لأن مجموعة أحرف ASCII تستخدم سبع بتات فقط. لقد استخدمت PD2 لإخراج البيانات التسلسلية و PD3 لإشارة الساعة. بالنسبة إلى دبابيس البيانات ، قمت بتوصيل Q0 بـ D6 على LED واستمررت بهذه الطريقة (Q1 إلى D5 ، Q2 إلى D4 ، إلخ). نظرًا لأننا نرسل البيانات بشكل تسلسلي ، فسيتعين علينا فحص التمثيل الثنائي لكل حرف نريد إرساله ، والنظر في 1 و 0 ، وإخراج كل بت على السطر التسلسلي. لقد قمت بتضمين نسخة ثانية من مصدر dotmatrixled.c مع ملف Makefile أدناه. يتنقل عبر مجموعة الأحرف ويعرض جميع الأحرف الزوجية (إذا كان من الغريب التفكير في أن حرفًا ما يمكن أن يكون فرديًا أو زوجيًا ، فكر في التمثيل الثنائي للحظة). حاول معرفة كيفية جعلها تدور من خلال عرض جميع الأحرف الفردية. يمكنك إجراء مزيد من التجارب مع الاتصالات بين سجل التحويل ومصباح نقطي LED و Arduino. هناك العديد من ميزات التحكم بين LED والمسجل والتي يمكن أن تسمح لك بضبط التحكم الخاص بك عندما يتم عرض البيانات. لذلك … لقد انتقلنا من الحاجة إلى استخدام ثمانية منافذ I / O إلى استخدام منفذين فقط!

الخطوة الخامسة: الملخص

ملخص
ملخص
ملخص
ملخص

في هذا الدليل ، قدمت DLO7135 dot matrix LED وكيفية عملها. لقد ناقشت أيضًا كيفية تقليل عدد منافذ الإدخال / الإخراج المطلوبة من ثمانية إلى اثنين فقط باستخدام سجل التحول. يمكن ربط مصباح المصفوفة النقطية DLO7135 معًا لجعل المظلات ملفتة للنظر ومثيرة للاهتمام. أتمنى أن تكون قد استمتعت بقراءة هذه التعليمات! إذا كانت هناك أي تحسينات تعتقد أنه يمكنني إجراؤها أو اقتراحات ترغب في تقديمها بشأن هذا أو أي من أجهزة 'ibles الخاصة بي ، فأنا سعيد لسماعها!

موصى به: