جلسه هجدهم : راه اندازی LCD کاراکتری 1602

به نام خدا
اول جلسه یه پیشنهاد دارم : این که اول کل جلسه رو یه دور تا آخر بخونین بعد قسمت های سخت افزاریش رو اجرا کنین چون دو روش ارائه میشه. پس تا آخر جلسه رو بخونید هر کدوم از دو روش رو که خواستین انجام بدین.
این جلسه قصد داریم در مورد LCD کاراکتری 1602 حرف بزنیم . اول بگیم که چرا به این میگن 1602: این نمایشگر 16 تا ستون و دو تا سطر داره همین ! در مورد این که چرا لازمه تو پروژه هامون LCD داشته باشیم فکر نمی کنم هیچ نیازی داشته باشه که توضیح بدم. فقط همینو بگم که تا الان هر چیزی رو که می خواستیم ببینیم (مثلا عدد پتانسیومتر ) روی کنسول سریال آردوینو می دیدیم ولی خب خیلی مواقع ممکنه مدارمون رو از کامپیوتر جدا کنیم و با یه سوئیچ آداپتور ببریمش یه جایی وصلش کنیم که هیچ نوع کامپیوتری نباشه که بتونیم از کنسول سریالش استفاده کنیم. وقتی تو همچین شرایطی گرفتار شدیم می ریم سراغ استفاده از انواع LCD ها.
character_2x16_modules_lcd_display_hd44780_controller_black_on_yg
این نمایشگر 16 تا پایه داره که اگه به عکس بالا یه کم دقیق بشید کنار پینها یه شماره 1 می بینید یه شماره 16 . ارتباط آردوینو و این LCD به صورت پارالل هست به همین خاطر باید یه عالمه پین رو وصل کنیم پس بدون فوت وقت بریم سراغ سخت افزار مدرا .

مواد لازم :
هر نمونه آردوینو در دسترس
LCD کاراکتری 1602
برد بورد کوچیک
پتانسیومتر
مقاومت 220 اهم
سیم نری به نری

خب حالا مدارتون رو مثل عکس زیر ببندید :
LCD_Base_bb_Fritz
LCD_Base_bb_Schem
میدونم مدارش زیاد دل و روده داشت بنابراین خسته نباشید.
پروژه ای که می خوایم انجام بدیم اینه که هر چیزی رو که از کنسول سریال دریافت کردیم توی LCD نمایش بده .
برای این کار کتابخونه Liquid Crystal رو به کتابخونه های آردوینو اضافه کنید:
Adafruit_LiquidCrystal-master
آموزش اضافه کردن کتابخونه هم اینجاست:

بعد از این که کتابخونه رو به صورت موفقیت آمیز به آردوینو اضافه کردید مثل عکس زیر کد serialdisplay رو بیارید :
2016-01-30_14-07-20
خب با یه همچین کدی مواجه میشید (البته من نیم کیلو کامنت بالاش رو پاک کردم ):
2016-01-30_14-09-10

قسمت های مختلف :
1:معرفی کتابخونه LiquidCrystal

