با نگاهی به ساختار کلی برنامه های نوشته شده در محیط اردوینو مشاهده میکنید برنامه از حداقل دو تابع اصلی تشکیل شده که این دو تابع در تمامی برنامه های که در اینده خواهید نوشت وجود خواهند داشت.
تابع اول تابع setup() می باشد این تابع هنگامیکه برنامه اجرا میشود به منظور مقدار دهی اولیه به متغیرها تعیین جهت پینها فراخوانی کتابخانه ها و غیره استفاده می شود این تابع بعد از ریست برد یا اتصال تغذیه تنها یکبار اجرا خواهد شد.
تابع بعدی تابع loop() همان طور که از نام تابع مشخص است یک حلقه بی نهایت می باشد که معادل دستور while در محیط های برنامه نویسی دیگر است این تابع همیشه در حال اجرا می باشد و به شما امکان تغییر و پاسخ را می دهد از این تابع برای کنترل برد به صورت پویا استفاده میگردد و برنامه اصلی شما در درون این تابع باید نوشته شود.
خوب قبل از اینکه به ادامه اموزش بپردازیم چند نکته دیگه که لازم است درمورد ساختار این بردها بدونید رو میگم.
ساختار سخت افزاری اردوینو بدین صورت است که به عنوان مثال شما تعدادی ورودی ،خروجی دیجیتال دارید و این ورودی و خروجی ها روی برد با شماره های 0 تا 13 مشخص شده اند(اینجا برد mega2560 ) و هنگام استفاده از یک پین در برنامه دیگر شما به اینکه این پین متعلق به کدام پورت میکرو و کدام پین هست کاری ندارید!!!! و تنها با استفاده از شماره پین مورد نظر عملیاتهای مورد نیازتون رو انجام میدید مثلا با دستور pinMode(3,INPUT) پین شماره 3 شما به صورت ورودی در میاد می بینید که احتیاجی به تنظیم رجیسترهای DDR و غیره نیست و یکی از مزایای پلتفرم اردوینو حداقل کردن درگیری کاربر با رجیسترهای میکرو می باشد.
البته این نکته را هم بگم که در صورت نیاز هم میتوانید مستقیما با رجیسترها درمحیط اردو کار کنید.
خوب برای روشنتر شدن موضوع یک مثال ساده رو تحلیل می کنیم
خط اول برنامه عبارت int buttonPin=3; رو مشاهده میکنید با استفاده از این عبارت و به منظور راحتی و خوانایی برنامه اسم پین دیجیتال شماره 3 رو که قصد داریم در برنامه ازش استفاده کنیم buttonPin میگذاریم البته هر نامی که شما دلخواهتون هست میتونین استفاده کنید.
می رسیم به تابع Setup() همونطور که قبلا گفته بودیم داخل این تابع مقادیر اولیه و تنظیمات مورد نیازمون رو انجام میدیم (اکثرا بردهای اردوینو بدون هیچ سخت افزار اضافی قابلیت ارسال و دریافت داده از طریق پورت usb به صورت سریال مجازی را دارند)
تابع اول مربوط به تنظیمات پورت سریال مجازی ما می باشد که برای راه اندازی ان تنها یک پارامتر نیاز است و ان سرعت انتقال داده است(همین حالت را با راه اندازی پورت سریال در میکرو AVR در پلتفرمهای دیگه مقایسه کنید)
تابع بعدی تابع pinMode می باشد که از این تابع برای تعیین جهت پین به صورت ورودی خروجی استفاده می شود INPUT به صورت ورودی OUTPUT به صورت خروجی.
buttonPin هم نام درنظر گرفته شده برای پین 3 هست .میتوان نامی هم انتخاب نکرد و مستقیما از شماره پین استفاده کرد.
می رسیم به تابع loop در این تابع برنامه اصلی ما قرار دارد که یک دستور if..else سادست بنابراین فقط به توضیح توابع استفاده شده میپردازیم.
تابع اول digitalRead می باشد این تابع برای خواندن وضعیت یک پین دیجیتال مورد استفاده قرار می گیرد. مقدار برگشتی این تابع وضعیت پین را مشخص می کند اگر پین 1 بود مقدار HIGH اگر صفر بود LOW رو بر میگرداند.
تابع بعدی Serial.print می باشد این تابع برای ارسال یک کاراکتر از طریق پورت سریال مورد استفاده قرار میگیرد.
عملکرد کلی برنامه:
در این مثال با اتصال یک کلید به پین دیجیتال شماره 3 برد درصورتیکه با فشار کلید ولتاژ 5 به پین اتصال یابد کلمه H و در غیر اینصورت کلمه L از طریق پورت سریال به کامپوتر ارسال میشود.
به همین راحتی...............:99::99:
سوالی بود در خدمتم:approve::approve::approve::approve:
تابع اول تابع setup() می باشد این تابع هنگامیکه برنامه اجرا میشود به منظور مقدار دهی اولیه به متغیرها تعیین جهت پینها فراخوانی کتابخانه ها و غیره استفاده می شود این تابع بعد از ریست برد یا اتصال تغذیه تنها یکبار اجرا خواهد شد.
تابع بعدی تابع loop() همان طور که از نام تابع مشخص است یک حلقه بی نهایت می باشد که معادل دستور while در محیط های برنامه نویسی دیگر است این تابع همیشه در حال اجرا می باشد و به شما امکان تغییر و پاسخ را می دهد از این تابع برای کنترل برد به صورت پویا استفاده میگردد و برنامه اصلی شما در درون این تابع باید نوشته شود.
خوب قبل از اینکه به ادامه اموزش بپردازیم چند نکته دیگه که لازم است درمورد ساختار این بردها بدونید رو میگم.
ساختار سخت افزاری اردوینو بدین صورت است که به عنوان مثال شما تعدادی ورودی ،خروجی دیجیتال دارید و این ورودی و خروجی ها روی برد با شماره های 0 تا 13 مشخص شده اند(اینجا برد mega2560 ) و هنگام استفاده از یک پین در برنامه دیگر شما به اینکه این پین متعلق به کدام پورت میکرو و کدام پین هست کاری ندارید!!!! و تنها با استفاده از شماره پین مورد نظر عملیاتهای مورد نیازتون رو انجام میدید مثلا با دستور pinMode(3,INPUT) پین شماره 3 شما به صورت ورودی در میاد می بینید که احتیاجی به تنظیم رجیسترهای DDR و غیره نیست و یکی از مزایای پلتفرم اردوینو حداقل کردن درگیری کاربر با رجیسترهای میکرو می باشد.
البته این نکته را هم بگم که در صورت نیاز هم میتوانید مستقیما با رجیسترها درمحیط اردو کار کنید.
خوب برای روشنتر شدن موضوع یک مثال ساده رو تحلیل می کنیم
کد:
int buttonPin = 3;
// setup initializes serial and the button pin
void setup()
{
Serial.begin(9600);
pinMode(buttonPin, INPUT);
}
// loop checks the button pin each time,
// and will send serial if it is pressed
void loop()
{
if (digitalRead(buttonPin) == HIGH)
Serial.print('H');
else Serial.print('L');
delay(1000);
}
خط اول برنامه عبارت int buttonPin=3; رو مشاهده میکنید با استفاده از این عبارت و به منظور راحتی و خوانایی برنامه اسم پین دیجیتال شماره 3 رو که قصد داریم در برنامه ازش استفاده کنیم buttonPin میگذاریم البته هر نامی که شما دلخواهتون هست میتونین استفاده کنید.
می رسیم به تابع Setup() همونطور که قبلا گفته بودیم داخل این تابع مقادیر اولیه و تنظیمات مورد نیازمون رو انجام میدیم (اکثرا بردهای اردوینو بدون هیچ سخت افزار اضافی قابلیت ارسال و دریافت داده از طریق پورت usb به صورت سریال مجازی را دارند)
تابع اول مربوط به تنظیمات پورت سریال مجازی ما می باشد که برای راه اندازی ان تنها یک پارامتر نیاز است و ان سرعت انتقال داده است(همین حالت را با راه اندازی پورت سریال در میکرو AVR در پلتفرمهای دیگه مقایسه کنید)
تابع بعدی تابع pinMode می باشد که از این تابع برای تعیین جهت پین به صورت ورودی خروجی استفاده می شود INPUT به صورت ورودی OUTPUT به صورت خروجی.
buttonPin هم نام درنظر گرفته شده برای پین 3 هست .میتوان نامی هم انتخاب نکرد و مستقیما از شماره پین استفاده کرد.
می رسیم به تابع loop در این تابع برنامه اصلی ما قرار دارد که یک دستور if..else سادست بنابراین فقط به توضیح توابع استفاده شده میپردازیم.
تابع اول digitalRead می باشد این تابع برای خواندن وضعیت یک پین دیجیتال مورد استفاده قرار می گیرد. مقدار برگشتی این تابع وضعیت پین را مشخص می کند اگر پین 1 بود مقدار HIGH اگر صفر بود LOW رو بر میگرداند.
تابع بعدی Serial.print می باشد این تابع برای ارسال یک کاراکتر از طریق پورت سریال مورد استفاده قرار میگیرد.
عملکرد کلی برنامه:
در این مثال با اتصال یک کلید به پین دیجیتال شماره 3 برد درصورتیکه با فشار کلید ولتاژ 5 به پین اتصال یابد کلمه H و در غیر اینصورت کلمه L از طریق پورت سریال به کامپوتر ارسال میشود.
به همین راحتی...............:99::99:
سوالی بود در خدمتم:approve::approve::approve::approve: