آشنایی عملی با گذرگاه I2C و اسکن آدرس
آموزش I2C آردوینو را با یک آزمایش قابل تکرار یاد میگیریم. I2C دو خط داده SDA و ساعت SCL دارد و چند قطعه میتوانند روی یک گذرگاه قرار بگیرند. نشانی هر قطعه را از دیتاشیت یا اسکنر پیدا کنید. پایهها و سطح ولتاژ روی بردهای مختلف متفاوت است.

وسایل و پیشنیازهای آموزش I2C آردوینو
یک ماژول I2C سازگار با ولتاژ برد و چهار سیم اتصال آماده کنید. زمین و تغذیه را طبق مشخصات ماژول ببندید و SDA و SCL را به پایههای درجشده در راهنمای برد وصل کنید.
مراحل عملی
در برنامه Wire.begin() را اجرا کنید. نشانیهای ۱ تا ۱۲۶ را با beginTransmission و endTransmission بررسی و نشانیهای با پاسخ صفر را در Serial چاپ کنید. اسکنر فقط حضور قطعه را نشان میدهد، نه سلامت همه عملکردهای آن.
- قطعات را با تغذیه قطعشده ببندید و اتصالات را بررسی کنید.
- ابتدا نمونه ساده همان بخش را اجرا و خروجی را ثبت کنید.
- فقط بعد از تأیید هر مرحله، قطعه یا قابلیت بعدی را اضافه کنید.
عیبیابی
اگر نشانی دیده نشد، ولتاژ، زمین، SDA/SCL، مقاومت پولآپ موجود در ماژول و نشانی احتمالی را بررسی کنید. دو ماژول با نشانی ثابت یکسان روی یک گذرگاه تداخل دارند.
تمرین و ارزیابی
یک بار ماژول را جدا کنید و تفاوت نتیجه اسکن را ثبت کنید.
نتیجه را با یادداشت مقدار ورودی، خروجی مورد انتظار و خروجی مشاهدهشده ارزیابی کنید. در پروژههای چندقطعهای، هر بخش را پیش از ترکیب جدا امتحان کنید.
درسهای مرتبط
منبع تکمیلی: راهنماهای رسمی Arduino و مرجع زبان و کتابخانهها.
خواندن داده حسگر I2C با Wire
خواندن حسگر I2C با Wire را با یک آزمایش قابل تکرار یاد میگیریم. پس از پیدا کردن نشانی، باید قالب رجیسترها را از دیتاشیت همان حسگر بخوانید؛ همه حسگرها فرمان و ترتیب بایت یکسان ندارند.

وسایل و پیشنیازهای خواندن حسگر I2C با Wire
از حسگری استفاده کنید که نقشه رجیستر آن در اختیار شماست. نشانی، رجیستر شناسه یا داده و تعداد بایت خروجی را یادداشت کنید.
مراحل عملی
با Wire.beginTransmission(address)، شماره رجیستر را بنویسید و با endTransmission(false) ارتباط را ادامه دهید. سپس requestFrom را برای تعداد بایت لازم فراخوانی و قبل از read تعداد available را بررسی کنید. تبدیل بایتها به عدد باید دقیقاً مطابق دیتاشیت انجام شود.
- قطعات را با تغذیه قطعشده ببندید و اتصالات را بررسی کنید.
- ابتدا نمونه ساده همان بخش را اجرا و خروجی را ثبت کنید.
- فقط بعد از تأیید هر مرحله، قطعه یا قابلیت بعدی را اضافه کنید.
عیبیابی
اگر مقدار ثابت یا غیرعادی بود، ترتیب بایتها، علامتدار بودن داده، زمان نمونهبرداری و کد خطای endTransmission را بررسی کنید. حدس زدن ضریب تبدیل اندازهگیری را بیاعتبار میکند.
تمرین و ارزیابی
مقدار خام و مقدار تبدیلشده را کنار هم در مانیتور سریال چاپ کنید.
نتیجه را با یادداشت مقدار ورودی، خروجی مورد انتظار و خروجی مشاهدهشده ارزیابی کنید. در پروژههای چندقطعهای، هر بخش را پیش از ترکیب جدا امتحان کنید.
درسهای مرتبط
منبع تکمیلی: راهنماهای رسمی Arduino و مرجع زبان و کتابخانهها.
مبانی SPI و انتخاب قطعه
آموزش SPI آردوینو را با یک آزمایش قابل تکرار یاد میگیریم. SPI معمولاً خط ساعت، دو خط داده و یک پایه انتخاب قطعه CS دارد. شماره پایهها بین بردها متفاوت است و قطعه باید با سطح ولتاژ میزبان سازگار باشد.

