برنامه نویسی گیم و آردینو

آموزش برنامه نویسی ماتریس رباتیک در دو بخش گیم نویسی و آردینو اجرا می شود. گیم نویسی با نرم افزار SCRATCH و آموزش آردینو در محیط ARDUINO IDE انجام می گردد.

برنامه نویسی را با آموزش پایه های آردوینو UNO شروع می‌کنیم:

پورت USB:

با این پورت آردوینو با کابل USB به کامپیوتر وصل می‌شود.

سؤال: چه نیازی به این کابل USB است؟

1. تأمین ولتاژ مصرفی آردوینو ( روشن کردن آردوینو).

2. پرو گرام کردن آردوینو با همین کابل انجام می‌شود یعنی فقط کافی است کد برنامه‌ها را داشته باشیم کابل USB رو وصل می‌کنیم و آپلود می‌کنیم.

3. ارتباط سریال بین کامپیوتر و آردوینو (این قسمت مربوط به بخش برنامه‌نویسی است).

سو کت آداپتور :

برای روشن کردن آردوینو چندراه وجود دارد. اولین راه همان کابل USB است. حال فرض کنید یک مدار با آردوینو بسته‌ایم که قرار است در مطب پزشک یا بانک از آن استفاده شود. اگر قرار باشد تنها راه روشن کردن آردوینو کابل USB باشد، باید همه‌جا دنبال خودمان لپ‌تاپ هم ببریم که منطقی نیست. برای همین در بردهای آردوینو یک ‌سوکت قرار داده اند که می‌شود به آن سوئیچ آداپتور وصل کرد و با همان ولتاژ مصرفی آردوینو فراهم ‌شود. نکته قابل‌توجه این است که معمولاً آداپتورها با ولتاژ 5 ولت یا 9 ولت به آردوینو وصل شود.

پیشنهاد می‌کنیم که 12 ولت به آردوینو وصل نکنید چون در طولانی‌مدت مجبور می‌شوید با آردوینو خود خداحافظی کنید.

از پین‌های 3.3 و 5 ولت و دو پین GND در برنامه‌ها به‌جای تغذیه قطعات الکتریکی استفاده می‌کنیم. در مواقعی که ما دسترسی به برق نداشته و مدت‌زمان استفاده از آردوینو بیش از یک روز بوده که نتوان از آردوینو استفاده کرد می‌توان با باتری هم آردوینو رو روشن کرد، باتری دو خروجی دارد: ولتاژ و زمین. کافی است خروجی ولتاژ باتری به پایه Vin و GND به GND آردوینو وصل شود، البته مثل آداپتور اینجا هم مجاز نیستیم هر ولتاژی را وارد کنیم، وب سایت سازنده آردوینو حداقل 5 ولت و حداکثر 12 ولت پیشنهاد کرده است.

البته پایه Vin یک کاربرد دیگر هم دارد، وقتی ولتاژ آردوینو با آداپتور تأمین شود روی این پایه همان ولتاژ آداپتور ایجاد می‌شود یعنی اگر آداپتور 9 ولت وصل کرده باشید ولتاژ این پایه حدود 9 ولت ایجاد شده، زمانی هم که آردوینو با کابل USB روشن شود روی پایه Vin تقریباً 5 ولت ایجاد می‌شود.

ورودی و خروجی‌های دیجیتال :

آردوینو 14 پین دیجیتال دارد (از D0 تا D13)، این پین‌ها هم به‌عنوان ورودی هم به‌عنوان خروجی تعریف می‌شوند.

پایه‌های خاص

1. پایه‌های سریال :

پایه‌های D0 و D1 آردوینو به‌صورت پیش‌فرض به‌عنوان پایه‌های ارتباط سریال در نظر گرفته‌شده است. پرو گرام کردن آردوینو از طریق کامپیوتر از طریق همین دو پین صورت می‌گیرد. طوری که وقتی آردوینو در حال پرو گرام شدن است این دوپایه که به دو led وصل هستند شروع به چشمک زدن می‌کنند.

