معرفی کامل برد آردوینو-قسمت دوم
در بخش اول آموزش شناخت کامل برد آردوینو، انواع بردهای آردوینو معرفی شدند و محیط نرم افزار نحوه اتصال برد به کامپیوتر توضیح داده شد. در ادامه ورودی و خروجی های دیجیتال و آنالوگ این برد را بررسی کرده و اولین برنامه خودمان توسط این برد را می نویسیم.
بخش هشتم: ورودی دیجیتال
برد آردوینو دو مدل مختلف از پین های ورودی دارد، ورودی های آنالوگ و ورودی های دیجیتال
اجازه بدید پین های ورودی دیجیتال را بررسی کنیم.
پین های دیجیتال ورودی فقط دارای دو حالت هستند، خاموش و روشن. که این دو حالت می تواند به موارد زیر اشاره کند:
- HIGH or LOW
- ۱ یا ۰
- ۵ ولت یا صفر ولت
این ورودی معمولا برای تشخیص وضعیت ولتاژ، در زمان باز و بسته شدن یک کلید استفاده می شود.
ورودی های دیجیتال همچنین می توانند به عنوان پایه و اساس برای تعداد زیادی از پروتکل های ارتباطی دیجیتال به کار گرفته شوند. به این صورت که با ایجاد یک پالس ۵ ولت(HIGH) و یا یک پالس ۰ ولت(LOW) می توان یک سیگنال باینری ایجاد کرد، که اساس همه محاسبات است. این ویژگی برای ارتباط با انواع سنسورها مانند سنسورهای آلتراسونیک و یا برقراری ارتباط با سایر دستگاه ها بسیار مفید است.
به عنوان یک مثال ساده برای کاربرد ورودی دیجیتال، پین ۲ دیجیتال را با یک کلید به ۵V وصل کنید و یک مقاومت ۱۰K از پین ۲ به زمین متصل کنید. سپس از مسیر زیر برنامه Button را بر روی برد آپلود کنید:
File –> Examples –> 2.Digital –> Button
به مقاومت ۱۰K اصطلاحا مقاومت pull-down گفته می شود، چون زمانی که کلید قطع است، پین دیجیتال به زمین متصل می باشد. زمانی که کلید وصل می شود، با توجه به اینکه مقاومت مسیر کلید از مقاومت ۱۰K بسیارکمتر است، در نتیجه جریان دیگر از مقاومت عبور نخواهد کرد و مسیر جریان از ۵V به سمت پین ۲ دیجیتال می باشد. این موضوع به این دلیل است که جریان همیشه مسیر با مقاومت کمتر را انتخاب می کند.
بخش نهم: ورودی آنالوگ
در کنار پین های دیجیتال ورودی، برد آردوینو دارای تعدادی پین ورودی آنالوگ نیز می باشد.
پین های ورودی آنالوگ، سیگنال آنالوگ را دریافت کرده و با استفاده از یک مبدل آنالوگ به دیجیتال(ADC) 10 بیتی، این سیگنال را به اعدادی بین ۰ تا ۱۰۲۳(با گام ۴.۹mV) تبدیل می کنند.
این ورودی ها برای خواندن اطلاعات سنسورهای مقاومتی و همچنین ولتاژهای متغییر بین ۰ تا ۵ ولت بسیار مناسب هستند. زمانی که با انواع مختلفی از مدارهای آنالوگ سروکار داشته باشید، اهمیت این بخش بیشتر مشخص می شود.
مثالی که در بخش هفتم این مقاله بیان شد، در واقع نحوه به کارگیری یکی از پین های ورودی آنالوگ را بیان کرده است.
بخش دهم: خروجی های دیجیتال
یک پین خروجی دیجیتال می تواند در وضعیت HIGH(5V) و یا LOW(0V) قرار بگیرد، که امکان خاموش یا روشن کردن یک دستگاه و یا کاربردهای دیگری را برای برد آردوینو فراهم می کند.
مهم ترین کاربرد این پین ها، اجازه برقراری ارتباط دیجیتال می باشد. با روشن و خاموش کردن سریع یک پین، شما در حال ایجاد حالت های باینری ۰ و ۱ هستید که توسط تعداد بسیار زیادی از دستگاه های الکترونیکی، به عنوان یک سیگنال باینری شناخته می شود. با استفاده از این روش می توانید با تعدادی از پروتکل های مختلف ارتباط برقرار کنید.
مثال LED چشمک زن بیان شده در بخش ششم، در واقع عملکرد یک خروجی دیجیتال را نشان می دهد.
بخش یازدهم: خروجی های آنالوگ
همان طور که در ابتدای این مقاله بیان شده، برد آردوینو دارای یک سری ویژگی ها خاص می باشد. یک از این ویژگی ها قابلیت مدولاسیون پهنای پالس(pulse width modulation-PWM) می باشد، که روشی برای تولید خروجی شبه آنالوگ توسط برد آردوینو است.
مدولاسیون پهنای پالس یا PWM برای تولید یک سیگنال شبه آنالوگ، از خاموش و روشن کردن سریع یک پین استفاده می کند. به طور مثال اگر یک LED خیلی سریع خاموش و روشن شود(تقریبا با فاصله زمانی ۵ms)، این LED نیمی از نور خود را خواهد داشت، چون در واقع نصف توان اصلی را دریافت می کند. حال اگر این LED برای مدت ۱ms روشن و برای ۹ms خاموش باشد، LED در واقع ۱/۱۰ نور خود را خواهد داشت چون ۱/۱۰ ولتاژ را دریافت کرده است.
PWM کلید تعداد زیادی از پروژه ها و کاربردها می باشد، مانند: تولید صدا، کنترل روشنایی چراغ ها و کنترل سرعت یک موتور
برای اینکه یک پروژه PWM را خودتان را راه اندازی کنید و عملکرد آن را مشاهده کنید، یک LED سری با یک مقاومت ۲۲۰ اهم را به پین دیجیتال شماره ۹ آردوینو UNO متصل کرده و سر دیگر آن را به زمین متصل کنید، سپس برنامه زیر را بر روی برد آپلود نمایید:
File –> Examples –> 3.Analog –> Fading
بخش دوازدهم: خودتان کدنویسی کنید
هر زبان برنامه نویسی یک ساختار و اصولی دارد که شما برای کدنویسی باید حتما آن را یاد بگیرد. به طور مثال در صورتی که شما دستور زبان و علائم نگارشی انگلیسی را بلد نباشید، می توانید یک کتاب به زبان انگلیسی بنویسید، ولی هیچ کس قادر به درک آن نخواهد بود.
تعدادی از نکات مهمی که در حین کدنویسی باید به آنها توجه کنید عبارتند از:
- به برنامه آردوینو اصلاحا طرح اولیه یا sketch گفته می شود.
- تمامی کدها در برنامه آردوینو به ترتیب از بالا به پایین اجرا می شوند.
- برنامه های آردوینو معمولا به پنج بخش تقسیم می شوند:
- هر برنامه معمولا با یک هدر و سربرگ آغاز می شود که در آن توضیح داده شده که این برنامه توسط چه کسی نوشته شده و چه کاری انجام می دهد.
- در مرحله بعد معمولا باید متغیرهای عمومی معرفی شوند. در این بخش معمولا نام های ثابتی به پین های مختلف آردوینو داده می شود.
- بعد از تنظیم مقادیر اولیه، وارد بخش setup در برنامه آردوینو می شوید. در تابع setup، در صورت لزوم شرایط اولیه متغییرها را تنظیم می کنیم و هر کد مقدماتی که فقط می خواهیم یکبار اجرا شود را، در این بخش می نویسیم. تنظیمات اولیه که برای اجرای سریال مانیتور لازم است، در این بخش انجام میگیرد.
- بعد از تابع setup وارد بخش loop می شویم که بخش اصلی برنامه می باشد. این بخش تنها جایی نیست که کدهای اصلی شما نوشته می شوند، بلکه تا زمانی که برنامه شما اجرا می شود، این بخش نیز بارها و بارها اجرا خواهد شد.
- در پایین بخش loop معمولا بقیه توابع تعریف شده قرار میگیرند. این توابع توسط کاربر تعریف می شوند و برای به کارگیری آنها باید در توابع setup و loop فراخوانی شوند. در حین برنامه زمانی که این توابع فراخوانی می شود، آردوینو وارد این توابع شده و به ترتیب کدهای آنها را اجرا می کند. سپس به برنامه اسلی برگشته و خط بعدی کد اجرا می شود. استفاده از توابع در کدنویسی بسیار مهم است، چون به جای اینکه یک بخشی از کد که لازم است در برنامه چندین بار اجرا شود را در بخش های مختلف برنامه تکرار کنید، آن را درون یک تابع می نویسید و هر زمان که لازم بود از آن استفاده می کنید. شما می توانید تابع را هرچند بار که بخواهید در طول برنامه فراخوانی کنید و این موضوع باعث می شود که از فضای حافظه میکرو به درستی استفاده کنید. از دیگر مزایای استفاده از توابع در برنامه سادگی درک برنامه و خواندن آن می باشد.
- در راستای تمام موارد بالا که گفته شد، تنظیمات تنها دو بخش از برنامه یعنی setup و loop اجباری است.
- کدها باید طبق زبان برنامه نویسی آردوینو که بر اساس زبان برنامه نویسی C می باشد، نوشته شوند.
- تقریبا در انتهای تمامی خطوط و دستورات برنامه باید از علامت “;” استفاده کنید.
- دستورات شرطی نیازی به استفاده از “;” در انتهای خظ ندارند.
- دستورات شرطی قوانین و ساختر خود را دارند که می توانید از بخش ساختارهای کنترلی در پیج اصلی بردهای آردوینو آنها را مطالعه کنید.
- متغیرها محلی برای ذخیره سازی اعداد هستند که می توانید مقادیر عددی را وارد آنها کرده و از آنها خارج کنید. قبل از استفاده از مغیرها در کد باید ابتدا آنها را معرفی کرده و نوع آنها را نیز مشخص کنید(int, char, …).
خب بعد از توضیحات ارائه شده در بالا، حال می خواهیم اولین برنامه خود را بنویسیم. قصد داریم که مقدار یک فتوسل که به پین A0 آردوینو متصل می باشد را خوانده و میزان نور LED متصل شده به پین D9 را کنترل کنیم.
در ابتدا برنامه BareMinimum را از مسیر زیر باز کنید:
File –> Examples –> 1.Basic –> BareMinimum
برنامه BareMinimum به صورت زیر است:
void setup() {
// put your setup code here, to run once:
}
void loop() {
// put your main code here, to run repeatedly:
}
در ادامه ابتدا یک سربرگ درست می کنیم و توضیحات مربوط به برنامه را در این قسمت وارد می کنیم:
/*
LED Dimmer
by Genius Arduino Programmer
۲۰۱۲
Controls the brightness of an LED on pin D9
based on the reading of a photocell on pin A0
This code is in the Public Domain
*/
void setup() {
// put your setup code here, to run once:
}
void loop() {
// put your main code here, to run repeatedly:
}
در ادامه برنامه ابتدا پین های مورد استفاده را مشخص کرده و متغییرها را معرفی می کنیم:
/*
LED Dimmer
by Genius Arduino Programmer
۲۰۱۲
Controls the brightness of an LED on pin D9
based on the reading of a photocell on pin A0
This code is in the Public Domain
*/
// name analog pin 0 a constant name
const int analogInPin = A0;
// name digital pin 9 a constant name
const int LEDPin = 9;
//variable for reading a photocell
int photocell;
void setup() {
// put your setup code here, to run once:
}
void loop() {
// put your main code here, to run repeatedly:
}
حال در ادامه برنامه کد اصلی را می نویسیم:
// name analog pin 0 a constant name
const int analogInPin = A0;
// name digital pin 9 a constant name
const int LEDPin = 9;
//variable for reading a photocell
int photocell;
void setup() {
//nothing here right now
}
void loop() {
//read the analog in pin and set the reading to the photocell variable
photocell = analogRead(analogInPin);
//control the LED pin using the value read by the photocell
analogWrite(LEDPin, photocell);
//pause the code for 1/10 second
//۱ second = 1000
delay(100);
}
در صورتی که بخواهیم مشاهده کنیم که دقیقا پین ورودی آنالوگ که به فتوسل متصل است، چه مقادیری را می خواند، باید از سریال مانیتور استفاده کنیم. در ادامه سریال مانیتور را فعال کرده و مشاهده مقادیر را تنظیم می کنیم:
/*
LED Dimmer
by Genius Arduino Programmer
۲۰۱۲
Controls the brightness of an LED on pin D9
based on the reading of a photocell on pin A0
This code is in the Public Domain
*/
// name analog pin 0 a constant name
const int analogInPin = A0;
// name digital pin 9 a constant name
const int LEDPin = 9;
//variable for reading a photocell
int photocell;
void setup() {
Serial.begin(9600);
}
void loop() {
//read the analog in pin and set the reading to the photocell variable
photocell = analogRead(analogInPin);
//print the photocell value into the serial monitor
Serial.print(“Photocell = ” );
Serial.println(photocell);
//control the LED pin using the value read by the photocell
analogWrite(LEDPin, photocell);
//pause the code for 1/10 second
//۱ second = 1000
delay(100);
}
بخش سیزدهم: شیلدهای آردوینو
شیلدها در واقع بردهایی با ویژگی های خاص هستند که بر روی برد آردوینو UNO نصب می شوند و قابلیت های خاصی را به برد آردوینو اضافه می کنند.
از آنجایی که برد آردوینو متن باز است، هر کسی با توجه به نیاز خود می تواند شیلد مورد نظر خود را طراحی کرده و به برد اضافه کند. به همین دلیل شلیدهای فراوانی در بازار موجود است.
بخش چهاردهم: ساخت یک مدار خارجی
هر چه پروژه های شما پیچیده تر می شود، شما باید از مدارهای اضافه دیگری در کنار برد آردوینو استفاده کنید، که این موضوع نیاز به داشت الکترونیک دارد. پس باید به سراغ یادگیری الکترونیک بروید.
بخش پانزدهم: فراتر رفتن
حال با توجه به اطلاعاتی که بدست آورده اید، وقت انجام پروژه مورد نظرتان است. در هر زمینه که فکرش را بکنید توسط برد آردوینو پروژه انجام شده و اطلاعات مربوط به آن را می توانید با یک سرچ ساده در اینترنت پیدا کنید.
میانگین امتیاز ۰ / ۵. تعداد رای: ۰
دیدگاهی در مورد “معرفی کامل برد آردوینو-قسمت دوم”
ممنون عالی بود لطفا پروژه های کاربردی هم بذارید برامون
بله حتما