وسایل و پیشنیازهای آموزش SPI آردوینو
یک ماژول SPI با دیتاشیت روشن انتخاب کنید. نقشه اتصال COPI/MOSI، CIPO/MISO، SCK و CS را از راهنمای همان برد و ماژول استخراج کنید.
مراحل عملی
پیش از انتقال، SPI.begin() و سپس beginTransaction با تنظیمات سرعت، ترتیب بیت و حالت مطابق دیتاشیت را اجرا کنید. CS را فعال کنید، بایت فرمان را با transfer بفرستید، پاسخ را بخوانید، سپس CS را غیرفعال و endTransaction را فراخوانی کنید.
- قطعات را با تغذیه قطعشده ببندید و اتصالات را بررسی کنید.
- ابتدا نمونه ساده همان بخش را اجرا و خروجی را ثبت کنید.
- فقط بعد از تأیید هر مرحله، قطعه یا قابلیت بعدی را اضافه کنید.
عیبیابی
اگر پاسخ فقط صفر یا ۲۵۵ است، سیمهای داده، CS، تغذیه و SPI mode را بررسی کنید. خروجی چند قطعه SPI نباید همزمان انتخاب شود.
تمرین و ارزیابی
با یک فرمان شناسه در دیتاشیت، پاسخ قطعه را آزمون کنید.
نتیجه را با یادداشت مقدار ورودی، خروجی مورد انتظار و خروجی مشاهدهشده ارزیابی کنید. در پروژههای چندقطعهای، هر بخش را پیش از ترکیب جدا امتحان کنید.
درسهای مرتبط
منبع تکمیلی: راهنماهای رسمی Arduino و مرجع زبان و کتابخانهها.
ثبت داده روی کارت SD
ثبت داده آردوینو روی کارت SD را با یک آزمایش قابل تکرار یاد میگیریم. کارت SD معمولاً از SPI استفاده میکند. برای ثبت آزمایش، زمان از زمان روشن شدن برد و مقدار حسگر را در ردیفهای جدا ذخیره کنید. millis زمان واقعی ساعت نیست.

وسایل و پیشنیازهای ثبت داده آردوینو روی کارت SD
ماژول کارت با سطح ولتاژ سازگار، کارت آماده و سیمهای SPI و CS لازم است. CS را از مثال سازنده ماژول و پایههای SPI را از راهنمای برد خود انتخاب کنید.
مراحل عملی
کتابخانه SD را فراخوانی کنید، SD.begin(csPin) را بررسی کنید و فایل را با FILE_WRITE باز کنید. هر چند ثانیه یک ردیف شامل millis و مقدار را بنویسید و فایل را ببندید تا داده ثبت شود.
- قطعات را با تغذیه قطعشده ببندید و اتصالات را بررسی کنید.
- ابتدا نمونه ساده همان بخش را اجرا و خروجی را ثبت کنید.
- فقط بعد از تأیید هر مرحله، قطعه یا قابلیت بعدی را اضافه کنید.
عیبیابی
در خطای راهاندازی، تغذیه، قالب کارت، اتصال CS و پایههای SPI را بررسی کنید. باز و بسته کردن مکرر فایل هزینه دارد؛ فاصله نمونهبرداری را منطقی انتخاب کنید.
تمرین و ارزیابی
فایل را روی رایانه باز کنید و تعداد ردیفها را با تعداد نمونههای چاپشده در سریال مقایسه کنید.
نتیجه را با یادداشت مقدار ورودی، خروجی مورد انتظار و خروجی مشاهدهشده ارزیابی کنید. در پروژههای چندقطعهای، هر بخش را پیش از ترکیب جدا امتحان کنید.
درسهای مرتبط
منبع تکمیلی: راهنماهای رسمی Arduino و مرجع زبان و کتابخانهها.
وقفه خارجی برای شمارش پالس
وقفه خارجی آردوینو را با یک آزمایش قابل تکرار یاد میگیریم. وقفه برای ثبت رویدادی کوتاه مفید است؛ پایههای پشتیبانیشده به مدل برد بستگی دارند. تابع وقفه باید کوتاه باشد.