2. وقفه :

در آردوینو از نوع UNO دو وقفه خارجی روی پین‌های D2و D3 وجود دارد که با برنامه‌نویسی از آن‌ها می‌توان استفاده کرد. روال کلی وقفه به این صورت است که وقتی روی پین D2 سیگنال موجود باشد (به عبارتی trigger می‌شود) میکرو دست از اجرای هر فعالیت یا برنامه می‌کشد و عملیات مخصوص وقفه را انجام می‌دهد (اصطلاحاً به این عمل، تابع وقفه صورت گرفته می گویند).

هر پالس لبه بالارونده و لبه پایین‌رونده دارد. وقتی از وقفه صحبت می‌کنیم می توانیم تعیین کنیم پالسی که به پایه D2 داده می‌شود روی کدام لبه حساس باشد. یعنی اگر به لبه بالارونده پالس برسد زیر برنامه وقفه اجراشده یا برعکس. حتی می‌شود تعیین کرد به ازای هر تغییری که در سطح منطقی به وجود می‌آید زیر برنامه اجرا شود.

3. پین‌های PWM

PWM اين عبارت مخفف Pulse Width Modulation یا Pulse Duration Modulation كه به معناي مدولاسیون پهنای پالس یا مدولاسیون مدت‌زمان پالس است. PWM يك اصطلاح براي يك نوع از سيگنال ديجيتال است كه در مدارهاي مختلف براي كنترل استفاده می‌شود. یا نام تکنیکی در الکترونیک است که استفاده گسترده‌ای در صنایع الکترونیک و مخابرات دارد. از این روش برای کارهایی مانند کدینگ پیام‌های مخابراتی، کنترل توان دستگاه‌های الکتریکی، شارژ باتری و … استفاده می‌شود.

در میکروکنترلر ها نیز PWM برای مصارف مختلفی مانند کنترل نور LED ها (Fade کردن نور LED)، کنترل سرعت موتورهای DC, انتقال پیام، مبدل‌های ولتاژ و …. استفاده می‌شود. در اصل PWM موجی مربعی است که در برخی زمان‌ها ۰ و برخی زمان‌ها ۱ است و این ۰ و ۱ شدن‌ها با فرکانس مرتبی تکرار می‌شود. PWM مانند سایر امواج، دارای دامنه یا Amplitude، دور تناوب یا Period و فرکانس است. عبارت دیگری که در PWM مورداستفاده قرار می‌گیرد Duty Cycle است. دیوتی سایکل مدت‌زمان ۱ بودن به مدت‌زمان کل پریود در هر سیکل موج است که معمولاً برحسب درصد (%) نمایش داده می‌شود. به فرض مثال اگر Duty Cycle یک موج PWM برابر با ۴۰% باشد بدان معنی است که در هر سیکل ۴۰% ولتاژ برابر VCC و در ۶۰% اوقات ولتاژ برابر ۰ است. همان‌گونه که می‌دانید در چنین حالتی ولتاژ مؤثر یا Vrms برابر با ۴۰% VCC خواهد بود. به فرض مثال شما اگر با یک میکرو با تغذیه ۵V، موج PWM با دیوتی سایکل ۵۰% ایجاد نمایید ولتاژ RMS شما برابر ۵۰% VCC یا به عبارتی ۲٫۵ ولت خواهد بود. در شکل تعدادی موج PWM با فرکانس ثابت و دیوتی سایکل متفاوت نمایش داده‌شده است.

6 پین از 14 پین دیجیتال در آردوینو UNO به‌صورت PWM هم کار می‌کنند. پین‌های 3، 5، 6، 9، 10 و11 است.

4. ارتباط SPI و I2C

