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

 آموزش  رباتیک برای دانش آموزان و همه علاقمندان علوم رباتیک و الکترونیک

آموزشگاه رباتیک در تهران     تلفن    :  77422883

 

 

 

 

 

درس سی و یک  : ادامه آموزش کدویژن

 

در اين جلسه هم بحث برنامه نويسي زبان C را دنبال مي‌كنيم و در ادامه‌ي مبحث جلسه‌ي قبل، شما را با 2 ساختار كنترلي ديگر آشنا مي‌كنيم.


ابتدا يك نكته‌ي ديگر در مورد ساختار
if() و else:

الزامي براي نوشتن قسمت else نيست، يعني مي‌توان فقط if را بدون داشتن else استفاده كرد. همانطور كه مي‌دانيد، از else زماني استفاده مي‌كنيم كه بخواهيم در صورت نادرست بودن شروط ، دستورات مشخصي اجرا شوند(به جلسه‌ي 30 مراجعه شود)

 

ساختار while():

عملكرد اين ساختار به اين صورت است كه ما شرط يا شروطي را براي آن تعريف مي‌كنيم و تا زمانيكه اين شرط يا شروط برقرار باشند، دستوراتي كه تعيين مي‌كنيم دائماً اجرا شوند و مكرراً تا زمانيكه شروط برقرار هستند اين دستورات تكرار مي‌شوند.

اين ساختار به صورت زير نوشته مي‌شود.

while( شرط يا شروط )

{

دستور1 ;

دستور2 ;

دستور3 ;

}

دستورات 1 تا 3 و كلاً هر دستوري كه در قسمت مشخص شده نوشته شده باشد، مكرراً تازمانيكه شروط داخل پرانتز برقرار باشند اجرا مي‌شوند.

نكات مهم در مورد اين ساختار:

تمام نكاتي كه در مورد ساختار else-if در جلسه‌ي گذشته مطرح كرديم در مورد سختار while هم صادق هستند.

همانطور كه قبلاً هم گفته شد، زبان C يك زبان "Case Sensitive" است، يعني در اين زبان بين حروف بزرگ و كوچك تفاوت است. while، if، else همگي با حروف كوچك نوشته مي‌شوند و اگر با حروف بزرگ نوشته شوند كار نمي‌كنند.

همانطور كه قبلاً گفته شد، دستور while(1) يك حلقه‌ي بي نهايت است و دستورات داخل آن تا زمانيكه ميكروكنترلر روشن باشد مكرراً اجرا خواهند شد.

در ادامه‌ي اين جلسه قصد داريم يكي از مهمترين و پركاربردترين قابليت‌هاي ميكروكنترلر‌ ATmega16 به نام ADC يا همان A to D را معرفي كنيم.

 

ADC چيست؟

ADC مخفف "Analog-Digital Converter" و به معناي مبدل آنالوگ به ديجيتال است.

اگر بخواهيم اين قابليت را به صورت ساده توصيف كنيم، يك ولت متر ديجيتال است كه بر روي پايه‌هاي ميكروكنترلر نصب شده است و به وسيله‌ي آن مي‌توان ولتاژ پايه‌هاي ورودي را با دقت مناسبي اندازه‌گيري كرد. همانطور كه مي‌دانيد ما تا به حال در هيچ‌ آي سي نمي‌توانستيم شدت ولتاژ ورودي را به دقت اندازه گيري كنيم و فقط مي‌توانستيم بدانيم آيا ولتاژ ورودي بالاي 2.5 ولت است يا زير 2.5 ولت، و ورودي‌هايمان را به صورت 0 و 1 برسي مي‌كرديم.(آي سي ها ورودي‌هاي خود را منطقي مي‌كنند)

اما به كمك اين قابليتِ ميكروكنترلر‌هايِ خانواده‌ي AVR، ما مي‌توانيم با دقت مناسبي ولتاژ ورودي خود را بررسي كنيم.

يكي از كاربرد‌هاي مهم ADC مي‌تواند در ربات‌هاي امدادگر دانش‌اموزي براي تشخيص رنگ باشد. همانطور كه مي‌دانيد هر رنگ، ميزان مشخصي از نور را بازتاب مي‌دهد و بقيه‌ را جذب مي‌كند، ما با اندازه‌گيري مقدار نور بازتاب شده، ميتوانيم رنگ را تشخيص دهيم. در اينجا ما براي اندازه‌گيري ميزان شدت نور بازتاب شده، بايد از ADC ميكروكنترلر استفاده ‌كنيم تا بتوانيم ولتاژ خروجي سنسور نوري خود را به دقت اندازه‌گيري كنيم.

