چرا ورودی دیجیتالِ بدون اتصال، گاهی 0 و گاهی 1 خوانده می شوند؟
فرض کنید در آردوینو یک پایه را بهعنوان ورودی تعریف کردهایم:
pinMode(2, INPUT);
حالا هیچ سیمی به پایه 2 وصل نیست. انتظار داریم مقدار آن "0" باشد؛ اما ممکن است میکروکنترلر مرتباً:
"1 → 0 → 1 → 1 → 0"
بخواند!
❓ آیا پایه خراب است؟
❌ نه!
پایه در این حالت Floating (شناور) است؛ یعنی ولتاژ آن توسط هیچ منبع مشخصی تعیین نمیشود. نویزهای محیط و کوپل الکتریکی میتوانند ولتاژ پایه را تغییر دهند و باعث شوند میکروکنترلر آن را گاهی HIGH و گاهی LOW تشخیص دهد.
✅ راهحل: Pull-up / Pull-down
با یک مقاومت، وضعیت پیشفرض پایه را مشخص میکنیم:
⬆️ Pull-up:
حالت عادی = "1"
فشار دکمه → "0"
⬇️ Pull-down:
حالت عادی = "0"
فشار دکمه → "1"
در Arduino Uno میتوان از Pull-up داخلی استفاده کرد:
pinMode(2, INPUT_PULLUP);
⚠️ اما Arduino Uno، Pull-down داخلی ندارد؛ بنابراین "INPUT_PULLDOWN" برای آن قابل استفاده نیست.
🎯 قانون طلایی:
«هیچ ورودی دیجیتالی را بدون تعیین وضعیت منطقی رها نکنید؛ ورودی Floating یعنی «میکروکنترلر نمیداند 0 بخواند یا 1»!»
#Arduino #AVR
Post #775
347