هر سنسوری برای برقراری ارتباط با پردازنده از یک پروتکل استفاده می‌کند. بعضی مواقع از SPI و در بعضی‌ مواقع از I2C استفاده می‌شود. روی برد آردوینو برای هرکدام از این دو پروتکل ارتباطی، پین‌های مشخصی در نظر گرفته‌شده است. برای تشخیص ارتباط I2C ، کافی است به پین‌ها نگاه ‌کنیم اگر در سنسور SCL و SDA موجود باشد، ارتباط از نوع I2C است، که برای این ارتباط در آردوینو UNO از پین‌های آنالوگ A4 و A5استفاده می‌کنیم نکته قابل‌توجه این است مدل‌های دیگر آردوینو دقیقاً پین‌هایی به اسم‌های SCL و SDA دارند.

برای تشخیص ارتباط SPI کافی است به پین‌ها نگاه کنیم اگر در سنسور MOSI و MISO موجود باشد، دربرد آردوینو پین‌های دیجیتال 10 و 11 و 12 و 13 مخصوص پروتکل SPI هستند. توجه داشته باشید در ارتباط SPI 4 سیم باید به آردوینو وصل شود به همین دلیل ما 4 پین را معرفی کرده‌ایم.

5. پین دیجیتال شماره 13

این پین در آردوینو به دلیل اینکه یک LED به آن وصل شده است خاص بوده، گاهی پروژه‌هایی که داریم لازم بوده برای آلارم یا حتی چک کردن یک LED روشن خاموش شود از این پایه استفاده می‌کنیم.

6. پین‌های آنالوگ :

پین بالا ورودی‌های آنالوگ برد آردوینو است که بانام‌های A0 تا A5 مشخص‌شده‌اند. بعضی سنسورها مثل فوتوسل آنالوگ هستند، یعنی داده‌ها به‌صورت پیوسته تغییر می‌کند. بدون شک داده این سنسورها را با پایه دیجیتال نمی‌توان خواند باید به پایه‌های آنالوگ وصل کنیم، خروجی سنسور وارد یک مبدل آنالوگ به دیجیتال(ADC) ده بیتی می‌شود و عددی بین 0 تا 1023 به‌عنوان داده سنسور مورداستفاده قرار می‌گیرد. این در شرایطی هست که سنسور با ولتاژ 5 ولت کار می‌کند ( یعنی ماکزیمم ولتاژ قابل‌تحمل آن 5 ولت است). وقتی ولتاژ قابل‌تحمل سنسور پایین‌تر باشد (مثلاً 3.3 ولت) لازم است آن ولتاژ به پایه AREF هم داده شود تا ولتاژ ورودی مرجع آنالوگ به 3.3 ولت تغییر کند با این کار رزولوشن تبدیل آنالوگ به دیجیتال بالاتر می‌رود. زمانی که تعداد ورودی‌های دیجیتال بیشتر از 13 پایه باشد ما می‌توانیم به پایه A0 پایه شماره 14 دیجیتال و تا آخر به A5 پایه دیجیتال 19 را وصل کنیم. با این کار دقیقاً 20 پایه دیجیتال داریم که با کم کردن پایه 0 و 1 (به خاطر آپلود کردن کد) عملاً 18 تا پایه دیجیتال ایجاد می‌شود.

کلید ریست :

گاهی اوقات درروند اجرای یک پروژه لازم است برنامه از اول در هر زمان یا در هرروز پاک شود و از نو اجرا شود که این عمل به‌صورت سخت‌افزاری و نرم‌افزاری می‌توان انجام داد، به‌صورت سخت‌افزاری کلید ریست را فشار می‌دهیم یا می‌توانیم از پین ریست استفاده بکنیم. پین ریست به‌محض دریافت سطح منطقی صفر مدار را ریست می‌کند و برنامه از اول شروع به کار می‌کند، درهرصورت از هر روشی که استفاده کنیم برنامه از اول اجرا می‌شود. این موارد در تمام بردهای آردوینو ثابت است ولی ممکن است تعداد ورودی و خروجی آنالوگ و دیجتال در هر مدل از این بردها متفاوت باشد.

برای ادامه کار لطفا به بخش دانلودها و گزینه آموزش برنامه نویسی با آردوینو مراجعه گردد.