كيفية التخلص من ارتداد التلامس عند توصيل زر بأردوينو

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

كيفية التخلص من ارتداد التلامس عند توصيل زر بأردوينو
كيفية التخلص من ارتداد التلامس عند توصيل زر بأردوينو

فيديو: كيفية التخلص من ارتداد التلامس عند توصيل زر بأردوينو

فيديو: كيفية التخلص من ارتداد التلامس عند توصيل زر بأردوينو
فيديو: كورس اردوينو - تطبيقات عملية - عمل زر لتشغيل وايقاف تنفيذ الكود ✅ 2024, شهر نوفمبر
Anonim

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

تأثير ارتداد الاتصال
تأثير ارتداد الاتصال

ضروري

  • - اردوينو
  • - زر براعة
  • - المقاوم بقيمة اسمية 10 كيلو أوم ؛
  • - الصمام الثنائي الباعث للضوء ؛
  • - توصيل الأسلاك.

تعليمات

الخطوة 1

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

هذا التأثير غير ملحوظ في الدوائر الكهربائية للتحكم في الإضاءة أو المحركات أو غيرها من أجهزة الاستشعار بالقصور الذاتي والأجهزة. ولكن في الدوائر التي توجد فيها قراءة سريعة للمعلومات ومعالجتها (حيث تكون الترددات من نفس ترتيب نبضات "الارتداد" أو أعلى) ، فهذه مشكلة. على وجه الخصوص ، فإن Arduino UNO ، الذي يعمل بسرعة 16 ميجاهرتز ، ممتاز في اصطياد ارتداد التلامس من خلال قبول سلسلة من الآحاد والأصفار بدلاً من مفتاح واحد من 0 إلى 1.

ترتد الاتصال عند الضغط على زر
ترتد الاتصال عند الضغط على زر

الخطوة 2

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

توصيل زر بأردوينو باستخدام دائرة مقاومة سحب
توصيل زر بأردوينو باستخدام دائرة مقاومة سحب

الخطوه 3

لإنجاز هذه المهمة ، فإن أول ما يتبادر إلى الذهن:

- تذكر الحالة السابقة للزر ؛

- قارن مع الوضع الحالي ؛

- إذا تغيرت الحالة ، فإننا نغير حالة LED.

دعنا نكتب مثل هذا الرسم ونحمله في ذاكرة Arduino.

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

رسم تخطيطي لزر المعالجة بالضغط دون مراعاة ارتداد التلامس
رسم تخطيطي لزر المعالجة بالضغط دون مراعاة ارتداد التلامس

الخطوة 4

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

في هذا الرسم التخطيطي ، سنعلن عن إجراء debounce ("bounce" في اللغة الإنجليزية تعني "bounce" فقط ، والبادئة "de" تعني العملية العكسية) ، والتي نوفر لها الحالة السابقة للزر. إذا استمر الضغط على الزر لأكثر من 5 مللي ثانية ، فهو حقًا ضغطة.

من خلال الكشف عن الصحافة ، نقوم بتغيير حالة LED.

قم بتحميل الرسم التخطيطي على لوحة Arduino. كل شيء أفضل بكثير الآن! يعمل الزر دون فشل ، عند الضغط عليه ، يتغير مؤشر LED كما أردنا.

رسم تخطيطي لمعالجة الضغط على الزر ، مع مراعاة ارتداد التلامس
رسم تخطيطي لمعالجة الضغط على الزر ، مع مراعاة ارتداد التلامس

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

يتم توفير وظائف مماثلة بواسطة مكتبات خاصة مثل مكتبة Bounce2.يمكنك تنزيله من الرابط الموجود في قسم "المصادر" أو من موقع الويب https://github.com/thomasfredericks/Bounce2. لتثبيت المكتبة ، ضعها في دليل مكتبات بيئة تطوير Arduino وأعد تشغيل IDE.

تحتوي مكتبة "Bounce2" على الطرق التالية:

Bounce () - تهيئة كائن "Bounce" ؛

الفاصل الزمني الفارغ (مللي ثانية) - يحدد وقت التأخير بالمللي ثانية ؛

إرفاق باطل (رقم التعريف الشخصي) - يحدد الدبوس الذي يتصل به الزر ؛

تحديث int () - يقوم بتحديث الكائن ويعيد صحيحًا إذا تغيرت حالة الدبوس ، والخطأ بخلاف ذلك ؛

قراءة int () - يقرأ الحالة الجديدة للدبوس.

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

موصى به: