⏱️ مدیریت زمان در Arduino با delay و millis
در این درس یاد میگیریم چگونه زمان را در Arduino مدیریت کنیم،
چرا استفاده زیاد از delay خطرناک است و چگونه با millis برنامههای حرفهای و بدون توقف بنویسیم.
🎯 اهداف درس
- درک عملکرد تابع delay
- شناخت مشکلات delay در پروژههای واقعی
- یادگیری استفاده از millis برای زمانبندی حرفهای
- نوشتن کد non-blocking (بدون توقف)
🧠 مفهوم زمان در Arduino
زمان چگونه کار میکند؟
Arduino یک میکروکنترلر تکوظیفهای است؛ یعنی در هر لحظه فقط یک دستور را اجرا میکند.
زمانی که از delay استفاده میکنیم، اجرای کل برنامه متوقف میشود و Arduino هیچ کاری انجام نمیدهد.
⛔ مشکل delay چیست؟
هشدار مهم
در زمان اجرای delay، Arduino نمیتواند دکمه بخواند، سنسور بررسی کند یا ارتباط برقرار کند. در پروژههای واقعی این موضوع باعث باگ و عملکرد نادرست میشود.
⚡ مثال ساده با delay
در این کد LED چشمک میزند، اما در زمان delay هیچ ورودی یا پردازش دیگری انجام نمیشود.
🚀 راهحل حرفهای: millis()
تابع millis چیست؟
تابع millis() تعداد میلیثانیههایی که از روشن شدن Arduino گذشته را برمیگرداند.
با استفاده از آن میتوانیم بدون توقف برنامه، زمان را مدیریت کنیم.
✅ مثال حرفهای چشمکزن بدون delay
🖼️ تصویر شماتیک (پیشنهادی)
📷 تصویر اتصال LED به پین 13 به همراه مقاومت 220 اهم
(در اپ میتوان تصویر breadboard یا شماتیک قرار داد)
🧩 مقایسه delay و millis
- delay: ساده اما متوقفکننده کل برنامه
- millis: حرفهای، سریع و مناسب پروژههای واقعی
- در IoT و سیستمهای هوشمند، delay تقریباً ممنوع است ❌
📝 تمرین پیشنهادی
تمرین
برنامهای بنویسید که:
- یک LED هر ۱ ثانیه چشمک بزند
- همزمان وضعیت یک دکمه را بخواند
- هیچ delayای در برنامه استفاده نشود
🎓 جمعبندی
در این درس یاد گرفتید که:
- delay باعث توقف کل برنامه میشود
- millis پایه برنامهنویسی حرفهای در Arduino است
- تقریباً تمام پروژههای پیشرفته بدون delay نوشته میشوند