آردوینو آردوینو Arduino Uno آموزش آردوینو ترفند میکروکنترلر AVR

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

Programming-Arduino-with-CodeVisionn
نوشته شده توسط علی زاهدی

در آموزش برنامه نویسی AVR با استفاده از بوت لودر و نرم افزار آردوینو با نرم‌افزار آردونیو بر روی میکروکنترلر Atmega8 برنامه ای پروگرام کردیم. در این آموزش قصد داریم عکس این عمل را انجام دهیم. یعنی با استفاده از نرم‌افزار کدویژن بر روی برد آردوینو Uno برنامه نویسی کنیم. در ادامه با مرجع تخصصی آردوینو به زبان فارسی، دیجی اسپارک همراه باشید.

 


برد آردوینو


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

 

Arduino

 


نرم‌افزار کدویژن


نرم‌افزار کدویژن یک کامپایلر بسیار محبوب (در ایران) برای زبان C است. که از میکروکنترلر های خانواده AVR (AT90, ATtiny, ATmega, Xmega) پشتیبانی می‌کند. یکی از دلایل محبوبیت نرم افزار کدویژن بخش CodeWizard است، که این امکان را در اختیار شما میگذارد تا بدون داشتن اطلاعات در مورد رجیستر های موجود در میکروکنترلر بصورت گرافیکی پیکربندی های اولیه برنامه ی مورد نظر خود را انجام دهید. سپس نرم‌افزار بصورت خودکار کد را برای شما تولید می‌کند. و با با کمی تغیرات میتواند برنامه مورد نظر خود را بنویسید. این عمل باعث افزایش سرعت برنامه‌نویسی می‌شود.

CodeVision

 


اتصالات پروژه


برای برنامه نویسی بر روی برد آردوینو Uno فقط کافیست تا برد را با استفاده از کابل USB به سیستم متصل نمایید. سپس همانند تصویر پایه آند LED را با استفاده از یک مقاومت به پایه شماره ۱۳ آردوینو Uno متصل کنید و پایه کاتد LED را به پایه GND برد آردوینو متصل کنید.

Arduino Uno

 


کدنویسی پروژه


جهت اجرای کدها باید در نرم افزار کدویژن، کدها را آماده کرده و سپس پروگرام کنید. چنانچه این روش را نمی‌دانید به آموزش نحوه ی ساخت پروژه جدید و پروگرام کردن میکروکنترلر مراجعه کنید. پس از ساخت پروژه‌ی جدید در نرم افزار کدویژن CodeVision در منو Configure Project بخش C Compiler گزینه Clock را بر روی ۱۶ مگاهرتز تنظیم نمایید سپس برد آردوینو را به سیستم متصل نمایید و در بخش After Build گزینه Action را بر روی  Upload to Arduino تنظیم کنید. گزینه Arduino Board Type را بر روی Arduino Uno ATmega328P تنظیم کنید. از گزینه COM Port پورتی که برد آردوینو را به آن متصل نموده اید انتخاب کنید و گزینه Ok را بزنید. سپس کدهای زیر را داخل برنامه کپی کنید.

  • توجه داشته باشید که، پروگرام با این روش هیچ آسیبی به بوت‌لودر آردوینو نمی‌رساند و پس از پروگرام با این روش دوباره می‌توانید با استفاده از نرم افزار آردوینو، برد را پروگرام کنید.
#include <mega328p.h>
#include <delay.h>

void main(void)
  { 
  // Crystal Oscillator division factor: 1
  #pragma optsize-
  CLKPR=(1<<CLKPCE);
  CLKPR=(0<<CLKPCE) | (0<<CLKPS3) | (0<<CLKPS2) | (0<<CLKPS1) | (0<<CLKPS0);
  #ifdef _OPTIMIZE_SIZE_
  #pragma optsize+
  #endif
  // Input/Output Ports initialization
  DDRB.5=1;
  while (1)
    {
    PORTB.5=~PORTB.5;
    delay_ms(1000);
    }
  }

 

 


تحلیل کد پروگرام شده روی برد آردوینو


در ابتدا کتابخانه هایی که برای نوشتن برنامه نیاز است را به پرژه اضافه شده است. که در این پروژه شامل کتابخانه های میکروکنترلر ATmega328P و کتابخانه Delay است.

#include <mega328p.h>
#include <delay.h>

سپس در تابع main ابتدا پیکربندی مربوط به تنظیم کلاک میکروکنترلر صورت گرفته است.

#pragma optsize-
 CLKPR=(1<<CLKPCE); 
CLKPR=(0<<CLKPCE) | (0<<CLKPS3) | (0<<CLKPS2) | (0<<CLKPS1) | (0<<CLKPS0); 
#ifdef _OPTIMIZE_SIZE_
 #pragma optsize+ 
#endif

سپس با توجه به تصویر زیر پایه شماره ۱۳ آردوینو به پایه شماره ۵ پورت B متصل است. پایه PB.5 را  بصورت خروجی تعریف کرده و داخل حلقه ی while(1) با تاخیر یک ثانیه خروجی Toggle می‌شود.

ATmega328p Pinout

 DDRB.5=1;
 while (1)
 { 
 PORTB.5=~PORTB.5;
 delay_ms(1000);
 }

 


قطعات مورد نیاز پروژه


 

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

 

در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.

 

درباره نویسنده

علی زاهدی

برنامه نویس و طراح سیستم های مبتنی بر میکروکنترلر

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

تبادل نظر و رفع عیب با ثبت دیدگاه

۱۵ دیدگاه

  • سلام
    یعنی با این روش میتونیم هر کدی را روی آردوینو بریزیم؟؟ من ترس داشتم که از نرم افزار آردوینو استفاده کنم، ولی الان گفتید با کد ویژن هم میشه

    • با سلام، از توجه شما سپاسگزارم
      بله این امکان برای یک سری برد های آردوینو وجود دارد.

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

      • با سلام، از توجه شما سپاسگزارم
        متوجه منظور شما نشدم. این روش برای پروگرام کردن برد های آردوینو است. فکر نمیکنم نیاز به pcb برای این روش باشد.

  • سلام وقت بخیر
    در صورت وجود متغیری که در eeprom سیو شده باشد اردینو یا پروگرام نمیشود یا ارور میده
    ارور هم میگه بوت لودر اردینو از پروگرام eeprom پشتیبانی نمیکند
    مشکل چیه؟!

    • با سلام
      داخل کدویژن به ۲ صورت میتوان متغیر را داخل EEPROM ذخیره کرد. یک راه نوشتن عبارت eeprom قبل از نوع متغیر است. و راه دیگر استفاده از کتابخانه eeprom.h، فکر می‌کنم برد های آردوینو راه اول را پشتیبانی نمی‌کنند. بهتر از از روش دوم اسفاده کنید.

  • سلام
    فک کنم خود شما این روش رو تست نکردین و از یه جایی کپی کردین که اونم درست نیس چون گزینه ای به نام Arduino Board Type وجود ندارد. امان از مطالب فارسی در زمینه الکترونیک خیلی ضعیف و بدرد نخور.

    • با سلام
      این مورد توسط نویسنده تست شده است و اگر گزینه مورد نظر را نمیبینید بخاطر نسخه متفاوت مورد استفاده شماست. لطفا زحمات همکاران بنده را بی دلیل زیرسوال نبرید.