ADC يكي از مهمترين و پر كاربردترين قابليت‌هاي ميكروكنترلر‌هاي خانواده‌ي AVR است كه به تدريج با كاربرد‌هاي فراوان آن در بخش‌هاي مختلف آشنا خواهيد شد.

در اين جلسه ما نحوه‌ي انجام تنظيمات اوليه‌ي CodeWizard براي راه‌اندازي ADC را آموزش مي‌دهيم.

ابتدا CodeWizard را باز كرده و در آن، لبه‌ي ADC را انتخاب مي‌كنيم، و در لبه‌ي ADC، گزينه‌ي "ADC Enabled" را تيك مي‌زنيم و سپس مانند شكل زير تنظيمات را انجام مي‌دهيد :



همانطور كه مي‌بينيد، دومين قسمتي كه تيك زده شده "
Use 8 bits" است.در ادامه در مورد دليل اين كار توضيح داده شده است.

همانطور كه گفته شد، وظيفه‌ي ADC، اندازه گيري ولتاژي است كه بر روي پايه‌ي ورودي قرار گرفته است. اما ADC عددي را كه مولتي متر به ما نشان مي‌دهد گزارش نمي‌كند، بلكه متناسب با ولتاژ پايه‌ي ورودي، عددي را در بازه‌ي 0 تا 255 به ما گزارش مي‌كند. يعني عدد 0 را به ولتاژ 0ولت اختصاص مي‌دهد، و 255 را به 5 ولت؛ و هر ولتاژي بين 0 تا 5 ولت را، متناسباً، با عددي بين 0 تا 255 گزارش مي‌كند. در حقيقت براي سهولت در محاسبه، مي توانيد فرض كنيد اندازه‌ي ولتاژ ورودي بر حسب ولت، ضربدر 51، برابرست با عددي كه ADC براي آن ولتاژ مشخص، به ما گزارش مي‌كند.

به عنوان مثالي ديگر، اگر خروجي مدار يك سنسور نوري را به پايه‌ي ورودي ADC متصل كرده باشيد، و خروجي مدار سنسور 2 ولت باشد،‌ADC عدد 102 را به ما گزارش مي‌كند.

اگر تيكِ گزينه‌ي "Use 8 bits" را برداريم، بازه‌ي ما به 0 تا 1024، گشترش پيدا خواهد كرد و در حقيقت دقت اندازه‌گيري ما 4 برابر خواهد شد. يعني 5 ولت ما، به جاي 255، با عدد 1024 گزارش خواهد شد، و ولتاژهاي بين 0 و 5 ولت نيز متناسباً با عددي بين 0 تا 1024 گزارش خواهند شد. اما در كار‌هاي ما نيازي به اين دقت بالا نيست و معمولاً "Use 8 bits" را تيك مي‌زنيم تا بازه‌ي ما بين 0 تا 255 باشد.

درباره‌ي تنظيمات ADC مطالب زيادي وجود دارد كه ما از مطرح كردن تمام آن‌ها در اين بخش مي‌پرهيزيم، دوستاني كه علاقه‌مند هستند، مي‌توانند از طريق كتاب‌هاي مرجع و ديگر مراجع موجود، مطلب را پي بگيرند، اما در همين حدي كه مطالب در اينجا مطرح مي‌شوند، براي كار ما تقريباً كافيست و الزامي در مطالعه‌ي منابع جانبي نيست.

در جلسه‌ي آينده در مورد نحوه‌ي دريافت اين عددي كه قرار است ADC به ما گزارش دهد توضيح خواهيم داد.

 

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

 

 

در جلسه ی گذشته در مورد ساختار ADC یا همان مبدل آنالوگ به دیجیتال توضیحات مفصل داده شد. در این جلسه، نحوه ی استفاده از ADC در برنامه را توضیح خواهیم داد.
در میکرو کنترلر
ATMEGA16، 8 پایه ی به ADC اختصاص داده شده، یعنی شما می توانید به صورت همزمان، خروجیِ 8 سنسور یا مدار جانبی را به میکروکنترلر خود وصل کنید و اطلاعات آن ها را به وسیله ی ADC دریافت کنید.

اما این 8 پایه کدام پایه ها هستند؟