2: اگه یادتون باشه قبلا هر وقت یه پین رو استفاده می کردیم میومدیم توی هدر برنامه بهش اسم می دادیم . الان اگه بشمارید 6 تا سیم از LCD وصل کردیم به پین های آردوینو . قائدتا باید 6 تا متغیر تو هدر تعریف می کردیم . پس کو ؟ چرا نکردیم ؟ همین خط دستوری که اینجا نوشتیم (LiquidCrystal lcd(12, 11, 5, 4, 3, 2 دقیقا همین کار رو میکنه. فقط فرقش اینه که اون تعریف کردنا به جای اینه اینجا نوشته بشه رفته تو کتابخونه نوشته شده .

3.توی این قسمت کانفیگ پین هایی که تو قسمت 2 معرفی شد انجام میشه.تابع begin در کتابخونه LiquidCrystal پین های معرفی شده در قسمت 2 رو به صورت ورودی / خروجی کانفیگ میکنه. علاوه بر این تعداد سطر و ستون های LCD به عنوان آرگومان های ورودی این تابع قرار داده میشه (یعنی 2 و 16).

4: کانفیگ ارتباط سریال با baude rate مساوی 9600.

بافر ارتباط سریال : قبل از توضیح پارت پنجم لازمه در مورد بافر سریال یه توضیح خیلی ساده بدم. در همین حد بدونید که بافر سریال یه واسطه . یعنی هر آنچه که شما توی کنسول سریال آردوینو تایپ می کنید قبل از این که با دستور Serial.read بریزیدش تو یه متغیر، توی بافر سریال ذخیره میشه. بافر رو یه چیزی مثل شکل زیر تصور کنید که هر کاراکتری که ما تو کنسول تایپ می کنیم میره تو یکی از خونه های این بافر می شینه.

2016-01-30_14-53-39
5: این جا داریم میگیم اگه چیزی توی بافر ارتباط سریال وجود داشت بیا کارای توی کروشه رو انجام بده . دقت کنید با if نوشته . دستور Serial.available میاد تعداد متغیرهایی رو که توی بافر ارتباط سریال هست رو خروجی میده. یعنی مثلا اگه شما تو کنسول سریال تایپ کرده باشید salam خروجی دستورSerial.available عدد 5 هست (یعنی 5 تا کاراکتر). اینجا داره میگه اگه خروجی این دستور بزرگتر از صفر بود (یعنی یه چیزی توی کنسول سریال آردوینو نوشته شده بود (اصلا مهم نیست چند تا)) بیا دستور های بین دو کروشه مربوط به این if رو اجرا کن.

6: اینجا 100 میلی ثانیه صبر می کنه تا کل اون چیزی که ما توی کنسول سریال تایپ کردیم تو بافرارتباط سریال جا بگیره .

7: با دستور clear تمام داده های روی LCD پاک میشه در واقع LCD رو خالی می کنه تا داده بعدی روش چاپ بشه.

8 و 9 : اتفاقی که توی این دو خط کد می افته اینه که داده های خونه های بافر ارتباط سریال دونه دونه روی LCD چاپ میشن تا جایی که بافر خالی بشه. علت این که از while استفاده شده اینه که باید تک تک خونه ها رو خالی کنه تا جایی که دیگه بافر خالی بشه . بعد با دستور (()lcd.write(Serial.read میاد هر چیزی رو که از کنسول سریال میگیره توی LCD چاپ می کنه.

دقیق تر بگم ؟
بار اول که وارد دستور (while (Serial.available() > 0 میشه خروجی دستور Serial.available() مساوی 5 خواهد بود (چون salam توی بافر سریاله ) .بنابراین شرط برقراره و از while عبور میکنه میاد دستور (()lcd.write(Serial.read رو اجرا می کنه .

اگه یادتون باشه توی جلسه ای که در مورد ارتباط سریال حرف میزدیم می گفتیم Serial.read فقط یک کاراکتر رو بر می گردونه . یعنی اگه توی بافر سریال ما مثل بالا salam نوشته شده باشه نمیاد کل salam رو به عنوان خروجی بده فقط S رو برمیگردونه و بعد بافر سریال رو به این شکل در میاره یعنی S رو از اون خارج می کنه :
2016-01-30_15-23-13
توی همین بار اول کاراکتر S با دستور (()lcd.write(Serial.read روی LCD چاپ میشه.
به آخر while  می رسیم .طبق خاصیت حلقه while یک باردیگه شرایط while چک میشه. اگر شرط برقرار باشه وارد حلقه میشه اگه شرط برقرار نباشه از حلقه while خارج میشه.
بار دوم که قراره شرط while چک بشه خروجی دستور Serial.available() مساوی 4 خواهد بود بنابراین بازم شرط برقراره و یک بار دیگه دستور (()lcd.write(Serial.read اجرا میشه و این بار a از بافر سریال خارج میشه و توی LCD چاپ میشه .

اینطوریه که کارکاترها دونه دونه از بافر خارج میشن و روی LCD چاپ میشن تا جایی که بافر خالی بشه و خروجی دستور Serial.available() مساوی صفر بشه. در این حالت شرط while  برقرار نمیشه و از حلقه خارج میشیم.

برای این که حرف منو بهتر درک کنین این قسمت از کد رو تغییر بدید و اپلود کنید:
2016-01-30_16-42-17
همونطور که میبیند هر کدوم از کاراکترها با فاصله زمانی 2 ثانیه روی LCD چاپ میشن.

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

**************************************************************************

آزار دهنده ترین قسمت انجام این پروژه قسمت سیم بندی اون بود که مجبور بودیم n تاسیم رو با مقاومت و پتانسیومتر استفاده کنیم .
یه راه حل خیلی خوب وجود داره که به جای این همه بند و بساط با 4 تا دونه سیم بتونیم ارتباط نمایشگر و آردوینو رو فراهم کنیم.
برای این کار فقط باید دستمونو بکنیم تو جیبمون و یه دونه از درایور های LCD بخریم :2016-01-30_16-17-22

بعد از این که اینو خریدید لحیمش کنیمد پشت LCD به این شکل :
2016-01-30_16-15-27

وقتی لحیم کاری تموم شد الان سخت افزارمون رو به این شکل می بندیم :
LCD 1602 I2C SCH

می بینید فقط 4 تا دونه سیم .بدون پتانسیومتر ، بدون مقاومت و بدون n تا سیم. اگه دقت کنید علاوه بر VCC و GND دو تا پین دیگه وجود داره به نام های SCL و SDA. این دو تا پین ، پین های ارتباط I2C هستن . ارتباط I2C یکی از پرکاربردترین پروتکل های ارتباطی تو کار ماست . خیلی از سنسورها خیلی از نمایشگرهامون با این پروتکل کار میکنن و ما باید بتونیم تشخیصشون بدیم و راهشون بندازیم. حالا یه سوال پیش میاد و اونم اینه که یه قطعه رو که پروتکل ارتباطیش I2C هست چطوری تشخیص بدیم؟
جواب سوال اینه که به پین های قطعه نگاه می کنیم در صورتی که روی پینهای قطعه اسم های SCL و SDA وجود داشت پروتکل ارتباطی اون قطعه I2C هست.

حالا قطعه هایی رو که پروتکل ارتباطیشون I2C هست چجوری به آردوینو وصل کنیم ؟آیا پین خاصی دارن ؟
مطابق جدول زیر این قطعه ها رو به آردوینو وصل می کنیم :
2016-01-30_16-39-40

یعنی اگه با آردوینو UNO کار می کنید باید به پایه های آنالوگ 4 و 5 وصل کنید. اگه با مگا کار می کنید به پایه های دیجیتال 20 و 21 وصل کنید و الی آخر.

ما روی UNO کار می کنیم بنابراین به پایه های آنالوگ 4 و 5 وصل می کنیم . دقت کنین که ترتیب پایه ها تغییر نکنه که اگه جا به جا بزنین پروژه به هیچ عنوان کار نمی کنه.

خب مدار رو بستید حالا کتابخونه زیر رو به نرم افزار آردوینو اضافه کنید:
LiquidCrystal_I2C

مثل حالت قبل مطابق عکس زیر مثال serialdisplay رو بیارید :
2016-01-30_16-47-28

کدی مثل همون کد قبلی رو به این صورت میبینید (البته من بازم کامنت ها رو پاک کردم ) :
2016-01-30_16-50-17

1: معرفی کتابخونه Wire (در مواقع استفاده از پروتکل I2C صدا زده میشه )

2.معرفی کتابخونه LiquidCrystal_I2C

3.این جا تعداد سطر ها و ستون ها و آدرس I2C نمایشگر معرفی میشه (دقت کنید هر قطعه ای که با I2C کار کنه یه آدرس خاص داره مثلا مال این LCD آدرسش 0X27 هست)

4. بک لایت (نوز زمینه) نمایشگر صدا زده میشه.

بقیه قسمت های کد دقیقا مثل قبله و با همون توشیحات می تونید درکش کنید. کد رو آپلود کنید و استفاده کنید.

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

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

به نام خدا

در این جلسه اضافه کردن کتابخونه به آردوینو رو آموزش میدم.
اول داستان: اصن کتابخونه چیه؟ یه بنده خدایی رو تصور کنید که واسه پروژش 700 خط کد نوشته. نحوه کد نویسیش هم طوری بوده که توی این 700 خط کدش 20 تا تابع (یا به قول برنامه نویسا “متد”) تعریف کرده. حالا این آدم می تونه کدش رو همینطوری ول کنه و بره (700 خط) یا این که می تونه تمام تابع هایی رو که نوشته یه جا جمع کنه و به مجوعشون یه اسم بده. تو این مثال ما یعنی بیاد 20 تا تابعی رو که نوشته توی یه مجموعه به نام مثلا mysensors قرار بده.
حالا این مجموعه ای که داریم ازش حرف می زنیم و اسمش رو گذاشتیم mysensors همون کتابخونس! دقیقا همونطوری که یه کتابخونه از کلی کتاب تشکیل میشه یه کتابخونه آردوینو هم از خطوط کد نویسی تشکیل میشه.
بنابراین تا این جا 20 تا تابعمون رو گذاشتیم توی کتابخونه mysensors . وقتی می خوایم تو اسکچ (همون نرم افزار آردوینو) از تابع ها یی که الان تو کتابخونه گذاشتیم استفاده کنیم، فقط و فقط کافیه اون کتابخونه رو به کتابخونه های آردوینو اضافه کنیم(بحث اصلی آموزش این جلسه)، بعد اسم کتابخونه روتو هدر برنامه بنویسیم (موضوع آموزش جلسه بعد) و از تمام 20 تا تابعمون استفاده کنیم. یه عده ممکنه هنوز متوجه نشده باشن.
فرض کنید یه تابع نوشتیم مثل زیر:
2015-12-17_12-19-27

این تابع اسمش showSms هست و 6 خط شده. ما این تابع رو توی کتابخونه mysenors قرار می دیم(کاری نداشته باشید چجوری چون به من و شما ربطی نداره البته فعلا!)
بعد از این که کتابخونه رو درست کردیم و به نرم افزار آردوینو اضافه کردیم هر جا با این تابع کار داشتیم به جای این که کل تابع رو با این شکل استفاده کنیم فقط ()showSms رو صدا می زنیم و بس . بنابراین تعداد خط های کد نویسی توی اسکچ خیلی خیلی خیلی کمتر میشه.

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

روش اول: Library Manager
اصل و اساس این روش اینه که کتابخونه مورد نظرمون رو از اینترنت به صورت مستقیم دانلود کنیم.
مثلا یه کتابخونه وجود داره به نام Bounce2. مطابق عکس زیر وارد Library Manager بشید:
2015-12-17_12-38-05

 

در قسمت مورد نظر تو عکس زیر کلمه Bounce2 رو تایپ کنید، کتابخانه پیدا شده رو انتخاب کنید و کلید install رو بزنید:
2015-12-17_12-40-25

بعد از تموم شدن دانلود مطابق عکس زیر می تونید چک کنید که کتابخونه به درستی اضافه شده یا نه!
2015-12-17_12-44-40

روش دوم:اضافه کردن فایل zip
همونطور که از اسم این روش پیداست برای اضافه کردن کتابخونه به فایل زیپ اون نیاز داریم. مثلا این فایل زیپ رو دانلود کنید.(همون کتابخونه قبلی هست)
خب حالا مطابق عکس زیر به add .zip library برید.
2015-12-17_12-55-23
در صفحه باز شده هر جا فایل زیپ دانلود شدتون رو گذاشتید برید و فایل زیپ رو انتخاب کنید:
2015-12-19_14-11-42
روش تست برای این که ببینید کتابخونه اضافه شد یا نه دقیقا مثل قبله.

روش آخر:کپی کردن در دایرکتوری کتابخانه ها
این روش یه روش کلیه و اصلا مهم نیست ورژن نرم افزار آردوینویی که استفاده می کنید جدیده یا قدیمی.
اول فایل زیپی رو که قبلا دانلود کردید اکسترکت کنید. بعد اونو کات کنید .
2015-12-19_14-21-30
برید اونجایی که نرم افزار آردوینو رو نصب کردید. وارد فولدر Arduino بشید بعد از اون وارد فولدر libraries بشید و فولدری که کات کرده بودید رو paste کنید همونجا.
2015-12-19_14-23-35
2015-12-19_14-24-28
کار اینجا تمام نیست. الان اسم فولدر ما Bounce2-master هست دیگه درسته؟ این اسم باید تغییر کنه حالا چجوری؟
اگه نرم افزارتون بازه ببندیدش و دوباره باز کنید(این کار حتما لازمه چون نرم افزار باید یه دور ریست بشه تا کتابخونه بهش اضافه بشه. روش های قبلی به این کار احتیاجی نداشتن)
خب حالا مطابق عکس زیر یه مثال از این کتابخونه رو بیارید:
2015-12-19_14-33-292015-12-19_14-34-20
همونطوری که توعکس نوشتم اسم کتابخونه رو یعنی Bounce2 (بدون h.) بردارید و به جای اسم فولدر کتابخونه یعنیpaste , Bounce2-master کنید. بنابراین در پایان کار باید اسم کتابخونه و اسم فولدر کتابخونه دقیقا یکی باشه. برای تست موفقیت در تغییر اسم بعد از این که این کار رو انجام دادید کد رو یک بار کامپایل کنید اگر ارور داد یعنی یه جای این روند رو اشتباه کردید.

و این هم اتمام جلسه اگر سوالی داشتید در فروم حی و حاضرم تشریف بیارید.

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

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

خب میریم وسط داستان. هر برنامه ای که برای آردوینو میخوایم بنویسیم دو قسمت مجزا داره. یکی تابع 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 ثانیه داره چشمک میزنه.

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

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

پایان جلسه

جلسه دوم : چرا آردوینو ؟

به نام خدا
وارد جلسه دوم می شیم.
اول باید بدونیم آردوینو چیه؟
به زبان ساده، آردوینو بردیه که از پردازنده و یک سری قطعات الکترونیکی دیگه مثل خازن و مقاومت و رگولاتور و کریستال و … تشکیل شده . آردوینو انواع مختلفی داره که بسته به نوعش، پردازنده ای که روش استفاده شده متفاوته. مثلا روی آردوینو UNO میکروکنترلر مورد استفاده، ATMEGA32 هست. قطعات الکترونیکی که به صورت پیش فرض روی برد آردوینو قرار گرفته، برای راه اندازی ساده تر میکروکنترلر AVR هست که در ادامه در مورد آنها بیشتر توضیح داده میشه. همین قطعات الکترونیکیه که با قرار گرفتن در کنار AVR بردی متفاوت و پرکاربرد را بوجود آورده. ناگفته نمونه بعضی از بردهای آردوینو میکروکنترلر ARM استفاده میکنن.

حالا چرا از خود AVR استفاده نکنیم و بیایم سراغ آردوینو ?
کسانی که با AVR کار کرده باشن خوب میدونن، حتی اگه بخوای یک پروژه LED چشمک زن ساده هم راه اندازی کنی علاوه برخود AVR به یک سری سخت افزار جانبی مثل رگولاتور و کریستال و سیم بندی واسه تغذیه و زمین کردن(مهم ترین پایه ها) کنترلر AVR نیاز داری. حالا این وسط اگه یه موقع میکرو را بر عکس تو مدار جا بزنی یا اشتباه به یه پایه دیگه اون ولتاژ بدی عملا میکرو می سوزه و تا بخواد دستت بیاد چجوری اشتباه نکنی، عملا مقدار هنگفتی پول خرج کردی و دل زده شدی و الفرار.
این اول داستان نیست. پروگرام کردن AVR هم یه سری مشکلات داره .در بهترین حالت که پروگرامر از نوع USB باشه، باید AVR را از مدار خارج کنی، وصلش کنی روی پروگرامر، کد رو آپلود کنی، دوباره از برد پروگرامر جداش کنی و بزاریش تو مدار ( اگه اشتباه نزاری). اگه از کد نویسی مطمئن باشی و نخواد به خاطر یه اشتباه کوچک کد را عوض کنی 4 مرحله وجود داره تا آپلود کنی.
اینم یک نمونه از پروگرامر که اگه قصد دارید از AVR به تنهایی استفاده کنید باید همه جا دنبالتون باشه .
avr programmer-1
تا این قسمت از جلسه توضیح راه اندازی پروژه LED چشمک زن با AVR بود. از این جای داستان به بعد پروژه LED چشمک زن را با آردوینو پیاده سازی میکنیم .(الان صرفا یک شمای کلی از نحوه کار با آردوینو بیان میشه. جزئیات بحث آردوینو، مطمئنا در جلسات بعدی مطرح خواهد شد.)
خب شروع میکنیم .
قطعات مورد نیاز: برد آردوینو + کابل USB .
سخت افزار همین جا تمام میشه .شما به هیچ چیز دیگری (حتی LED) احتیاج ندارید. رگولاتور و کریستال و همه سخت افزارهای دیگه ای که برای راه اندازی پروژه LED چشمک زن لازمه روی این برد به صورت پیش فرض قرار گرفته. برای آپلود کردن کد کافیه کابل USB رو به آردوینو وصل کنید، در نرم افزار آردوینو با اشاره یک کلید آپلود کنید. یعنی بعد از آماده شدن کد فقط با 2 حرکت می تونید آپلود کنید.
اگر فرض کنیم کسی در کد نویسی وارد نباشه، مطمئنا چندین بار لازمه کد برنامه را تغییر بده. حالا اگه با AVR کار کنه به ازای هر تغییری که در کد بوجود بیاره و بخواد آپلود کنه باید 4 مرحله را طی کنه اما، اگه بخواد با آردوینو پروژه انجام بده هیچ نیازی نداره میکرو از مدار جدا بشه، همونطوری که تمام اجزای مدار سر جاشه کابل USB وصل میشه و برنامه آپلود میشه.
خیلی قابل درکه که پروگرام کردن و ساخت مدار پروژه چشمک زن توسط آردوینو نسبت به AVR کار بسیار ساده تری است.
DEV01158-01-L1401607442538ad512d0411 حالا اگه قصد داشته باشیم در حوزه کد نویسی وارد بشیم و تفاوت ها را در این حوزه هم بیان کنیم، یه بار دیگه برمی گردیم به پروژه LED چشمک زن. اگر بخواهیم با نرم افزار های مخصوص AVR کد نویسی کنیم، اول برنامه(هدر برنامه) باید تعدادی تابع را include کنیم تا بتونیم از توابع مورد نیاز استفاده کنیم. بعد برای این که پین میکرو را 0 و 1 کنیم (تا LED روشن و خاموش بشه) اول باید به ریجسترها مقدار بدیم تا اون پین خروجی بشه، بعد پایه را 0 و 1 کنیم. ریجسترهایی که استفاده میشه معمولا اسم هایی دارن که به خاطر سپردنشون برای بعضی افراد کار مشکلیه .
حالا اگه بخواهیم همین کد رو توی آردوینو بنویسیم نه نیازه تابعی را include کنیم نه به ریجستری مقدار بدیم .با یک خط کد نویسی پین به عنوان خروجی در نظر گرفته میشه. دستوری که با اون پین را معرفی می کنیم، دستور pinMode هست که به خاطر سپردنش کار ساده ایه. در نرم افزار آردوینو کدنویسی به زبان ++c است.
برای مقایسه، دو تا کد میزاریم اولی کدنویسی AVR است:

define F_CPU 4000000UL#
 <include <avr/io.h#
 <include <avr/delay.h#
 "include “myTimer.h#
 (int main (void
 }
 ;DDRC = 0xFF
 } (while(1
 ;(PORTC |=(1<<0
 ;(delay_ms(250
 ;(PORTC &= ~(1 << 0
 ;(delay_ms(250
 ;{
 {

دومی کد نویسی آردوینو است:

}()void setup
 ;(pinMode(13, OUTPUT
 {
 }()void loop
 ;(digitalWrite(13, HIGH
 ;(delay(250
 ;(digitalWrite(13, LOW
 ;(delay(250
 {

 

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

جلسه اول : آشنایی با میکروکنترلر

میکروکنترلر چیست؟
قطعه ای که این روزها دارد جای خود را در خیلی از وسایل الکتریکی باز میکند .از تلفن گرفته تا موبایل از ماوس لیزری که الان دستتان روی آن است و دارین باهاش کامپیوتر رو کنترل میکنید تا هر وسیله ای که بتوان پیچیدگی رو در اون دید میتونید یک میکروکنترلر رو ببینید .
کلمه میکروکنترلراز دو کلمه میکرو و کنترلر تشکیل شده است.
میکرو : میدونین که این یک واحد یونانی است و برابر با 10 به توان منفی 6 متر است. یعنی یک ملیونیوم متر….
کنترلر : یعنی کنترل کننده به تعبیری یعنی “مغز ” البته بدون تفکر فقط دستوراتی که به اون داده میشه به نحو احسن انجام میده.
کلمه میکرو به دو منظور استفاده شده منظور اول و مهم ،سرعت عمل میکروکنترلر است که میتواند تا یک ملیونیوم ثانیه باشد یعنی میتواند در یک ثاینه یک میلیون عملیات رو انجام بده به همین خاطر واژه میکرو رو به اون اختصاص دادن . معنی دوم آن شاید کوچیکی این قطعه باشد که تا یک ملیونیوم متر کوچیک شده شاید باور کردنی نباشه ولی در یک تراشه ممکنه بیش از یک میلیون تراتزیستور به کار رفته باشه. این کلمه وقتی اهمیتش کامل میشه که با واژه کنترلر عجین بشه تا معنیش کامل بشود .

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

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

تمام میکروکنترلرها جزء این 4 قسمت هستنند:
8051(1
Pic(2
Avr(3
Arm(4
خوشبختانه همه میکروکنترلر هایی که جزء هر کدام از 4 نوع بالا باشند از یک برنامه پیروی میکنند. بدین معنا که اگر شما کار با یکی از مدل های آن میکرو را یاد گرفته باشید مثل اینکه کار با تمام میکروکنترلرهای آن نوع را یاد گرفته اید.مثلا شما اگر با یکی از مدل های میکروکنترلر avr مثلا atmega8 را یاد گرفته باشید دیگر با صد ها مدل دیگر میکروکنترلر avr مشکلی ندارید وتقریبا بدون هیچ مشکلی میتوانید با دیگر مدل های این میکرو کار کنید.
اما یه مشکل که در میکروکنترلر ها وجود دارد این است که این4 نوع از لحاظ برنامه نویسی به هیچ وجه با هم دیگر سازگاری ندارند . به طور مثال اگر شما میکروکنترلر های avr و 8051 را کامل یاد گرفته باشید حتی ساده ترین برنامه رو روی یک میکروکنترلر pic نمیتوانید اجرا کنید. واین یکی از بزرگترین عیب و مشکل برای یاد گیری میکرو است .بنابراین از همون اول باید یک انتخاب درست داشته باشید و میکروکنترلر مناسب را برگزینید تا با یادگیری آن میکروکنترلر بتوانید بعدا به سادگی پروژه های خود را اجرا کنید .

8051 :
اولین میکروکنترلری بود که به دست بشر ساخته شد . ابتدا این میکروکنترلر توسط شرکت بزرگ intel ساخته شد .اما بعدا intel این امکان را به دیگر شرکت ها داد که این میکروکنترلر را تولید کنند و شرکت هایی مانند ATMEL , PHILIPS , SIEMENS , DALLAS و… به تولید این میکروکنترلر پرداختنند. یکی از شرکت هایی که به صورت گسترده به تولید این تراشه پرداخت ATMEL بود. اما اگربخواهیم به صورت کلی سیر پیشرفت این نوع میکروکنترلر رو در نظر بگیریم اولین میکروکنترلر هایی که ساخته شد با جدیدترین میکروکنترلرهای 8051 که الان تولید میشود با توجه به این پیشرفت شگفت در تمام زمینه ها که صنایع دیگر در دنیا دارند پیشرفت زیادی ندارد به طور مثال AT89S5X که میکروکنترلر 8051 جدید ساخت ATMEL است نسبت به مدل های اولیه 8051 پیشرفت آنچنانی ندارد . امکانات این میکرو نسبت به AVR و PIC قابل مقایسه نیست . به صورتی که که همین مدل جدید 8051 تقریبا حافظه ای برابر یک صدم (0.01 ) میکروکنترلر های AVR را دارد و سرعتش 4 برابر کمتر از میکروکنترلر های PIC و 12 بار کمتر از میکروکنترلر های AVR است . از لحاظ امکانات دیگر هم چنین ضعفی احساس میشود. اما برای کارهای ساده تر که پیچیدگی زیادی در آن نباشد به خاطر قیمت بسیار پایینی که این میکروکنترلر دارد بسیار مناسب است . قیمت همین مدل جدید AT89S5X حول و حوش 1000 تومان است که قیمت بسیار مناسبی است.
این میکرو کنترلر از زبان اسمبلی و C پشتیبانی میکند که زبان برنامه نویسی اصلی آن اسمبلی است که واقعا نوشتن با این زبان برنامه نویسی نسبت به زبان های برنامه نویسی دیگر هم مشکل تر و هم طولانی تر است. در کل این میکروکنترلر امروزه دیگر توانای رقابت با AVR و PIC رو ندارد و امروزه رقابت اصلی بین این دو میکروکنترلر است.

PIC :
واقعا میکروکنترلر خیلی قوی است که بر اساس بعضی آمار ها بیشترین کاربر را به خود اختصاص داده است البته متذکر شوم که در ایران این آمار به نفع AVR است. این میکروکنترلر ساخت شرکت میکرو چیپ است که PIC رو در مدل های خیلی زیادی با امکانات مختلف برای کارهای مختلف میسازد .چون بحث اصلی ما روی AVR هست از توضیح بیشتر این میکروکنترلر میگذریم.

AVR :
به میکروکنترلر AVR میرسیم .اول از همه سرعت این میکروکنترلر بسیار بالاست و به قولی دستوراتی که بهش داده میشه در یک سیکل کلاک انجام میده. AVR از زبان های برنامه نویسی سطح بالا یا به اصطلاح (HIGH LEVEL LANGUAGE) HLL پشتیبانی میکند که باعث تولید کدهای بیشتری میشود که در کل برنامه نوشته شده نسبت به برنامه هایی که برای 8051 و PIC نوشته میشود کوتاهتر است. امکانات جانبی این میکروکنترلر بسیار مناسب است و شما را از خرید بعضی لوازم جانبی مانند چیپ های آنالوگ به دیجیتال (ADC) , مقایسه گر آنالوگ و… راحت میکند .در ضمن AVR از بسیاری از استاندارد های ارتباطی مانند SPI,UART,12C,JTAG پشتیبانی میکند که به راحتی میتوان این میکروکنترلر را با میکروکنترلر دیگر یا و سایل دیگر وصل کرد و با وسایل دیگر به راحتی ارتباط برقرار کند. قیمت این میکروکنترلر هم به نسبت امکانات فراوانی که داره بسیار پایین است به طوری که یک میکروکنترلر AVR تقریبا پیشرفته رو با قیمت حول و حوش 3 تا 4 هزار تومان خرید .
AVRها به پنج گروه تقسیم شده اند:
tinyAVR (1
megaAVR (2
AVR (3 XMEGA
AVR32 UC3 (4
AVR32 AP7 (5

ARM :
ARM یک میکرو کنترلر قدرتمند با کاربردهای متنوع است. ARM ها بیشتر در جاهایی که ظاهر زیبای کار مورد توجه است استفاده می شوند چرا که این میکروکنترلرها می توانند سیستم عامل های لینوکس و ویندوز رو راه اندازی کنند.
پروگرام میکروکنترلر :
شاید تا حالا به نظرتون رسیده باشه که این میکروکنترلر رو چگونه میشه برنامه ریزی کرد تا کار مورد نظرمان را انجام بده در صورتی که یک میکروکنترلر برنامه ریزی نشده هیچ کاری رو نمیتونه انجام بده و هیچ کاربردی نداره در واقع برنامه هر میکرو روح وجانی است که در اون دمیده میشه و اون رو زنده میکنه.
برای برنامه ریزی میکروکنترلر نیاز به دستگاه یا بردی هست به نام پروگرامر که یه پل ارتباطیه بین کامپیوتر و میکروکنترلر . پروگرامر را هم میشه از بازار تهیه کرد و هم میشه اون رو ساخت.
البته پروگرامرهای مختلفی در بازار هستنند که متانسب با کاربردشان قیمت های مختلفی دارند بعضی ها فقط چند مدل رو پروگرام میکنند بعضی از پروگرامر ها همه فن حریفند و تمام میکروکنترلر های 8051AVR ,ARM, PIC , رو برنامه ریزی میکنند به طبع قیمت زیادتری دارند.

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