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

كيف تتحول ضغطة إلى أحداث كثيرة؟

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

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

مسجل بسيط للانتقالات

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

افصل القنوات المنطقية في البرنامج: واحدة تسجل الحواف الخام، وأخرى تحاكي مرشحاً زمنياً، وثالثة تعد الضغطات المقبولة. مثال مصطنع: إذا سجلت السلسلة الخام LOW-HIGH-LOW-HIGH خلال نافذة قصيرة، فمرشح ثابت قد يعتبرها ضغطة واحدة بعد استقرار LOW. لا تستخدم هذا المثال كبيانات فعلية أو مواصفة منتج؛ إنه مدخل اختبار يدوي للتأكد من منطق البرنامج.

قارن طرق إزالة الاهتزاز

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

مثال آخر: ينتظر برنامج زر لوحة المفاتيح مدة افتراضية ثم يقبل الحالة المستقرة؛ سجل زمن أول حافة ووقت إصدار الحدث النهائي، واحسب تأخر الاستجابة. لا تعلن أن إعداداً بعينه «مثالي» إلا ضمن المفتاح ومعدل القراءة اللذين اختبرتهما. إذا كان الاستخدام يحتاج استجابة أسرع أو ضغطات متعددة، أضف هذا كمتطلب معلن واختبر حالات الضغط والتحرير المتعاقب.

خط الأساس وخطة التجربة

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

معايير القبول: سلسلة حالة ثابتة لا تولد أحداثاً جديدة؛ انتقال واحد نظيف يولد حدثاً واحداً؛ نبضات سريعة ضمن حزمة اختبار لا تزيد العد؛ ضغطتان تفصل بينهما مدة معروفة تسجلان ضغطتين؛ وزر غير متصل يظهر كإدخال مفتوح متوقع حسب الدارة. اختبر تجاوز المؤقت عند التفاف millis() بدلاً من مقارنة أوقات مطلقة بطريقة تفشل بعد وقت طويل.

أخطاء القياس والحالات الصعبة

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

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

مخرجات مشاريع التخرج وحدودها

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

دليل Arduino الرسمي يشرح المثال الأساسي لإزالة الارتداد، ويعرض مثال كشف تغير الحالة لكشف الحافة. راجع Debounce on a Pushbutton وState Change Detection قبل مقارنة النسخ. هذه مراجع تعليمية وليست ضماناً أن دائرة الزر لديك ستنتج زمناً محدداً؛ لا توجد قياسات منشورة لهذا المقترح.

المصادر

مراجعة المصادر: .

اختبار المثال وحدوده

تصميم مقترح ولم تُجرَ عليه تجارب قياس. أزمنة ارتداد المفاتيح تختلف حسب النوع والحالة ولا تعتبر القيم الواردة في الأمثلة مواصفة لأي مفتاح.

مقالات ذات صلة

الخدمة المرتبطة: برمجة Arduino والأجهزة المتصلة والروبوتات.

أرسل متطلبات مشروعك