این 8 پایه، پایه مربوط به پورت A هستند که با فعال کردن ADC در CodeWizard، این پایه ها در اختیار ADC قرار می گیرند. دقت کنید که برای استفده از ADC حتماً باید قبلاً تنظیمات را در CodeWizard انجام داده باشید.
این 8 پایه طبق شکل زیر از ADC0 تا ADC7 نام گذاری شده اند.

چگونه از ADC در برنامه استفاده کنیم؟

هنگامیکه شما تنظیمات اولیه را برای فعال سازی ADC در CodeWizard انجام می دهید، به شما این امکان داده می شود که در هر قسمت از برنامه، مقدار هر یک از 8 ADC را بخوانید و از آن استفاده کنید. عبارت" (شماره ي ADC )read_adc " در هر قسمت از برنامه، حاوي مقدار ADC مورد نظر شماست. مثلاً اگر بخواهيم مقدار ADC0 را بررسي كنيم كه آيا از 100 بزرگتر است يا خير، به شكل زير عمل مي‌كنيم:

if(read_adc(0) > 100)

يا مثلاً اگر بخواهيم مقدار ADC1 را در داخل يك متغير نگه داري كنيم، به شكل زير عمل مي كنيم:

int a;
a= read_adc(1);

مبدل آنالوگ به ديجيتال، يكي از مهمترين قابليت‌هايست كه اكثر ميكروكنترلر‌هاي خانواده‌ي AVR آن را دارند. در ميكروكنترلر‌هاي قديمي‌تر، براي اين كار، بايد يك آي سي به صورت جداگانه بر روي مدار تعبيه مي‌شد.

در جلسه‌ي آينده مبحث بسيار مهم PWM را شروع خواهيم كرد. به وسيله‌ي اين قابليت بسيار مهم،‌ما مي‌توانيم سرعت موتور‌ها يا هر المان ديگري كه به ميكروكنترلر متصل مي‌شود را كنترل كنيم. PWM نيز يكي از قابليت‌هاي مهم خانواده‌ي AVR است كه در جلسات آينده مفصلاً به آن خواهيم پرداخت.

 

درس بعد    درس قبلی

 

درس 4  و 3                درس 6 و 5             درس 8 و 7         درس 10 و 9         درس   12  و  11               درس 14  و 13

 

درس  16 و  15             درس 18 و 17            درس 20 و 19        درس 22 و 21        درس 24 و 23               درس 26 و  25

 

درس 28 و 27                درس 30 و 29          درس 32 و 31        درس 34 و 33          درس 36 و 35               درس 38 و 37   

 

درس 40 و 39                درس 42 و 41           درس 44 و 43          درس 46 و 45          درس 48 و47             درس 50 و 49

 

درس 52 و 51            درس 54 و 53            درس 56 و 55          درس 58 و  57          درس 60 و 59              درس 62 و 61

 

 

 

آموزش رایگان رباتیک برای دانش آموزان و همه علاقمندان

 

آموزش رباتیک برای کودکان 4 تا 9 ساله

 

  آموزش رباتیک برای دانش آموزان

 

 آموزش کامپیوتر برای کودکان 4 تا 9 ساله

 

  آموزش کامپیوتر برای  دانش آموزان 

 

آموزش  کاربردی و عمومی کامپیوتر برای همه

 

 آموزش مهارتهای ICDL1 بصورت کاربردی

 

 آموزش مهارتهای ICDL2 بصورت کاربردی

 

آموزش  تایپ  10  انگشتی  -     تضمینی

 

آموزش کارمند امور دفتری و منشیگری - بخش  IT

 

آموزش سخت افزار کامپیوتر

 

آموزش فتوشاپ PHOTOSHOP

 

آموزش کورل  COREL

 

 آموزش تری دی مکس           3D MAX  

 

    آموزش  اتوکد   AUTOCAD

 

دوره های استاندار  فناوری اطلاعات  و علوم کامپیوتر ( بیش از 250 رشته )

 

 دوره های استاندار    الکترونیک ( بیش از 80 رشته )

 

       دوره های اخذ دیپلم کار دانش

 

آموزش عمومی و کاربردی برای دانش آموزان  

آموزش رباتیک برای دانش آموزان  از سوم دبستان به بالاتر
آموزش کامپیوتر برای دانش آموزان
آموزش اینترنت برای دانش آموزان
آموزش هفت مهارت ICDL برای دانش آموزان
آموزش فتوشاپ برای دانش آموزان

