جلسه پانزدهم : رسم نمودار ( پلات ) با استفاده از آردوینو

سلام
تو این جلسه قصد دارم بهتون یاد بدم چجوری با استفاده از آردوینو نمودار رسم کنید. چیزی که شاید خیلی از جاها به دردتون بخوره . ورژنای قدیمی نرم افزار آردوینو این امکان رو نداشت که بتونیم باهاش پلات کنیم (نمودار رسم کنیم ) ولی خب تو ورژنای جدید (از 1.6.6 به بالا) شکر خدا عقلشون کار کرده و این آیتم رو گذاشتن. یعنی ما تنها با استفاده از نرم افزار آردوینو و بدون نیاز به نصب هیچ نرم افزاری می تونیم نمودار تغییرات رو ببینیم.

یه توضیح کلی: اول بزارید ببینیم این امکانی که داریم ازش حرف می زنیم کجای نرم افزاره . از منوی Tools وارد Serial plotter میشیم:
2016-01-24_13-07-57
همونطور که می بیند اسم این آیتم سریال پلاتر هست و ما هم از این به بعد به این آیتم پلاتر میگیم. یه نمای کلی هم بخواید ازشکل رسم نمودارش ببینید این شکلیه:
2016-01-24_13-12-32

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

ما هم نمودار دیجیتال رو رسم می کنیم هم نمودار آنالوگ رو.
اول سوئیچ مدار و کد جلسه سیزدهم رو آماده کنید. مدار آخر رو ببندید که با دیبانس نوشتیم. همچین کدی داشتیم اگه یادتون باشه (البته من برای این که کد کوتاه بشه خط های کامنت ها رو پاک کردم)
2016-01-24_13-33-50

ما تو این کد برای این که ارتباط سریال داشته باشیم لازمه یه تغییراتی رو توی کد نویسیمون اعمال کنیم.
2016-01-24_13-39-31
چون لازم داشتیم ارتباط سریال استفاده کنیم خب تو تابع setup کانفیگش کردیم. اگه یادتون باشه گفتیم اساس کار سریال پلاتر ارتباط سریال هست که خدارو شکر تو آردوینو ایجاد ارتباط سریال بین آردوینو و کامپیوتر فقط با یک خط کد انجام میشه یعنی دستور Serial.print. هر آرگومانی که توی این دستور نوشته بشه عینا به صورت سریال (از طریق همون کابل USB که بین آردوینو و کامپیوتر هست ) به کامپیوتر شما ارسال میشه. بنابراین توی این کد هر جا منطق پین دیجیتال شماره 2 صفره ما هم 0 رو سریال پرینت می کنیم هر جا منطق پین یکه ما هم 1 رو سریال پرینت می کنیم.

خب کد رو آپلود کنید و از همون مسیری که گفتم سریال پلاتر رو باز کنید.
با همچین صفحه ای مواجه میشید که به محض فشار دادن کلید به تغییر تو نمودار به وجود میاد.


دقت کنید در فیلم جاهایی که یهو یه تغییر دامنه داریم لحظاتی هست که کلید رو فشار دادیم.

این مدل دیجیتالش حالا مدل آنالوگ.
جلسه چهاردهم رو یادتونه ؟ همون مدار و همون کد رو عینا بیارید.
اگه یادتون باشه تو اون جلسه داده های پتانسیومتر رو روی کنسول سریال می دیدیم پس هیچ احتیاجی به تغییر کد نخواهیم داشت. همون کد رو آپلود کنید و سریال پلاتر رو باز کنید.

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

اما این سریال پلاتر عزیز ما یه مشکل داره و اونم اینه که همزمان که سریال پلاتر بازه کنسول سریال قبلی رو نمیشه باز کرد . در عین واحد فقط یکیش می تونه کار کنه که امیدواریم یه راه حلی واسه این مشکل بعدا پیدا کنن.

پایان جلسه

جلسه یازدهم : میکروسوئیچ

به نام خدا
سلام به دوستان

راستش قصد داشتم جلسه بعد برم سراغ سروو . ولی یه کم فکر کردم دیدم هنوز پروژه بیس زیاد داریم که بهتره اول اونا رو بگم بعد بریم سراغ سروو و ادامه ماجرا.
یه روند جدید: اول هر کاری که میشه با پین های دیجتال آردوینو کرد رو یاد میگیریم بعد میریم سراغ آنالوگ ها.
تا الان هر پروژه ای که انجام دادیم از پین های دیجیتال آردوینو به صورت خروجی استفاده کردیم. مثلا موقعی که یه LED ساده روشن کردیم، یا موقعی که RGB LED روشن کردیم و یا تو پروژه آخر یعنی موتور DC. همه جا پین دیجیتال خروجی بود یعنی ما ( آردوینو ) به فلان پایه دستور می دادیم 0 شو، یا 1 شو یا در مواقع pwm عدد متغیر می دادیم( انشاءالله که یادتونه).

الان نه! می خوایم از پایه دیجیتال بخونیم. فرض کنید یه سنسور دیجیتال داریم مثلا تشخیص حرکت . روش کار این سنسور دیجیتال اینطوریه که اگه کسی از جلوش رد بشه 1 رو بر میگردونه و در حالت عادی هم روی پایه سیگنالش 0 می افته. حالا این سنسور با این شرح عملکرد تو محیط قرار گرفته. اگه بخوایم داده سنسور رو با استفاده از آردوینو بخونیم مسلما باید بریم سراغ پین های دیجیتال ( چون سنسور دیجیتاله) و پین دیجیتال رو به عنوان ورودی استفاده کنیم . حالا این که اصن چرا اصرار دارم ورودی باشه؟
ببینید وقتی می خواستیم یه LED رو روشن کنیم ما دستور می دادیم که روش بشه در نتیجه فرمان دهنده ما بودیم. الان داستان کاملا برعکسه. الان سنسور داره دستور میده . وقتی روی پایه سیگنالش عدد 1 بیفته یعنی داره خبر میده که یکی از جلوش رد شده. بنابراین ما در نقش پذیرنده فرمان هستیم و به همین علت ساده پین دیجیتال متصل به سنسور از نوع ورودی تعریف میشه.

حالا تو این جلسه به جای این که از سنسور به عنوان تولید کننده پالس دیجیتال استفاده کنیم از سوئیچ استفاده می کنیم. سوئیچ ها خیلی متنوع هستن چند نمونش رو ببینید:
tact-switch-500x500push-switches-250x250

ولی ما از هیچ کدوم اینا استفاده نمی کنیم. از این ماژول استفاده می کنیم.
5-Way_Tactile_Switch-500x5005-Way_Tactile_Switch_2-500x500

سوئیچ های معمولی فقط بهت میگن فشار داده شدن یا نه ولی این سوئیچ علاوه بر اون قابلیت بهت میگه در کدوم جهت فشار داد شده. اگه به عکس پشت ماژول نگاه کنین علاوه بر پایه VCC (پایه ولتاژ) و GND (زمین) 5 تا پایه دیگه هم بیرون کشیده شده که به این صورتن:
Right (راست)، Down (پایین)، Left (چپ)، Center (مرکز) و Up (بالا).
حالا اگه کلید به سمت بالا فشار داده بشه پایه منطق پایه Up یک میشه ( از نظر ولتاژی یعنی ولتاژ این پایه ماژول 5 ولت میشه ) ، اگه کلید به سمت چپ فشار داده بشه پایه منطق پایه Left یک میشه و الی آخر.

برای اتصال این ماژول به آردوینو باید علاوه بر اتصال VCC و GND ، بقیه پین ها رو به 5 تا پین دیجیتال وصل کنیم.
اگه یادتون باشه (آیا؟) جلسه های قبل برای اتصال LED و موتور با یه سوال بزرگ مواجه می شدیم و سوال این بود که آیا به هر پین دیجیتالی می تونیم وصل کنیم؟ اونجا متناسب با پروژه جواب فرق داشت یا آره بود یا نه بود. اما تو مقوله استفاده از پین دیجیتال به عنوان ورودی هیچ استثنایی وجود نداره و از هر پین دیجیتالی میشه استفاده کرد بنابراین راحت باشید.

بنابراین اتصال ماژول به آردوینو به صورت زیر خواهد بود:
tactile

5 تا پین دیجیتال استفاده شده در این مدار می تونن هر 5 پین دیجیتال دلخواهی باشن.
مدار رو بستید؟
تمام؟
خب میریم سراغ کد نویسی
نرم افزار آردوینو رو باز کنید تا شروع کنیم.
پروژه ما اینه: هر جهتی که سوئیچ فشار داده شد تو کنسول آردوینو اون جهت نوشته بشه، مثلا اگه کلید به سمت پایین فشار داده شد تو کنسول نوشته بشه Down.
قدم اول نوشتن هدر برنامه هست:
ببینید تو هدر برنامه صرفا معرفی می کنیم، حالا این معرفی میتونه پین های مورد استفاده باشه، می تونه کتابخونه های مورد استفاده باشه و یا متغیرهایی که در طول برنامه قراره روشون کار کنیم. تو این پروژه ما از هیچ کتابخونه خاصی استفاده نمی کنیم بنابراین فقط پین هایی رو که استفاده کردیم براشون اسم انتخاب می کنیم(همون معرفی)
مثلا شماره پینی که به پین راست ماژول سوئیچ وصل شده پین شماره 6 آردوینو هست. تو هدر برنامه اسم این پین رو right_pin گذاشتیم. با این کار تا آخر برنامه هر بار با این پین کار داشته باشیم از اسم right_pin استفاده می کنیم. در مورد 4 پین دیجیتال دیگه هم همین قانون حاکمه.

2015-12-16_13-38-43

مرحله بعد تابع setup هست. قرارمون این بود که هر چی کانفیگ داریم رو بزاریم تو این تابع. الان چند تا کانفیگ داریم یا به زبون دیگه چیا رو باید کانفیگ کنیم؟
چون قراره خروجی کار رو تو کنسول ببینیم یکی از کانفیگ ها تنظیم نرخ داده (Baude Rate) هست که روی 9600 تنظیمش می کنیم.
از طرف دیگه داریم 5 تا پین دیجیتال رو استفاده می کنیم که طبق قوانین مطرح شده تو جلسات قبل لازمه ورودی بودنشون تو تابع setup بیان بشه.
بنابراین دو تا کانفیگ لازم داریم که به صورت زیر کد نویسی می کنیم:
2015-12-16_13-42-48

و اما تابع loop:
خب روند کار تو این تابع اینطوری هست که اول مقدار پایه دیجیتال رو می خونیم و توی یه متغیر نگهش می داریم .اگه مقدار 1 بود ( که یعنی کلید فشار داده شده) کامند مناسب اون رو تو کنسول چاپ می کنیم. من کد برای یه پین رو می نویسم که به صورت زیر میشه:
2015-12-16_13-53-21
کد رو با 4 قسمت مختلف از هم جدا کردم که تک به تک میریم جلو:

1.هر خطی که با دو تا اسلش شروع بشه (//) جزء دستور و خط برنامه به حساب نمیاد و اصطلاحا بهش میگن کامنت (بعدا خودمون هم کامنت میزاریم)
2.روند رو یادتونه؟ گفتم اول پایه دیجیتال آردوینو رو می خونیم. تو این خط برنامه دقیقا داریم همین کار رو می کنیم. به کمک دستور digitalRead مقدار پین دیجیتال رو می خونیم. همونطور که میبیند این دستور یه ورودی داره که همون پین دیجتالی هست که قراره خونده بشه. الان تو ورودی تابع right_pin نوشته شده که اسم دیگه همون پین دیجیتال شماره 6 هست. مقدار خونده شده توسط دستور digitalRead (که یا 0 هست یا 1) درون متغیر right_value ریخته شده.
3.قدم بعد باید چک کنیم داده خونده شده از پین دیجیتال 1 بوده یا نه؟ هر جا شرطی ایجاد میشه یعنی تابع if : الان تو تابع if گفتیم اگه مقدار متغیر right_value ( که همون داده پین دیجیتال رو داره) مساوی با 1 بود (یعنی کلید به سمت راست فشار داده شده بود) بیا کل دستورهای بین دو آکولاد رو اجرا کن.
2015-12-16_14-06-23
4.در صورتی که کلید به سمت راست فشار داده شده باشه بنابراین برنامه وارد این تابع if میشه و با دستور Serial.println ما کلمه Right رو توی کنسول چاپ می کنیم و تمام.

همونطور که گفتم این فقط مال یک پین بود برای 4 تا پین دیگه منطق کد نویسی دقیقا به همین شکل هست. اگر در ادامه دادن برنامه مشکل داشتید کافیه تو انجمن مطرح کنید.

جلسه نهم : راه اندازی ال ای دی RGB

سلام و عذر خواهی بابت تاخیر در آپلود کردن جلسه ها.
این جلسه قصد داریم در مورد ال ای دی های RGB حرف بزنیم. این که منطق کارشون چیه و با آردوینو چطوری باید راه اندازیشون کنیم.

خب اول میریم سراغ معرفی خود این ال ای دی ها. برای این که با تکنولوژی RGB آشنا بشید یه سری به این لینک بزنید و برگردید.

LED-RGB-8CD5kCA

قسمت اول ماجرا با کمک دوستان حل شد. میریم سراغ کار اصلی خودمون اتصال این ال ای دی به آردوینو. همونطوری که تو عکس بالا می بینید 4 تا پایه داره. سه پایه مربوط به رنگه و یک پایه مربوط به زمین. مسلمه که گراند(زمین) به گراند آردوینو وصل می شه، میمونن اون سه تا پایه. اون سه تا پایه باید به پین های دیجیتال آردوینو وصل بشن ولی سوالی که پیش میاد اینه که به هر پین دیجیتال دلخواه یا یه سری پین خاص. برای این که بفهمیم باید چیکار کنیم یه کم توضیح میدم:

ببینید ما یه موقع میخوایم رنگ سفید تولید کنیم. برای تولید این رنگ باید از سه رنگ قرمز، سبز و آبی با درصد های مساوی استفاده کنیم. یه موقع می خوایم رنگ بنفش تولید کنیم. برای رنگ بنفش درصد رنگ سبز با درصد رنگ قرمز صد در صد مساوی نیست (طبق قانون ترکیب رنگ ها ). حالا، گفتیم که پین های ال ای دی به پین های دیجیتال آردوینو وصل میشن. اگه قرار باشه مثل پروژه های قبل با دستور digitalWrite کار کنیم نمی تونیم برای هر رنگ درصد قائل بشیم و رنگ های مختلف ایجاد کنیم علتش اینه که وقتی می نویسیم (digitalWrite(8,HIGH داریم ولتاژ ( دقت کنید ولتاژ ) پین 8 رو 5 ولت می کنیم. وقتی می نویسیم (digitalWrite(8,LOW داریم ولتاژ این پایه رو صفر می کنیم. ما برای تولید رنگ بنفش ولتاژی که به سه تا پایه میدیم نباید مساوی باشه بلکه مثلا یکی باید 5 باشه یکی باید 3 باشه یکی باید 1.5 باشه. خب چاره چیه؟ چجوری ولتاژ متفاوت تولید کنیم؟

راه حل استفاده از PWM هست. اول یه سری به این لینک بزنید و ببینید که PWM چیه؟
با کمک منطق PWM و کد نویسی می تونیم یه کاری بکنیم که روی پایه های دیجیتال ولتاژ های بین 0 و 5 ولت بیفته. دستوری که با کمک اون از PWM استفاده می کنیم دستور analogWrite هست. مثلا (analogWrite(9,255
این دستور دو تا آرگومان داره. آرگومان اول شماره پین دیجیتال مورد نظره. آرگومان دوم یک عدد در بازه 0 تا 255 هست. وقتی صفر میدیم روی پایه دیجیتال شماره 9 ولتاژ 0 ولت می افته وقتی 255 می نویسیم روی پایه دیجیتال 9 ولتاژ 5 ولت می افته. یعنی یک تناسب بین عدد آرگومان دوم ما و ولتاژی که روی پین دیجیتال می افته وجود داره. حالا اگه قرار باشه ولتاژ 2.5 ولت روی پین 9 بیفته به جای 255 عدد 127 رو می نویسیم. یعنی میشه (analogWrite(9,127.
حالا آیا میشه به جای این پین شماره 9 هر پین دیجیتالی رو نوشت؟ جواب منفیه! پین های دیجیتالPWM آردوینو خاص هستن مثلا روی آردوینو UNO پین های PWM پین های شماره 3, 5, 6, 9, 10 و 11 هستن و تنها از این پین ها استفاده میشه. برای این که راحت تر پیداشون کنین روی برد کنار پین های PWM یه علامت مد کشیده شده:
dsku-fidhsfudhsfdsfidhsi00001
تا این جای جلسه منطق حاکم بر پروژه رو گفتیم الان میریم سراغ انجام خود پروژه عملیمون: می خوایم سه رنگ اصلی (قرمز، سبز وآبی ) رو با توالی 1 ثانیه روشن کنیم. مداری که استفاده می کنیم به صورت زیره:
learn_arduino_fritzing

دقت کنید که سه تا مقاومت به صورت سری در مدار قرار گرفته، این یه تکنیک برای افزایش طول عمر ال ای دی هاست.
خب مدار رو بستید؟ حله؟ بریم سراغ کد نویسی:

2015-09-13_11-45-17

اگه دقت کنید این کد به 4 بخش تقسیم شده. بخش اول هدر برنامه هست که متغیر های گلوبال رو توش تعریف کردیم (قبلا هم تاکید کردم حتما یه سری به برنامه نویسی بزنید). الان ما تو هدر برناممون اومدیم شماره پین های PWM مورد نظرمون رو (یعنی 9 و 10 و11) ریختیم توی سه تا متغیر. فایده این کار چیه؟ آخر برنامه میگم 😆

قسمت دوم برنامه که تابع setup هست اومدیم پین های دیجیتال استفاده شده رو output کردیم با این کار پین های دیجیتالمون رو کانفیگ کردیم.

قسمت سوم تابع RGB هست. اومدیم یک تابع نوشتیم که به وسیله اون رنگ ال ای دی RGB مون رو تغییر میدیم. به فرم نوشتن تابع دقت کنید. تابع سه تا ورودی اینتیجر گرفته که مقادیر پین های دیجیتال هستن. این مقادیر با دستور analogWrite توی پین های دیجیتال ریخته میشن.

و اما قسمت چهارم، تابع LOOP. توی این تابع 6 بار تابع RGB صدا زده میشه. دفعه اول (RGB(200,0,0 صدا زده میشه و با این کار نور قرمز روی ال ای دی با قدرت 200 ظاهر میشه (دقت کنید اگه به جای 200، 255 میزاشتیم با توان بیشتری ال ای دی روشن میشد ولی برای جلوگیری از خطر کور شدن میزاریمش 200 حتی شما اگه بزارینش 100 بازم بهتره). بعد تابع delay رو داریم که مدت 1 ثانیه صبر میکنه و تو این یک ثانیه رنگ ال ای دی قرمزه. بعد از delay تابع (RGB(0,0,0 رو داریم. با این دستور داریم ال ای دی رو خاموش می کنیم تا برای مرحله بعد که تولید رنگ سبزه آماده بشه. تا آخر تابع loop همینطوری پیش میره و رنگ ها یکی پس از دیگری نمایش داده میشن.

پروژه ما اینجا تموم شد. اما:
1.اگه خواستید رنگ سفید درست کنید چون باید هر سه رنگ به یک میزان وجود داشته باشن از دستور (RGB(200,200,200 استفاده کنید.
2.اگه یادتون باشه تو هدر برنامه گفتم شماره پین ها رو می ریزیم تو متغیر. فایده این کار چیه ؟ فرض کنید به هر دلیلی پین شماره 10 آردوینو شما سوخت و شما تصمیم گرفتید به جای استفاده از پین PWM شماره 10 از پین PWM شماره 6 استفاده کنید. علاوه بر این که از لحاظ سخت افزاری باید تغییر مورد نظر رو انجام بدید باید توی کدنویسی تون هم این تغییر رو لحاظ کنید. الان که شماره پین تو هدر برنامه تعریف شده شما فقط و فقط همون خط معرفی پین شماره 10 رو به پین شماره 6 تغییر می دید. ولی اگه تو هدر برنامه شماره پین رو تو متغیر نریخته بودیم برای این تغییر لازم بود هم توی دستور pinMode هم توی دستور analogWrite عدد 10 رو به 6 تغییر می دادید. البته ما الان کدمون بیست خط هم نیست ولی وقتی خطوط کد نویسی زیاد بشه این کار خیلی به چشم میاد.

پایان جلسه

جلسه هشتم: آموزش Burn کردن بوت لودر آردوینو

 

سلام
تو این جلسه قصد داریم یاد بگیریم چجوری بوت لودر بردهای آردوینو رو به ساده ترین روش ممکن Burn کنیم. خب این وسط مساله اصلی اینه که بوت لودر چیه؟ برای آشنایی با بوت لودر اینجا یه دوری بزنید و بیاید.

برای Burn کردن بوت لودر به یه پروگرامر avr احتیاج داریم. این پروگرامر می تونه هر چیزی باشه. مثلا usbtiny یا stk500 یا usbasp و یا هر پروگرامر مناسب دیگه ای. ما تو این جلسه از پروگرامر ارزون usbasp استفاده می کنیم.
ATMEL_AVR_Programmer_USBisp-500x500

این پروگرامر رومیتونید از آفتاب رایانه بخرید. فقط و فقط یه داستانی داره و اون اینه که لازم firmware مربوط به این پروگرامر رو آپدیت کنید. آموزش این کار هم تو انجمن هست خیلی راحت و ساده.

خب تا این جا فقط داشتیم پروگرامر رو مهیا می کردیم. این قسمت قراره پروگرامر رو به برد آردوینو وصل کنیم. برای این کار از پین های ICSP آردوینو استفاده می کنیم. پین هایی که میگیم ( و توی شکل زیر مشخص شده) 6 تا پین هدر مربوط به ارتباط SPI میکرو هست.
ArduinoUno_r2_front450px

برای وصل کردن پروگرامر usbasp به آردوینو از شکلهای زیر استفاده کنید:
USBasp_ISP_KANDA

ArduinoUno_R3_Pinouts

دقت کنید که پین های متناظر باید به هم وصل بشن. یعنی مثلا miso به miso، زمین (GND) به زمین، Vcc به Vcc و الییییی آخر. اما این وسط یه نکته کلیدی داریم. به پین های usbasp ردیف پایین دقت کنید. 4 تا گراند (زمین) داره. شاید تو دید اول فکر کنین همه این 4 تا گراند به هم وصلن در صورتی که اصلا اینطور نیست. از بین این 4 تا فقط دو تا گراند سمت چپ به هم وصلن و اون دوتای دیگه نه به هم وصلن نه به این دو تا. بنابراین تنها نکته کلیدی برای موفقیت اینه که همه این گراندها رو به هم  وصل کنید.
خب بخش سخت افزاری تموم شد از این جای داستان به بعد به بخش نرم افزاری می رسیم. usbasp رو بزنید به پورت USB کامپیوترتون. ازتون برای نصب درایور می خواد. این درایور. اگه بلد نیستید درایور نصب کنید برید اینجا قدم به قدم باهاش پیش برید.

بعد از نصب درایور وارد محیط آردوینو بشید. از منوی Tools وارد Board بشید. این جای داستان خیلی مهیجه. اگه قصد دارید بوت لودر مربوط به UNO رو Burn کنید نوع بردتون رو UNO بزارید. اگه قصد دارید بوت لودر مربوط به MEGA رو Burn کنید نوع بردتون رو MEGA انتخاب کنید و الی آخر.
SDSD

مرحله بعد توی همون منوی Tools وارد گزینه Programmer بشید و usbasp رو انتخاب کنید:
dfdf

و اما قدم آخر:
گزینه burn bootloader رو بزنید.
121212121212

دو تا عکس آخر مراحل burn شدن رو نشون میده:
sasasasass
daddaddad

اینم از burn کردن بوت لودر به ساده ترین روش ممکن. البته این راه تنها راهی نیست که بشه باهاش بوت لودر burn کرد. مثلا اگه از پروگرامرهای usbtiny استفاده کنید نصف راهی که اومدیم خودش آماده و حاضره. مستقیم وصلش می کنیم به آردوینو و burn می کنیم.

جلسه هفتم: کنسول به عنوان ورودی

جلسه قبل از کنسول به عنوان خروجی استفاده کردیم یعنی یه سری پیغام رو تو کنسول چاپ کردیم. این جلسه روند معکوس میشه یعنی تصمیم داریم از کنسول به عنوان ورودی استفاده کنیم و از اون داده دریافت کنیم. برای وارد کردن پیغام در کنسول آردوینو از قسمت بالای کنسول استفاده می کنیم. Untitled3-300x229 خب شروع می کنیم به کد نویسی. طبق معمول اول باید نرخ ارتباط سریال رو کانفیگ کنیم. این دفعه Baude Rate رو به جای 9600 روی 115200 تنظیم می کنیم. البته هیچ اصراری نیست که Baude Rate رو تغییر بدید صرفا محظ تنوع این کارو می کنیم.ddهدفمون تو این برنامه این هست که اول از کنسول سریال یه داده دریافت کنیم بعد همون رو توی کنسول چاپ کنیم. روند کد نویسی برای خوندن از کنسول سریال به این صورته که اول چک میکنیم اصلا داده ای برای دریافت وجود داره یا نه! اگر داده ای دریافت شده بود اون رو بر می داریم و توی کنسول چاپ می کنیم اگر نه خب هیچی. 

دستوری که معین میکنه اصن داده برای دریافت وجود داره یا نه Serial.available هست. خروجی این دستور تعداد کاراکترهای دریافتی از کنسوله. برای این که بدونیم اصن داده ای توسط کنسول سریال دریافت شده یا نه کافیه همین دستور رو بنویسیم و چک کنیم که آیا خروجیش بزرگتر از صفر هست یا نه. اگر بزرگتر از صفر بود که یعنی یه داده اومده توکنسول سریال و آماده خوندنه اگر نه یعنی هیچ داده ای دریافت نشده. همین شرطی که میذاریم (خروجی دستور بزرگتر از صفر هست یا نه)  تو عالم کدنویسی یعنی استفاده از دستور if . فرم کد نویسی این دستور میشه این شکلی: Untitled درمورد ساختار دستور if حتما یه مطالعه ای بکنید. حالا فرض کنید شرط if برقرار باشه یعنی تو بافر ارتباط سریال داده وجود داشته باشه، وقتشه که اون داده خونده بشه. بدون شک دستور خوندن باید تو تابع if و درون کروشه های تابع if نوشته بشه چون عملا اگه داده ای برای خوندن وجود نداشته باشه خب خوندنش کار بیخودیه. محل مورد نظر ما توی شکل نمایش داده شده: Untitledو اما قدم نهایی: خوندن داده. دستوری که باهاش می خونیم Serial.read هست. خروجی این دستور یک کاراکتر هست. یعنی وقتی این دستور رو می نویسیم کامپایلر میره اولین کاراکتر عبارت ما رو برمیگردونه. مثلا اگه aftab رو نوشته باشیم با دستورSerial.read کاراکتر a برگردونده میشه.  حالا این که ما چجوری از خروجی این تابع استفاده کنیم باز هم برمیگرده به قوانین برنامه نویسی. یه قانون داریم به نام معرفی متغیر. اگه لینک رو مطالعه کردید میدونید که ما به هر متغیر میتونیم یه مقدار انتساب بدیم. مثلا من متغیرم رو از نوع char در نظر میگیرم. اسمشم میزارم data. حالاباید بهش مقدار بدم. مقدار این متغیر رو خروجی دستور Serial.read (یعنی همون یه کاراکتر) در نظر میگیرم. بنابراین دستور من به فرم زیر در میاد. Untitled الان در حال حاضر در صورتی که داده ای توی بافر سریال وجود داشته باشه توسط دستور Serial.read خونده میشه. خیلی خیلی دقت کنید نوع متغیر رو از نوع char در نظر گرفتیم. در نهایت برای چاپ عدد توی کنسول از دستور ؟؟؟؟؟؟؟؟ استفاده میکنیم. طبق آموزش های جلسه قبل جای علامت سوال ها با دستور Serial.println پر میشه. بنابراین ورژن نهایی کد میشه عکس زیر: Untitled اما کسایی که دقیقن میتونن درک کنن چرا کنار دستور Serial.println یه فلش خورده. جلسه قبل گفتیم فرمت دستور Serial.println اینطوریه که هرچیزی به عنوان آرگومانش بخواد در نظرگرفته بشه باید توی علامت دبل کوتیشن گذاشته بشه (علامت “”) پس چرا الان علامت دبل کوتیشن نذاشتیم ؟ اگه من میخواستم دقیقا عبارت data رو توی کنسول چاپ کنم باید علامت دبل کوتیشن رو رعایت می کردم و کد رو به همون صورت قبل می نوشتم. اما الان قرار نیست همچین کاری بکنم الان data بعنوان یه متغیر تعریف شده و من میخوام مقداری که توی متغیر data هست رو چاپ کنم. طبق قانون دستور Serial.println برای چاپ عبارت داخل یه متغیر (مثل متغیر data) علامت دبل کوتیشن نباید گذاشته بشه. خب کد رو اپلود کنید و کنسول سریال رو باز کنید. الان قسمت بالای کنسول عدد 5 رو تایپ کنید و دکمه send رو بزنید (یا enter کنید).
Untitled
وقتی اینتر کنید باید توی کنسول سریالتون عدد 5 تایپ بشه مثل شکل زیر:
Untitled
یه نکته توی عکسه باید بهش دقت کنید. baud rate روی 115200 باید تنظیم باشه. اگه به اشتباه baude rate رو روی 9600 گذاشته باشید هر چقدر 5 تایپ کنید و enter بزنید فقط یه سری داده پرت و پلا دریافت می کنید بنابراین دقت کنید که baude rate ای که تو دستور Serial.begin انتخاب می کنید با baude rate ای که توی کنسول انتخاب می کنید مساوی باشه.
به همون صورت قبل حرف a رو تو قسمت ورودی کنسول تایپ کنید و اینتر بزنید همون موقع حرف a برای شما تایپ میشه.
حالا قسمت جالب انگیز ماجرا:
بیاید قسمت ورودی کنسول تایپ کنید aftab و اینتر بزنید. وقتی بخواد تو کنسول چاپ کنه با شکل زیر مواجه میشید.
Untitled

خیلی به این قضیه اصرار دارم. ببنید کل کلمه aftab پشت سر هم تایپ نشده بلکه هر کاراکتر تو یه خط چاپ شده. این قضیه خیلی مهمه. دلیل این اتفاقی که افتاده اینه که دستور Serial.read تنها و تنها یک کاراکتر رو بر میگردونه. بنابراین هر باری که وارد شرط if میشه یک کارکتر از کاراکترهای عبارت aftab چاپ میشه.

خب این جلسه هم تموم شد الان قابلیت این رو دارید که هر عبارتی رو تو کنسول چاپ کنید و ازش داده بگیرید.

دوستان عزیز بابت این تاخیری که توی این جلسه پیش اومد از همگی عذر خواهی می کنم. موفق باشید

پایان جلسه هفتم

جلسه ششم: استفاده از کنسول آردوینو

سلام رسیدیم به جلسه 6.
این جلسه میخوایم تمرکز کنیم روی کنسول آردوینو. تا حالا کنسول آردوینو رو باز کردید اصن؟ خب بیاید روی این آیتم: Untitled

وقتی که روی شکل کلیک می کنید وارد صفحه اصلی کنسول میشید. Untitled

خب اصن این کنسول به چه دردی میخوره؟
یکی از کاربردها استفاده از کنسول به عنوان نمایشگر هست. فرض کنید یه GPS داریم که میخوایم اطلاعات مربوط به اون رو مشاهده کنیم.یه راه اینه که LCD بزاریم و داده ها رو روش چاپ کنیم. یه موقع کاربری که داره کار می کنه نیازی نداره که داده روی LCD براش چاپ بشه همین که داده رو روی کامپیوتر ببینه براش کافیه. تو این شرایط بهترین و بی هزینه ترین روش اینه که از کنسول آردوینو استفاده کنه. یه نمونه از چاپ داده GPS رو میتونید تو شکل زیر ببینید: Read_data_from_serial_monitor

ما از همین ویژه گی کنسول برای دیباگ کردن برنامه هامون هم استفاده می کنیم. یه موقع پروژه اینه که داده های سنسور دما رو روی یه سون سگمنت چاپ کنیم. کد رو می نویسیم و آپلود می کینم. به ظاهر همه چیز خوب پیش رفته و کامپایلر هم ارور نداده ولی می بینیم روی سون سگمنت هیچ عددی نمایش داده نمیشه. یکی از احتمالاتی که وجود داره اینه که داده سنسور یه جایی از بین رفته باشه(خطای کد نویسی). با استفاده از همین کنسول سریال میتونیم خط به خط برناممون رو دیباگ کنیم و ببینیم کجا داده سنسور از دست رفته(در جلسه های بعد مثال عملی می زنیم).
بیاین یه مثال عملی بزنیم. یه کد بنویسیم که هر کسی اسمشو توی کنسول آردوینو چاپ کنه. خب اسکچ رو باز کنید. با این صحنه مواجه میشید: Untitled

قدم اول برای ایجاد ارتباط سریال بین آردوینو و کامپیوتر، تعیین کردن نرخ ارسال داده (Baude Rate) هست به عبارت دیگه باید نرخ ارتباط سریال رو کانفیگ کنیم. دستوری که باهاش این کار رو انجام میدیم Serial.begin هست. خب از اسم دستور معلومه یعنی کامپیوتر عزیز ارتباط سریال رو شروع کن. این دستور یه آرگومان عددی داره که بیانگر Baude Rate مربوط به ارتباط سریال هست مثلا 9600. بنابراین برای کانفیگ کردن ارتباط سریال بین آردوینو و کامپیوتر از دستور (Serial.begin(9600 استفاده می کنیم. حالا این دستور کجا باید نوشته بشه؟ توی setup یا loop ؟ این سوال رو خودتون باید بتونید جواب بدید. به خاطر این که داریم کانفیگ می کنیم و تنها یک بار لازمه این تنظیم رو انجام بدیم این دستور توی تابع setup نوشته میشه. Untitled

قدم بعد (قدم آخر) باید یه دستور بنویسیم که اسممون رو توی کنسول چاپ کنه. از دستور Serial.print یا Serial.println استفاده میکنیم. دستور Serial.print هر چیزی که به عنوان آرگومانش بهش داده بشه پشت سر هم چاپ می کنه میره. اما دستور Serial.println بعد از چاپ آرگومانش میره خط بعدی. این دستورها تنها یه آرگومان به عنون ورودی میگیرن که باید حتما توی علامت دبل کوتیشن نوشته بشه مثلا (“Serial.println(“aftab . حالا من میخوام هر بار که قراره اسمم چاپ بشه بره تو یه خط جدید اجرا بشه بنابراین از دستور Serial.println استفاده میکنم. خب بازم سوالی که پیش میاد اینه که دستور Serial.println کجا نوشته بشه؟ setup یا loop ؟ این دفعه بزارین هر دو مورد رو امتحان کنیم تا فرقشو کامل متوجه بشید. اول دستور رو میزاریم تو تابع loop. کد رو اپلود میکنیم.
Untitled

خروجی توی کنسول آردوینو به اینصورت میشه(نترسید): Untitled

همونطور که قبلا هم در موردش حرف زدیم دستوراتی که توی تابع loop نوشته میشن تا زمان ابد تکرار میشن و ادامه دارن.
حالا دستور رو توی تابع setup می نویسیم و آپلود می کنیم:
Untitled

و خروجی کنسول:
Untitled
می بینید که تنها و تنها یک بار چاپ میشه و تا هزار سال دیگه هم که بشینید هیچ خبری نمیشه. فکر کنم الان کاملا با تفاوت تابع setup و loop آشنا شده باشید.
حالا اگه خواستیم با فاصله زمانی یک ثانیه اسممون رو چاپ کنیم چطوری کد بنویسیم؟
Untitled

خب بدون شک میریم تو تابع loop ، دستورچاپ رو مینویسیم فقط یه تاخیر 1 ثانیه ای بینش قرار میدیم . با این کد نویسی اول تابع Serial.println اجرا میشه و روی کنسول نمایش داده میشه بعد به مدت 1 ثانیه روی همون دستور می ایسته و دوباره بر میگرده به اول تابع loop و تکرار روند.

پایان جلسه

جلسه پنجم: ساختار کدنویسی در اسکچ

با سلام
دوستان آردوینویی وارد جلسه پنجم میشم. این جلسه دنبال این هستیم که با ساختار کدنویسی در محیط برنامه نویسی آردوینو (اسکچ) آشنا بشیم. دقیق تر بگم هدفمون اینه که بگیم کد برنامه چشمک زن که جلسه قبل آپلود کردیم چجوری نوشته شده.

خب میریم وسط داستان. هر برنامه ای که برای آردوینو میخوایم بنویسیم دو قسمت مجزا داره. یکی تابع setup یکی تابع loop. دقت کنید تمام برنامه ها باید حتما شامل این دو تا تابع باشن. طرح خالی برنامه به این شکله:Untitled

حالا این که این دو تا تابع چی هستن و چیکار میکنن؟
اول تابع setup: به زبون نیمه علمی بخوام بگم کامپایلر آردوینو این تابع رو فقط و فقط 1 بار اجرا می کنه یعنی تمام خط های برنامه که توی این تابع نوشته میشن تنها 1 بار فراخوان میشن. خب این قسمت به چه دردی میخوره اصن؟ فرض کنید یه پروژه داشته باشیم که بخواد میزان الودگی هوای محیط یه کارخونه رو روی یه LCD نشون بده. همچنین تاکید کرده باشن که اول برنامه لوگوی اون کارخونه نمایش داده بشه. خب شما کافیه که دستور چاپ لوگوی اون کارخونه رو توی تابع setup قرار بدید، با این کار لوگو یک بار و تنها یک بار اونم اول برنامه نشون داده میشه.

setup یه کاربرد دیگه هم داره که اصطلاحا بهش میگن کانفیگ(config) کردن. کانفیگ کردن اینجا یعنی تنظیمات مربوط به قطعه هاتون رو توی همین تابع انجام بدید. مثلا فرض کنید دارید با ارتباط سریال با یه بلوتوث ارتباط برقرار میکنید. طبق خواص ارتباط سریال لازمه که نرخ تبادل اطلاعات (Baude Rate) رو تعیین کنید. برای این کار کافیه توی تابع setup این نرخ تبادل رو یه بار معین کنید.

میریم سراغ LOOP . این تابع تنها یه مفهوم داره: اجرا شدن تا ابد. روند اجرای دستورات در loop به این صورت هست که کامپایلر شروع میکنه به اجرای خط به خط برنامه ها. از خط اول شروع میکنه تا برسه به خط آخری که در تابع loop نوشته شده. وقتی رسید به خط اخر دوباره برمیگرده از خط اول و اجرا میکنه(دقیقا نقش همون (1)while توی کدنویسی avr در سایر برنامه ها).
برای درک بهتر فرض کنید یه ماهواره قراره اطلاعاتی که دریافت کرده رو به زمین مخابره کنه، تو ایستگاه زمینی برای دریافت اطلاعات از آردوینو استفاده شده باشه.برای دریافت اطلاعات در ایستگاه لازمه یه سری کد نویسی هایی در آردوینو انجام بشه. فرض کنید اشتباها کد دریافت داده تو setup گذاشته بشه. تو این شرایط ماهواره دائم داده میفرسته ولی ایستگاه زمینی ما (آردوینو) فقط یک بار اون داده رو گرفته بعدش دیگه هیچ کاری نمیکنه در حالی که ماهواره داره اطلاعات مخابره میکنه و تمام اون اطلاعات هم دارن از دست میرن. درستش اینه که کدهای مربوط به دریافت اطلاعات بیاد توی
loop قرار بگیره تا ارتباط همزمان ماهواره و ایستگاه برقرار باشه.

خب تا اینجا ساختار کلی کدنویسی آردوینو مطرح شد. از این جا به تمرکز می کینم روی کدهای برنامه چشمک زن.

دستور pinMode :

Untitled

یادتون هست تو جلسه های قبلی در مورد پین های دیجیتال و آنالوگ حرف زدیم. گفتیم 14 تا پین دیجیتال داریم که هم میتونن ورودی باشن هم خروجی. از اون طرف 6 تا پین آنالوگ داشتیم که فقط و فقط ورودی بودن. برای این که به آردوینو بفهمونیم قراره از این پین ها چجوری استفاده کنیم میریم سراغ دستور pinMode . این دستور دو تا آرگومان(ورودی) داره.

توی آرگومان اول بهش میگیم که داریم از کدوم پین استفاده می کنیم. اگه پین مورد استفاده دیجیتال بوده باشه عدد 0 تا 13 به عنوان آرگومان نوشته میشه. اگه از پین آنالوگ استفاده کرده باشیم A0 تا A5 نوشته میشه.
ورودی دوم تابع pinMode مربوط میشه به این که ما از پین (که در آرگومان اول معرفیش کردیم) چجوری داریم استفاده می کنیم. کلا 3 حالت وجود داره: INPUT , OUTPUT و INPUT_PULLUP . در صورتی که از پین دیجیتال استفاده کنیم یکی از سه حالت بالا میتونه اتفاق بیفته، ولی اگه پین استفاده شده آنالوگ باشه فقط و فقط INPUT مجاز خواهد بود.

نمیدونم حواستون بود یا نه دستور pinMode توی تابع setup نوشته شده. دستور pinMode از اون دستورایی هست که برای کانفیگ کردن استفاده میشه. در حقیقت ما با این دستور یک پین از آدوینو رو کانفیگ می کنیم.

دستور digitalWrite :
1
برای این که به پین های دیجیتال (دقت کنید پین های دیجیتال) مقدار داده بشه از دستور digitalWrite استفاده می کنیم. این دستور دو تا آرگومان داره. آرگومان اول شماره پین دیجیتال رو میگیره که چون بحث روی دیجیتاله میشه 0 تا 13. آرگومان دوم مقدار میگیره یعنی LOW و HIGH. اگه قراره روی پین مقدار 1 بیفته از HIGH و اگه قراره 0 باشه از LOW استفاده می کنیم.

دستور delay :
1

این دستور یه آرگومان عددی داره به این صورت که هر عددی که توش بنویسید بر حسب میلی ثانیه محاسبه میشه و آردوینو همون اندازه صبر می کنه. مثلا ما این جا نوشتیم (delay(1000 این یعنی به مدت 1000 میلی ثانیه (همون یک ثانیه) آردوینو صبر میکنه بعد خط بعدی برنامه رو اجرا میکنه.

امیدوارم دقت کرده باشید که دو تا تابع digitalWrite و delay توی loop نوشته شدن. یعنی اجرای این دستورها تا ابد ادامه خواهد داشت.

خب تا این قسمت از جلسه فقط تیکه تیکه اومدیم کد ها رو گفتیم الان میخوایم بگیم کامپایلر چجوری این دستورها رو کنار هم میخونه و اجرا میکنه. اگه با این روند جلو بریم همیشه میتونیم خودمون کدهامون رو دیباگ و اشکال زدایی کنیم.

شروع می کنیم.
کامپایلر اول میره سراغ تابع setup. توی تابع setup اومدیم با دستور (pinMode(13, OUTPUT به آردوینو فهموندیم که میخوایم از پین شماره 13 (همون پینی که LED داخلی بهش وصله) به صورت خروجی استفاده کنیم. در حقیقت با این کار پین 13 رو به عنوان خروجی کانفیگ کردیم.
قدم بعد کامپایلر وارد تابع loop میشه. خط اول از دستور ( digitalWrite(13, HIGH استفاده کرده. طبق آرگومان هایی که بهش داده شده، میاد روی پین شماره 13 سطح منطقی HIGH رو قرار میده و با این کار LED داخلی روشن میشه.
خط بعد از دستور delay با آرگومان 1000 استفاده شده. با این کار آردوینو به مدت 1 ثانیه روی همین خط برنامه متوقف میشه و این در حالیه که led داخلی اون قبلا روشن شده.
بعد از گذشت یک ثانیه خط بعدی با دستور (digitalWrite(13, LOW اجرا میشه. با این دستور led داخلی آردوینو خاموش میشه.
خط آخر برنامه که دستور delay هست، باز هم برنامه رو به مدت 1 ثانیه متوقف میکنه با این تفاوت که الان led داخلی آردوینو خاموشه.

خب خط های برنامه تموم شد آیا روند اجرای برنامه متوقف میشه؟
کسانی که بحث رو دنبال کرده باشن میتونن جواب این سوال رو بدن. خیر روند اجرایی برنامه متوقف نمیشه چرا که تمام این دستور ها توی تابع loop نوشته شده. بنابراین دوباره از خط اول تابع loop که همون( digitalWrite(13, HIGH هست برنامه شروع میکنه به انجام شدن.

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

این جلسه هم تموم شد موفق باشید.

جلسه چهارم: نرم افزار Arduino

به نام خدا
میریم سراغ جلسه چهارم: آموزش نرم افزار آردوینو.
دوستان اول جلسه اعلام میدارم که اگر در تشخیص عکس ها مشکل داشتید روی اون ها کلیک کنید لطفا.
تا این جای کار داشتیم میگفتیم میکروکنترلر چیه؟ بعد رفتیم سراغ AVR و آردوینو. جلسه پیش هم کلا تو داستان معرفی برد آردوینو بودیم. تا الان هر چیزی که گفتیم تو زمینه سخت افزار بود این جلسه کلا در مورد نرم افزار و نحوه کد نویسی صحبت می کنیم.
قدم اول اینه که نرم افزار رو نصب کنیم پس برید به این لینک و ورژن آخر رو نصب کنید(ماشاءالله این جماعت روز به روز ورژن میدن بیرون بنابراین نمیشه بگی کدوم ورژن).

شما با هر سیستم عاملی که کار کنید میتونید فایل نصبی مورد نظرتون رو پیدا کنید. حالا یه سری از دوستان ویندوزی، ادمین نیستن یعنی نمیتونن فایل EXE نصب کنن، به شما دوستان غیر ادمین هم فکر شده و میتونید فایل ZIP دانلود کنید و توی یکی از درایوهای مورد نظرتون کپی کنید.
تا این جای جلسه فرض بر اینه که شما تونستید نرم افزار رو نصب کنید.

imgres

خب نرم افزار رو که باز می کنید با محیطی شبیه شکل زیر مواجه میشید:
1

به جای این که بیایم تک تک قسمت های نرم افزار رو معرفی کنیم و بعدا هم یادمون بره کدوم قسمت کجا استفاده میشد منوی بالای نرم افزار رو بیخیال می شیم فعلا میریم سراغ کلیات نرم افزار و 5 تا کلید اصلی اون. اسم این نرم افزار اسکچ (Sketch) هست (در آینده از این اسم استفاده خواهیم کرد).

خب به ترتیب از سمت چپ شروع میکنیم:
Untitledاین کلید کامپایله. یعنی شما برنامه رو نوشتید و قصد دارید عیب یابی کنید(کامپایل کنید) اینو میزنید، خطاهای برنامه رو براتون معین می کنه.

Untitledاین کلید مربوط به آپلود کردنه یعنی شما کد رو نوشتید و آماده آپلود هستید، این کلید رو بزنید و از انجام پروژتون لذت ببرید. البته این کلید قبل از آپلود کردن یه بار کامپایل میکنه و اگه خطایی در کدنویسی پیدا نکرد بعد آپلود میکنه.

Untitledبرای باز کردن فایل جدید اسکچ باید از این کلید استفاده کنید.

Untitledاین کلید برنامه های از پیش نوشته شده رو باز میکنه (open کردن).

Untitledوقتی کد می نویسید باید هر ثانیه به این فکر کنید که ممکنه یه بلای ناگهانی نازل بشه و اسکچ شما بسته بشه. این امر مساوی هست با این که بهتون بگن مثلا 100 خط کد شما پریده و این دقیقا مساوی هست با ایست قلبی. برای پیشگیری از این موضوع با زدن این کلید کدهاتون رو ذخیره(Save) کنید.

الان میریم سراغ آپلود کردن اولین کد توی آردوینو: پروژه LED چشمک زن.
قدم به قدم باهم بریم جلو.
1. کابل USB رو به آردوینو و پورت USB کامپیوتر وصل کنید.
connected-arduino-uno
2. تو این مرحله باید به آردوینو پورت COM اختصاص داده بشه. معمولا اینطوریه که به محض کانکت کردن کابل USB خود سیستم عامل شروع می کنه به نصب درایور و بعد از اتمام نصبش یه پورت COM مثلا COM4 بهش اختصاص میده( اگه دوستان در اختصاص پورت COM مشکل داشته باشن در آینده یه جلسه کوتاه به این قضیه اختصاص می دیم.)

3. مرحله بعد که مرحله نیمه نهاییه اینه که بریم توی مثال های(Examples) نرم افزار آردوینو و برنامه چشمک زن رو بیاریم. نرم افزار رو باز کنید و برید توی File
1
از اونجا گزینه Examples بعد Basics و در آخر Blink رو انتخاب کنید.
2

بعد از انتخاب این برنامه صفحه اسکچ زیر براتون باز میشه(در مورد خطوط کد نویسی در آینده صحبت می کنیم):
11

4.و اما مرحله فینال آپلود کردن کد.
اول لازمه که تنظیمات برد رو انجام بدید. این تنطیمات دوتا مرحله داره. تنظیم برد مورد استفاده و پورت com. برای انتخاب برد آردوینویی که استفاده می کنید برید به منوی Tools و از گزینه Board آردوینویی رو که دارید باهاش کار میکنید انتخاب کنید مثلا arduino UNO.
56565

بعد بیاید توی همون منوی Tools و از گزینه Port اون پورت کامی که در مرحله 2 بهتون اختصاص داده شده بود رو انتخاب کنید.
777777777777777777

برای پایان این پروسه کد رو کامپایل کنید اگر خطای کد نویسی نداشتیدآپلود کنید.
سشسشس

حالا از کجا بفهمیم کد توی برد آپلود شده؟
در صورتی که کد به درستی کامپایل بشه قسمت پایین اسکچ پیغام “Done Uploding” نمایش داده میشه:

ww

حالا به بردتون نگاه کنید. یه LED چشمک زن با فاصله زمانی 1 ثانیه داره چشمک میزنه.

روندی که بالا گفتیم پروسه آپلود کردن کد توی برد آردوینو هست. شما هر کد دیگه ای هم که داشته باشید می تونید با این روند توی برد آردوینو خودتون آپلود کنید.

این که هر خط برنامه دقیقه داره چیکار میکنه و ساختار کد نویسی در اسکچ چجوریه، جلسه بعد در موردش مفصل صحبت می کنیم این جلسه صرفا روند رو یاد گرفتید.

پایان جلسه