» امروز
» پند امروز :
برق و الکترونیک |
|

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










یک متغیر به سبکی که مشاهده می کنید استفاده می شود. می بینید که در کادر متغیرها (بطور پیشفرض کادر بالا سمت چپ میحیط مطلب) متغیر RGB با ابعاد ایجاد شده است. یعنی یک ماتریس سه بعدی که بعد اول ۳۸۴ خانه و معرف تعداد پیکسلهای ارتفاع تصویر٬ بعد دوم ۵۱۲ پیکسل طول تصویر و بعد سوم ۳ خانه که چون تصویر از نوع رنگی (RGB) می باشد یک خانه حاوی مقدار RED و خانه های بعدی نگدارنده مقادیر GREEN و BLUE پیکسل مورد نظر می باشد. جهت درک قضیه به تصویر مقابل دقت کنید.
رنگ unit8, unit16 و Double برای تصاویر رنگی در مطلب در نظر گرفته شده است. برای مثال در کلاس unit8 هر بعد مکعب که بیانگر یکی از رنگهای قرمز٬ سبز و آبی می باشد دارای ۲۵۶ (۲۸) مقدار تعیین شده می باشد که در کل ۲۵۶*۲۵۶*۲۵۶= ۲۲۴ رنگ مختلف تولید می شود. برای کلاسهای دیگر هم بهمین روال می باشد با این تفاوت که تعداد رنگ آنها بیشتر می باشد.دستور بعدی (خط دوم)٬ دستور "imshow" جهت نمایش تصاویر موجود در متغیر ها با فرمت ذکر شده می باشد. بعد از فراخوانی این دستورات ابتدا اطلاعات موجود در تصویر 'peppers.png' (موجود در مسیر جاری مطلب) داخل متغیر RGB ریخته شده و با دستور imshow مرورگر تصاویر نرم افزار عکس مربوطه را نمایش می دهد. 