دوره های عمومی کاربردی برای شاغلین و کارجویان

   آموزش  فتو شاپ برای بزرگسالان (فشرده و کوتاه مدت)
آموزش کاربردی کامپیوتر برای بزرگسالان ( کوتاه مدت)
آموزش اینترنت برای بزرگسالان (فشرده و کوتاه مدت)
   آموزش  مهارت ICDL برای بزرگسالان (  کوتاه مدت)
 

آموزش تخصصی رباتیک  و  الکترونیک    

آموزش  اصول الکترونیک ( در چهار سطح )
آموزش نرم افزاری کاربردی الکترونیک (طراحی و آزمایشگاه )  
آموزش رباتیک در 12 ترم  ( و در سه سطح )
آموزش میکروکنترلر AVR ( در سه سطح )
آموزش میکرو کنترل ARM ( در سه سطح )
آموزش مبانی رباتیک ( استاندار فنی و حرفه ای )
آموزش سخت افزار  رباتیک ( استاندار فنی و حرفه ای ) 
آموزش میکروکنترلرها در رباتیک ( استاندار فنی و حرفه ای ) 
آموزش سخت افزار  رباتیک ( استاندار فنی و حرفه ای  
آموزش PSPICE  ( شبیه سازی مدارات الکترونیکی )
آموزش  ORCAD ( تحلیل مدارات )
آموزش PROTEUS ( طراحی فیبر مدارچاپی ) 
آموزش ALTIUM DESIGNER ( طراحی مدارچاپی )  
آموزش PROTEL  DXP (  طراحی مدارچاپی و رسم شماتیک ) 
آموزش  PIC  ( در سه سطح )
آموزش FPGA) VHDL )
آموزش   LABVIEW
آموزش   EWB ( الکترونیک ورک بنج )
آموزش  XMEGA
 

دوره های استاندار  فناوری اطلاعات ( بیش از 250 رشته )

آموزش 7 مهارت  ICDL 1
آموزش 7 مهارت  ICDL 2
مبانی فناوری اطلاعات ( IT  BASICS )
رایانه کار درجه 2
رایانه کار درجه 1
رایانه کار نرم افزار POWER POINT  
شهروند الکترونیکی (کار با اینترنت)
   آموزش   طراحی وب سایت
آموزش دوره کامل طراحی وب سایت
آموزش طراحی وب سایت با JOOMLA ( جوملا)
آموزش طراحی سایت با   WORDPRESS   ( ورد پرس )
آموزش  فروشگاه ساز MAGENTO (  مجنتو )
آموزش طراحی وب سایت  استاتیک

  آموزش    JQUERY   (جی کوئری ) 

    آموزش    SEO   ( سئو )

آموزش  ساخت فروشگاه اینترنتی

آموزش  وب   ASP.NET  -C# - NET-SQL-  

 

  آموزش  برنامه نویسی

آموزش برنامه نویسی  (اندروید ) ANDROID
آموزش برنامه نویسی( جاوا ) JAVA
آموزش برنامه نویسی ( سی پلاس پلاس )  ++C
آموزش برنامه نویسی   ( ای اس پی ) ASP.NET
آموزش برنامه نویسی   ( سی شارپ ) C#.NET
آموزش   SQL  SERVER
آموزش برنامه نویسی  کاربردی  
آموزش برنامه نویسی   ( لینوکس )  LINUX
آموزش  ساختمان داده و الگوریتم 
 

  آموزش شبکه و سخت افزار

آموزش فشرده ( نت ورک پلاس ) +NETWORK
آموزش فشرده شبکه   MCITP
آموزش فشرده شبکه  CCNA
آموزش برنامه نویسی   ( ای اس پی ) ASP.NET
آموزش برنامه نویسی   ( سی شارپ ) C#.NET
آموزش عملی سخت افزار +A
آموزش  امنیت شبکه
 

آموزش گرافیک 

آموزش فتوشاپ PHOTOSHOP   
آموزش کورل  COREL
آموزش ایلوستریتور ILLUSTRATOR   
آموزش ایندیزاین   INDESIGN
 

طراحی سه بعدی 

آموزش تری دی مکس  3D MAX   
آموزش  V-AAY   
آموزش راینو   RHINO   
آموزش ایلوستریتور ILLUSTRATOR   
 

آموزش  فنی و مهندسی  

آموزش کتیا  CATIA   
آموزش سالیدورک   SOLID WORKS
آموزش اتوکد  AUTO CAD   
آموزش متلب   MATLAB