الغرض: الغرض من هذا المشروع هو استخدام برامج التجميع التي سيتم تضمينها في بيئة Arduino C ولكن سيتم أيضًا تعريفها بالقيام بإدخال ومخرجات من لوحة Arduino. سيكون الإدخال عبارة عن مفتاح لبدء البرنامج بمقاوم سحب لأعلى أو لأسفل وسيقوم الإخراج بتشغيل مؤشر LED يومض SOS في شفرة مورس. يبدو أن الأمر سيكون معقدًا، ولكن يتم إعطاؤك أدلة في كل خطوة على الطريق. ويمكنك استخدام وظيفة تأخير المعمل السابقة وR16 لأوقات التأخير المختلفة.
في زمن التلغراف والإبراق الراديوي، قبل وحتى بعد تشفير الصوت، كانت وسائل الاتصال تستخدم "أداة النقر" أو مفتاحًا فاخر المظهر، باستخدام شفرة مورس، حيث يمكن للمرسل النقر على رسالة باستخدام طويلة وقصيرة فترات أو "الصنابير". على الطرف المتلقي سيكون هناك مرحل أو نغمة من شأنها تكرار النقرات حتى يتمكن المرء من سماعها وترجمتها مرة أخرى إلى كلمات. في شفرة مورس، يتم ترميز الحرف S بثلاث نقاط أو فترات قصيرة ويتم ترميز الحرف O بثلاث شرطات أو فترات طويلة. رمز مورس للمساعدة أو الاستغاثة هو SOS الذي يبدو مثل …---… …---… وهكذا.
سيرسل هذا المختبر SOS بشفرة مورس إلى مؤشر LED عند تشغيل المفتاح وسيتوقف بعد إرسال SOS الكامل عندما يكون المفتاح مطفأ.
فيما يلي مثال لما يجب أن يبدو عليه: https://www.youtube.com/watch?v=Zsb7stKelq4
إنشاء مدخلات للتبديل. تتطلب مثل هذه العملية التي تبدو بسيطة بعض التفكير عند إجرائها على معالج دقيق.
فيما يلي بعض الخطوات العامة لإجراء إدخال:
راجع قسم ورقة بيانات AVR رقم 14 حول منافذ الإدخال/الإخراج. لاحظ أدناه الأجهزة الخاصة بدبوس إدخال/إخراج واحد في AVR.
الأجهزة الداخلية لدبوس الإدخال / الإخراج في AVR
كل هذه الأجهزة مطلوبة لتكون قادرة على تكوين الدبوس كمدخل أو مخرج، بالإضافة إلى بعض الميزات الأخرى مثل مقاومات السحب الداخلية، وأوضاع السكون والتزامن مع الساعة. من الواضح أن أطراف الإدخال/الإخراج ليست بسيطة ولكننا سنهتم بهذا التمرين فقط بإدخال أو إخراج بسيط. لهذا نحتاج إلى سجل DDR ومنفذ الإدخال أو الإخراج الذي سنستخدمه.
لقد رأينا سابقًا كيف تم تكوين المخارج حتى يومض مؤشر LED الموجود على PORTB bit 5.
يمكنك تحديد أي منفذ منفذ متاح لهذا على Arduino الخاص بك ولكن بعد ذلك يجب عليك تحديد المنفذ والبت الخاص به.
الإخراج: يتم استخدام PORTB، المسجل 5، البت 5، داخليًا لـ LED ويتم إخراجه أيضًا إلى موصل (دبوس 13 في UNO) ولكن لا تستخدمه خارجيًا - فهو لا يحتوي على القدرة الحالية الكافية لتشغيل اثنين من مصابيح LED.
• اقتراح: استخدم PORTB، وقم بتسجيل 5 بت 4 (الطرف 12 في UNO) للإخراج
الإدخال: هناك العديد من الاختيارات الأخرى التي يمكنك استخدامها (باستثناء عدم استخدام أطراف الإدخال/الإخراج 0 أو 1 لأنها ضرورية للتواصل مع الكمبيوتر). • اقتراح: PORTB، يمكن استخدام تسجيل 5 بت 3 (الطرف 11 في UNO) كمدخل.
الإعداد النموذجي: تختار دبابيس الإدخال والإخراج.
قراءة أحد المدخلات: لقراءة أحد المدخلات مع معرفة المنفذ، يمكنك استخدام تعليمات IN الموضحة أدناه وعنوان الدبابيس للمنفذ الذي تستخدمه. على سبيل المثال، لقراءة PORTB، البت 4 (الطرف 18 من UNO)، يمكنك استخدام هذه التعليمات لقراءة المنفذ.
حلقة:
في r17، 0x03؛ // اقرأ دبابيس PORTB في السجل 17
أنت الآن بحاجة إلى انتقاء البتة 4 عن طريق دمجها مع 0x10 لإخفاء جميع البتات الأخرى. بعد ذلك يعتمد الأمر على تكوين الإدخال الخاص بك وما إذا كنت تستخدم القائمة المنسدلة أم القائمة المنسدلة. نحن هنا نستخدم المقاوم المنسدلة.
إذا كنت تستخدم مقاومة سحب، فإن إغلاق المفتاح سيؤدي إلى 0 وإلا فإنه 1، لذلك يمكنك تنفيذ تعليمات AND ثم التفرع إذا كانت صفرًا.
أندي r17، 0x08؛ // و r17 مع 08h
بداية BRNE؛ // إذا لم يكن المفتاح مغلقًا (أي 1)، فارجع للخلف وحلقة
في حالة استخدام المقاوم المنسدل، فإن إغلاق المفتاح سيؤدي إلى 1 وإلا فإنه سيكون 0:
أندي r17، 0x08؛ // و r16 مع 08h
بداية بريك؛ // إذا لم يكن المفتاح مغلقًا (أي 0)، فارجع للخلف وحلقة
إنشاء المخرجات يشبه إلى حد كبير إنشاء المدخلات. يجب عليك ضبط دبوس المنفذ ليكون مخرجًا. ثم يمكنك استخدام CBI أو SBI لجعله صفرًا أو واحدًا.
فيما يلي بعض الخطوات العامة لإجراء الإخراج:
تصميم البرنامج هذا المعمل يشبه إلى حد كبير المعمل السابق الخاص بمؤشر LED الوامض. تم إرفاق هذا الرسم كقاعدة لتبدأ به. كل ما عليك فعله هو تغيير البنية لإنشاء SOS وفقًا للقواعد المذكورة أعلاه واستخدام مدخلات للمفتاح لتشغيل SOS ومخرج لتشغيل مؤشر LED. استخدم روتين التأخير الفرعي لإعداد تأخيرات مختلفة للنقاط والشرطات وما إلى ذلك كما هو موضح أدناه في المربع.
راجع المستند الذي يحدد علاقات التوقيت واتبع هذه القواعد عند تصميم برنامجك لشفرة SOS Morse.