جلسه هجدهم : راه اندازی 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. بک لایت (نوز زمینه) نمایشگر صدا زده میشه.

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

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

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

سلام

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

این جلسه می خوایم در مورد فتوسل حرف بزنیم.
09088-02-L

PHOTOCELL2A

 

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

فتوسل هم یه مقاومته ولی از نوع مقاومت متغیر. یعنی وقتی میزان نور محیطی که این فتوسل توشه تغییر کنه مقاومتی که از دو سر این فتوسل دیده میشه تغییر می کنه. بنابراین هم مقاومته و هم مثل اون مقاومت های معمولی نیست. حالا این که چجوری این انرژی نورانی میاد و کاری می کنه که مقاومت دو سر فتوسل تغییر کنه یه سری فعل و انفعالات داخلیه که من به شخصه علاقه ای بهش ندارم ولی شما می تونید سرچ کنید و با این تکنولوژی آشنا بشید. در کل چیزی که واسه ما مهمه اینه که وقتی شدت نور تابیده شده به این سنسور تغییر می کنه مقاومت دوسرش هم تغییر می کنه. واسه اطلاعات تکمیلی هم بگم که به فوتوسل مقاومت نوری و یا  light-dependent resistor) LDR ) گفته می شه.

خب حالا قصد داریم این سنسور رو با آردوینو راه بندازیم.
مواد لازم:
آردوینو (هر نوعی )
سنسور فتوسل
برد بورد کوچیک
سیم نری به نری

حالا مطابق عکس زیر مدار رو ببندید :
light_cdspulldowndiag

همونطور که می بینید اومده یه مقاومت 10 کیلو اهمی (ثابت ) رو با فتوسل سری کرده و از پایه مشکترک بینشون به پین آنالوگ آردوینو داده. منطق این کار همون منطق تقسیم ولتاژه.
images

وقتی مقاومت فتوسل (با تغییر نور ) تغییر می کنه طبق قانون تقسیم ولتاژ ، ولتاژی که روی پایه وسط (مشترک بین مقاومت و فتوسل ) می افته هم تغییر می کنه که چون این تغییر به صورت پیوسته هست این پایه وسط رو به پین آنالوگ آردوینو (پین شماره 0 ) وصل می کنیم.

خب مدار رو بستید؟
بریم سراغ کد. برای کد عینا عینا عینا همون کد پتانسیومتر رو آپلود کنید. یعنی این کد :
2016-01-20_13-07-301

خب کد رو آپلود کنید و کنسول سریال رو باز کنید:
2016-01-26_12-26-48

همونطور که می بینید مقدار دیفالت سنسور روی حدود 600 بود . بعد دستم رو گذاشتم روی فتوسل ( روی قسمت بالایی ) و داده نشون داده شده از 600 به حدود 200 افت پیدا کرد. دوباره که دستم رو برداشتم برگشت رو همون حدودای 600 . این یعنی تو محیطی که تست کردم محدوده روشنایی 600 و محدوده تاریکی 200 هست. جایی که شما دارید تست می کنید می تونه اعداد تو رنج های کاملا متفاوتی بده بر حسب نور محیطی تون.

حالا کنسول رو ببندید و سریال پلاتر رو باز کنید و هی دستتون رو بزارید رو فتوسل و بردارید تا براتون شکل موج بکشه ( محض تفریح البته ).
2016-01-26_12-34-38

می تونیم همینجا پروژه رو تموم کنیم اما نمی کنیم. می خوایم سیستم روشنایی اتوماتیک بسازیم. یعنی هر موقع نور کم شد و احتیاج به روشنایی داشتیم لامپ روشن بشه .نه این که هر دقه و هر ثانیه اون لامپ بدبخت کار کنه.
برای این کار به مدار قبلیمون یه LED به صورت زیر اضافه می کنیم:
Photocell_bb
قسمت فتوسل که عینا همونه . اومدیم یه LED رو با یه مقاومت سری کردیم و به پین دیجیتال شماره 2 وصل کردیم. علت وجود مقاومت سری با LED اینه که از سوختن اون جلوگیری بشه. تو همه مدارا این قانون وجود داره که سر راه هر LED باید مقاومت گذاشته بشه.

خب مدار رو بستید تمام ؟
حالا کد زیر رو آپلود کنید تا براتون توضیح بدم:
2016-01-26_13-04-56

تو قسمت هدر برنامه که فقط اومدیم علاوه بر متغیر های کد قبلی متغیر ledPin رو معرفی کردیم به عنوان پین شماره 2 .
تو قسمت کانفیگ دیگه سریال رو برداشتیم چون نیازی بهش نبود و به جاش پین دیجیتال ledPin رو به عنوان خروجی تعریف کردیم.
تو تابع loop خط اول ، داده کانال ADC شماره 0 رو می خونیم و تو متغیر sensorValue می ریزیم ( همون متغیری که تو هدر برنامه تعریف کردیم ).
تو کد قبلی دیدیم که حد روشنایی 600 و حد تاریکی 200 بود.
حالا کد نوشتیم اگه داده ای که خونده از 300 کمتر بود (یعنی رفته باشیم تو تاریکی ) بیا led رو روشن کن. معقوله دیگه وقتی تاریک میشه باید چراغا رو روشن کنیم.
تو خط بعدی هم نوشتیم اگه داده ای که خوندی از 500 بیشتر بود (یعنی تو روشنایی بودیم ) led رو خاموش کن چون هوا روشنه و نیازی به نور اضافه نداریم.

اعداد 300 و 500 رو که من تو کدم قرار دارم بر اساس محیط تستم بود. یعنی همون عدد هایی که با کد قبلی از کنسول در آوردم . شما هر رنج عددی که دارید می تونید در نظر بگیرید و این کد رو متناسب با محیط تست خودتون تغییر بدید.
یعنی مثلا اگه کسی تو تستش تاریکی رو روی عدد 120 داشت (مثلا ) نیازی نداره مثل کد من مرز تاریکی رو 300 بزاره میتونه 200 یا حتی کمتر انتخاب کنه.

و اما نکته آخر :
اگه دقت کنید من وقتی دستورهای if رو نوشتم هیچ آکولادی باز و بسته نکردم در صورتی که قبلا می گفتیم اگه شرط if برقرار بشه دستورهای بین دو آکولادی که باز و بسته شدن اجرا میشه{}. خب الان هیچ آکولادی نیست پس در صورت برقرار بودن شرط if چی اجرا میشه؟
جواب: این یه قانون برنامه نویسیه که اگر بعد از برقرار شدن شرط if تنها یک کار لازم باشه انجام بشه دیگه نیازی به گذاشتن آکولاد نیست. دقیقا مثل شرایط الان ما. در صورتی که نور از مرز تاریکی کمتر بشه فقط لازمه LED روشن بشه (یعنی فقط یک کار ) پس به آکولاد نیازی نیست.

پایان جلسه

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

به نام خدا
وارد جلسه دوم می شیم.
اول باید بدونیم آردوینو چیه؟
به زبان ساده، آردوینو بردیه که از پردازنده و یک سری قطعات الکترونیکی دیگه مثل خازن و مقاومت و رگولاتور و کریستال و … تشکیل شده . آردوینو انواع مختلفی داره که بسته به نوعش، پردازنده ای که روش استفاده شده متفاوته. مثلا روی آردوینو 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
 {

 

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