...راستی یادتون باشه برای خرید میکروی AVR Atmega32 حتما مدل L اون رو بخرید چون با وجود یکسان بودن قیمت، مل ال اون پروگرمر ساده ای داره درواقع اصلا پروگرمر نیست فقط باید چندتا پایش رو مستیم به پورت موازی وصل کنید (که بعدا شکلشو نشون میدم). پس یادتون باشه مثل من اشتباه نکیند. در مورد کامپایلر Bascom هم که چند وقت پیش برا دانلود گذاشته بودم معذرت می خوام چون متوجه شدم اصلا بدرد نمی خوره!!!. یه نسخه عالی دارم که بوقتش آپلودش می کنم.
در آخر این پست پیشنهاد می کنم اگر علاقه به ساخت ربات دارید (که اگه اینجایید حتما دارید) فقط به خواندن مطالب، پرینت و جمع آوریشون بسنده نکنید چون اصلا کافی نیست و فکر نمی کنم حتی ۱۰٪ کار عملی بازده داشته باشه... تا پست بعدی موفق باشید
معرفی میکرو:
برای شروع یک برنامه در محیط Bascom ابتدا بایستی میکروی مورد نظر تعریف گردد. چون توصیه من در استفاده از مدل ATMEGA16|32|128 بود٬ بنابراین فعلا به علت زیق در همه چی
فقط به تعریف همین ۳ مدل بسنده می کنم:
$REGFILE = VAR 'فرم کلی تعریف٫ "وار" یه رشته معرف مدل خاص میکروی مورد نظر هستش
$REGFILE = "M16def.dat" 'MEGA 16 MCU این برا مدل
$REGFILE = "M32def.dat" 'MEGA 32 MCU این برا مدل
$REGFILE = "M128def.dat" 'MEGA 128 MCU این برا مدل
کریستال:
برای مشخص کردن فرکانس کریستال (میکرو ها باید به یه قطعه خارجی بنام کریستال وصل بشن) استفاده شده برحسب هرتز از دستور CRYSTAL = X$ استفاده می نماییم X فرکانس کریستال استفاده شده بر حسب هرتز است. خوشبختانه AVR دارای یک کریستال 1MHZ داخلی هستش که واقعا یک نعمته! اما حتی برای استفاده از اون هم باید این دستور رو بکار ببریم. مثال:
$CRYSTAL = 100000 '1MHz internal
$CRYSTAL = 140000 '14MHz external
یاداشت(اختیاری): گاهی نیاز است یاداشتهایی برای اطلاعات بیشتر در برنامه اضافه کنید٬ در Bascom هم مثل بیسیک می تونید با علامت " ' " یا REM اینکارو انجام بدید. درست مثل یادداشت های اضافی که من در مثالهای قسمتهای قبل استفاده کردم! مثال:
Print "Hello World" 'این دستور بعدا معرفی میشه
REM این هم یه مدل دیگه از یادداشت اختیاریه
همچنین در پایان هر برنامه باید از کلمه END استفاده کنید که مثل یک حلقه بی پایان عمل می کنه (مثلا در سی باید همیشه یه حلقه درست کنی. یه کار تکراری) و دلیل استفادش چه در این کامپایر و برای این میکرو و چه در سایر کامپایلرها و برای میکروهای دیگه٬ اینه که سیستم برنامه میکرو با کامپیوتر فرق فوکوله
و اگه از END یا حلقه بی پایان استفاده نکنیم برنامه همینطور میره پایین و سایر آدرس های حافظه میکرو رو به خیال ادامه برنامه میخونه که این باعث Error میشه دیگه! پس End یادتون نره!
خوب دیگه از گزینه های اجباری بدنه تغریبا چیزی نموند و برای اینجلسه هم کافیه! جلسه بعد آموزش نحوه تعریف شرط و حلقه و ... در Bascom رو داریم پس حتما مطلب رو دنبال کنید. راستی تا یادم نرفته بگم بعضی از مطالب بالا رو از رو کتاب AVR مهندس "علی کاهه" کپ زدم! همین که مرجع رو گفتم خیلی هم دلش بخواد :)). خسته نباشید
نکته دیگه که باید دقت کنید اینه که پورت ها یک بایتی هستند یعنی نهایت عددی که میشه در اونا قرار داد ۲(۱۱۱۱۱۱۱۱) درمبنای باینری یا ۲۵۵ در مبنای دهدهی خودمون هست. وقتی عدد ۲(۱۱۱۱۱۱۱۱) یا ۲۵۶ رو مثلا در پورت سی قرار بدیم تمام پین های این پورت ۱ میشن و اگر باز عدد ۱۷ معادل ۲(۰۰۰۱۰۰۰۱) رو در اون قرار بدیم (PortC=17) انگاه پینهای ۰ و ۴ این پورت یک خواهند شد. فکر کنم فهمیده باشید قضیه از چه قراره :) فقط باید یکم تبدیل باینری به دهدهی و برعکس رو بلد باشید... اما اگر هنوز کار میکروکنترلر رو درک نکردید و اصلا نمیدونید حالا یک شدن هر پین به چه درد می خوره اصلا نگران نباشید چون به موقع توضیح خواهم داد.
این جلسه می خواستم نحوه پیکربندی پرتها در Bascom رو توضیح بدم (مثلا کدوم پورت ورودی باشه کدوم خروجی و...) اما پیش خودم فکر کردم اصلا ممکنه بعضیها ندونن پورت چیه! پین کیه! بایت چیه! بیت کیه!
برا همین یه توضیح مختصر دادم و از این بیشتر دیگه در مجال و توان و فضا و... ما نمی گنجه. پس پیکربندی هم میمونه برای بعد از آماده شده کد اصلی کنترل ربات که همون موقع کاربردشو در کد به صورت مثال نشون خواهم داد. اینجوری هم قابل فهم تره هم شیرین تر. تا جلسه بعد و شروع آموزش سخت افزار ربات خداحافظ دوستان
.
برنامه نویسی Atmega32:
همونطور که گفته بودم برای برنامه نویسی این میکرو از Basic و کامپایلر معروف Bascom استفاده می کنم (لینک دانلود این کامپایر رو آخر پست گذاشتم). چون من می خوام خیلی گزرا به چند تکنیک وتابع این زبان اون که در برنامه نویسی رباتمون استفاده میشه اشاره کنم اصلا وقت نمیشه درباره یکی یکی ابزارهای محیط این کامپایلر توضیح بدم. اما در آینده با آموزش پروپه های دیگه حتما اونا رو هم پوشش خواهم داد.

همونطور می بینید فقط 7 تا منو از قرار File, Edit, Program, Options, Tools, Window, Help داره. منوی File, Edit, Window, Help تمام برنامه های ویندوز که با هم مو نمی زنه پس اینا هیچ :). منوی Options هم که از اسمش پیداست برای تنضیمات کامپایلر و معرفی نوع و مدل میکرو و.. هست که البته هنگام پروگرام کردن میکرومون سراغش میایم و توضیحات کافی رو میدم. می مونه منوی Program که درواقع گزینه هایی برای کامپایل کد, Syntax Check و شبیه سازی داره که به مجرد شروع برنامه نویسی باهمینا باید سروکله بزنیم.
حتما Bascom رو دانلود کنید و یکم وارسیش کنید چون پس فردا که برگشتم دیگه تفره نمی رم و دیگه آموزش کد نویسی رو خواهیم داشت که اون هم یکی دو جلسه بیشتر طول نمی کشه و بعد میریم سر مباحث الکترونیکی رباتمون. اما باور کنبد لذت برنامه نویسی و سروکله زدن با میکرو اونم AVR چیزی کم از ساخت ربوت نداره! تا پس فردا یا حق.
آخرين مطالب ارسالي