وسایل و پیشنیازهای وقفه خارجی آردوینو
یک کلید با پولآپ داخلی یا منبع پالس مناسب انتخاب کنید. پایهای که digitalPinToInterrupt روی برد شما پشتیبانی میکند پیدا کنید.
مراحل عملی
شمارنده مشترک را volatile تعریف کنید و attachInterrupt(digitalPinToInterrupt(pin), handler, FALLING) را به کار ببرید. فقط شمارنده را در handler افزایش دهید. در loop یک کپی امن از مقدار بگیرید و نمایش دهید.
- قطعات را با تغذیه قطعشده ببندید و اتصالات را بررسی کنید.
- ابتدا نمونه ساده همان بخش را اجرا و خروجی را ثبت کنید.
- فقط بعد از تأیید هر مرحله، قطعه یا قابلیت بعدی را اضافه کنید.
عیبیابی
کلید مکانیکی لرزش دارد؛ برای شمارش دقیق از دیبانس مناسب یا منبع پالس تمیز استفاده کنید. روی میکروکنترلرهای ۸بیتی خواندن متغیر چندبایتی مشترک را داخل بخش کوتاه noInterrupts/interrupts انجام دهید.
تمرین و ارزیابی
با ده پالس آرام، مقدار ثبتشده را مقایسه و اثر لرزش کلید را مشاهده کنید.
نتیجه را با یادداشت مقدار ورودی، خروجی مورد انتظار و خروجی مشاهدهشده ارزیابی کنید. در پروژههای چندقطعهای، هر بخش را پیش از ترکیب جدا امتحان کنید.
درسهای مرتبط
منبع تکمیلی: راهنماهای رسمی Arduino و مرجع زبان و کتابخانهها.
ماشین حالت برای برنامههای بدون توقف
ماشین حالت با millis را با یک آزمایش قابل تکرار یاد میگیریم. وقتی چند کار همزمان لازم است، وضعیت جاری و زمان آخرین تغییر را نگه دارید و loop را سریع تکرار کنید.

وسایل و پیشنیازهای ماشین حالت با millis
یک LED، کلید و بازر کممصرف آماده کنید. وضعیتهای آماده، هشدار و خاموش را روی کاغذ مشخص کنید.
مراحل عملی
در هر دور loop ورودی را بخوانید، گذار وضعیت را بر اساس فشار کلید یا گذشت زمان تعیین کنید و خروجی هر وضعیت را تنظیم کنید. برای مقایسه زمان از اختلاف دو unsigned long استفاده کنید.
- قطعات را با تغذیه قطعشده ببندید و اتصالات را بررسی کنید.
- ابتدا نمونه ساده همان بخش را اجرا و خروجی را ثبت کنید.
- فقط بعد از تأیید هر مرحله، قطعه یا قابلیت بعدی را اضافه کنید.
عیبیابی
اگر برنامه روی یک وضعیت میماند، شرط گذار و بهروزرسانی زمان ورود به وضعیت را بررسی کنید. delay طولانی باعث از دست رفتن رویدادهای دیگر میشود.
تمرین و ارزیابی
مدت هشدار را تغییر دهید و بررسی کنید کلید در همه حالتها پاسخ میدهد.
نتیجه را با یادداشت مقدار ورودی، خروجی مورد انتظار و خروجی مشاهدهشده ارزیابی کنید. در پروژههای چندقطعهای، هر بخش را پیش از ترکیب جدا امتحان کنید.
درسهای مرتبط
منبع تکمیلی: راهنماهای رسمی Arduino و مرجع زبان و کتابخانهها.
ذخیره تنظیمات در EEPROM
ذخیره در EEPROM آردوینو را با یک آزمایش قابل تکرار یاد میگیریم. برخی بردها EEPROM داخلی دارند و برخی فناوری ذخیرهسازی یا API متفاوتی دارند؛ پیش از تمرین مشخصات برد را بررسی کنید. EEPROM تعداد چرخه نوشتن محدودی دارد.

وسایل و پیشنیازهای ذخیره در EEPROM آردوینو
در برد سازگار با EEPROM، یک آستانه یکبایتی برای روشن شدن چراغ تعریف کنید. مقدار مجاز را در بازه صفر تا ۲۵۵ نگه دارید.
مراحل عملی
در setup مقدار را با EEPROM.read بخوانید، بازه معتبر را بررسی کنید و هنگام تغییر واقعی از EEPROM.update استفاده کنید. در هر دور loop ننویسید.
- قطعات را با تغذیه قطعشده ببندید و اتصالات را بررسی کنید.
- ابتدا نمونه ساده همان بخش را اجرا و خروجی را ثبت کنید.
- فقط بعد از تأیید هر مرحله، قطعه یا قابلیت بعدی را اضافه کنید.
عیبیابی
اگر مقدار پس از راهاندازی نامعتبر است، مقدار پیشفرض اعمال کنید. برای داده چندبایتی قالب و نسخه داده را مشخص کنید تا تغییر برنامه تنظیمات قدیمی را اشتباه نخواند.
تمرین و ارزیابی
آستانه را تغییر دهید، برد را خاموش و روشن کنید و ماندگاری مقدار را بیازمایید.
نتیجه را با یادداشت مقدار ورودی، خروجی مورد انتظار و خروجی مشاهدهشده ارزیابی کنید. در پروژههای چندقطعهای، هر بخش را پیش از ترکیب جدا امتحان کنید.
درسهای مرتبط
منبع تکمیلی: راهنماهای رسمی Arduino و مرجع زبان و کتابخانهها.
طراحی تغذیه و زمین مشترک
تغذیه و زمین مشترک آردوینو را با یک آزمایش قابل تکرار یاد میگیریم. راهاندازی همزمان حسگر، موتور و نمایشگر نیاز به بودجه جریان و ولتاژ دارد. اتصال زمین مشترک برای تفسیر درست سیگنال بین مدارها ضروری است.

وسایل و پیشنیازهای تغذیه و زمین مشترک آردوینو
ولتاژ نامی و جریان معمول و راهاندازی هر ماژول را از مشخصات آن بنویسید. منبع موتور را با درایور مناسب جدا کنید.
مراحل عملی
قبل از اتصال، جمع جریان را با ظرفیت منبع مقایسه کنید. با مولتیمتر ولتاژ را در حالت بیبار و هنگام کار موتور اندازه بگیرید. مسیر جریان پرقدرت را از سیم سیگنال حساس جدا نگه دارید.
- قطعات را با تغذیه قطعشده ببندید و اتصالات را بررسی کنید.
- ابتدا نمونه ساده همان بخش را اجرا و خروجی را ثبت کنید.
- فقط بعد از تأیید هر مرحله، قطعه یا قابلیت بعدی را اضافه کنید.
عیبیابی
ریست شدن برد با روشن شدن موتور میتواند از افت ولتاژ یا نویز باشد؛ سیمبندی، ظرفیت منبع و زمین مشترک را بررسی کنید. هرگز دو خروجی تغذیه را بدون طرح مشخص به هم وصل نکنید.
تمرین و ارزیابی
در یک جدول، ولتاژ و جریان قطعات پروژه خود را ثبت کنید.
نتیجه را با یادداشت مقدار ورودی، خروجی مورد انتظار و خروجی مشاهدهشده ارزیابی کنید. در پروژههای چندقطعهای، هر بخش را پیش از ترکیب جدا امتحان کنید.
درسهای مرتبط
منبع تکمیلی: راهنماهای رسمی Arduino و مرجع زبان و کتابخانهها.
پروژه نهایی ثبت و هشدار داده حسگر
پروژه ثبت داده و هشدار آردوینو را با یک آزمایش قابل تکرار یاد میگیریم. در این پروژه یک حسگر I2C، کارت SD و LED یا بازر را ترکیب میکنید. هدف، طراحی قابل عیبیابی است، نه وابستگی به مدل خاص حسگر.

وسایل و پیشنیازهای پروژه ثبت داده و هشدار آردوینو
آدرس و رجیستر حسگر، سطح ولتاژ، پایه CS کارت و ظرفیت منبع را برای قطعات واقعی خود تعیین کنید. آستانه هشدار را ابتدا ثابت بگذارید.
مراحل عملی
در setup سلامت حسگر و SD را جداگانه بررسی کنید. در loop با millis هر چند ثانیه نمونه معتبر بگیرید، روی SD ذخیره کنید و اگر آستانه رد شد خروجی هشدار را تغییر دهید. خطای خواندن را بهجای عدد ساختگی در سریال گزارش کنید.
- قطعات را با تغذیه قطعشده ببندید و اتصالات را بررسی کنید.
- ابتدا نمونه ساده همان بخش را اجرا و خروجی را ثبت کنید.
- فقط بعد از تأیید هر مرحله، قطعه یا قابلیت بعدی را اضافه کنید.
عیبیابی
در صورت خرابی SD نمونهگیری را متوقف نکنید؛ وضعیت خطا را نشان دهید. اگر حسگر پاسخ نمیدهد، از اسکن I2C و اگر فایل نوشته نمیشود از نمونه ساده SD آغاز کنید.
تمرین و ارزیابی
سه آزمون انجام دهید: کار عادی، جدا کردن حسگر با تغذیه قطعشده، و برداشتن کارت قبل از راهاندازی؛ رفتار خطا را یادداشت کنید.
نتیجه را با یادداشت مقدار ورودی، خروجی مورد انتظار و خروجی مشاهدهشده ارزیابی کنید. در پروژههای چندقطعهای، هر بخش را پیش از ترکیب جدا امتحان کنید.
درسهای مرتبط
منبع تکمیلی: راهنماهای رسمی Arduino و مرجع زبان و کتابخانهها.