داشبورد›رودمپ›میکروکنترلر
🧩 میکروکنترلر · درس ۲

GPIO، ورودی دیجیتال و خروجی دیجیتال

می‌فهمی پایه عمومی ورودی/خروجی چیست و چطور وضعیت صفر و یک را می‌خواند یا تولید می‌کند.

⏱ ۱۶ دقیقه 🌱 آسان ⭐ +۳۰ XP 🧠 کوئیز الزامی
🎯
بعد از این درس

قراره چی یاد بگیری؟

  • GPIO را به عنوان ورودی یا خروجی پیکربندی کنی.
  • مفهوم Pull-up/Pull-down و Floating Input را توضیح بدهی.
  • بدانی سطح ولتاژ و جریان پایه محدود است.

GPIO یعنی پایه عمومی ورودی/خروجی

GPIO پایه‌ای است که نرم‌افزار می‌تواند آن را برای خواندن یک وضعیت دیجیتال یا تولید یک سطح منطقی پیکربندی کند. دیجیتال یعنی در مدل ساده فقط دو حالت داریم: LOW و HIGH.

Button ──> GPIO Input ──> CPU ──> GPIO Output ──> LED/Driver Input

ورودی نباید معلق باشد

اگر پایه ورودی به هیچ سطح مشخصی وصل نباشد، Floating است و ممکن است نویز باعث خواندن تصادفی شود. برای همین از مقاومت Pull-up یا Pull-down استفاده می‌کنیم. بسیاری از MCUها Pull-up داخلی دارند.

در Arduino یک الگوی رایج:

pinMode(2, INPUT_PULLUP);

در این حالت دکمه را بین Pin و GND می‌گذاریم. نتیجه مهم: دکمه آزاد = HIGH، دکمه فشرده = LOW. این منطق برعکس چیزی است که بعضی تازه‌کارها انتظار دارند.

خروجی هم محدودیت دارد

وقتی Pin خروجی است، HIGH تقریبا نزدیک ولتاژ منطقی برد و LOW نزدیک GND است. اما جریان مجاز هر Pin محدود است و باید از مستندات برد دیده شود. یک LED با مقاومت ممکن است مناسب باشد، ولی موتور و رله مستقیم مناسب نیستند.

سطح ولتاژ

۵V و ۳.۳V را قاطی نکن. یک ورودی ۳.۳V ممکن است ۵V-tolerant نباشد. حتی اگر کانکتور فیزیکی جا می‌رود، باید محدوده ولتاژ الکتریکی بررسی شود.

Bounce دکمه

دکمه مکانیکی هنگام فشردن ممکن است در چند میلی‌ثانیه چند بار اتصال/قطع شود. اگر برنامه هر تغییر را یک کلیک حساب کند، یک فشار می‌تواند چند بار ثبت شود. Debounce را می‌توان سخت‌افزاری یا نرم‌افزاری انجام داد؛ در شروع کافی است بدانیم این رفتار واقعی است و «خرابی کد» لزوما نیست.

تمرین

یک دکمه با INPUT_PULLUP و یک LED طراحی کن. جدول حقیقت بنویس: حالت دکمه، مقدار digitalRead و وضعیت LED. سپس توضیح بده چرا فشردن دکمه LOW دیده می‌شود. قبل از اتصال، مطمئن شو LED مقاومت سری دارد.

🃏
مرور سریع

فلش کارت‌ها

۱ / ۳
🧠
برای تکمیل درس لازمه

آزمون کوتاه همین درس

حد نصاب ۷۰٪

برای عبور از درس، مفهوم را روی یک موقعیت واقعی به کار ببر؛ جواب‌ها از حفظ یک جمله نیستند.

۱

با INPUT_PULLUP و دکمه بین Pin و GND، هنگام فشردن دکمه معمولا چه می‌خوانیم؟

۲ امتیاز
۲

ورودی Floating می‌تواند در اثر نویز بین HIGH و LOW تغییر کند.

۱ امتیاز
۳

قبل از اتصال خروجی 5V یک برد به ورودی 3.3V برد دیگر چه چیزی باید بررسی شود؟

۲ امتیاز
۳ سوال هنوز جواب نداره.
🔗
برای عمیق‌تر شدن

منابع تکمیلی