نرم افزار inspectAR از تکنولوژی واقعیت افزوده برای نشان دادن قطعات و مدارها بر روی PCB در زمان طراحی آن استفاده میکند.




"سریال پلاتر" شبیه "سریال مانیتور" است ولی به جای کلمات، خروجی را رسم میکند.
دسترسی به سریال پلاتر:
Tools --> Serial Plotter

مثال: ترسیم منحنی های سینوس و کسینوس در آردوینو:
void setup() {
Serial.begin(9600);
}
void loop() {
for (float j = 0; j < 360.00; j=j+2) {
Serial.print(sin(j * (PI / 180.00)));
Serial.print(" ");
Serial.println(cos(j * (PI / 180.00)));
}
}

عدد 9600 مقدار baud rate است که بیانگر سرعت انتقال است.
برای پلات چند نوع خط، باید بین دستورهاحتما یک خط خالی به شکل زیر اضافه شود:
Serial.print(دستور اول);
Serial.print(" ");
Serial.println(دستور دوم);
(www.electronicwings.com منبع: سایت)

در نرم افزار آردوینو IDE، پنجره ای به نام "سریال مانیتور" وجود دارد که بسیار پرکاربرد است و می توانید داده های سریال را (به صورت متن) در آن مشاهده کنید: مثلا مقدارهای ارسال شده از یک سنسور دما یا سنسور رطوبت خاک...

دسترسی به سریال مانیتور:
Tools --> Serial Monitor

مثال:
void setup() {
Serial.begin (9600);
}
void loop() {
Serial.println("hello");
delay(1000);
}
عدد 9600 مقدار baud rate است که بیانگر سرعت انتقال است.
با اجرای این برنامه: کلمه hello بعد از هر 1000 میلی ثانیه (یک ثانیه) یک بار روی «سریال مانیتور» نوشته میشود.

دستورات ارتباط «سریال»:
Serial.begin (baud rate)
Serial.print (data, format type (optional))
Serial.println (data, format type (optional))
دستور بالا، بعد از هر بار اجرا، میرود اول خط بعد
Serial.write()
Serial.available()
Serial.read()
Serial.readString()

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



لیست بعضی از معروف ترین شیلدهای آردوینو:







قطعات مورد نیاز:

سیم بندی مدار را طبق شکل زیر انجام دهید:

در مرحله بعد، کدهای زیر را روی آردوینو نصب کنید: دما از روی سنسور خوانده میشود و روی serial monitor نوشته میشود و LEDهای رنگی به نسبت گرمای هوا روشن میشوند:
// ابتدا معرفی ال ای دی ها در یک آرایه
int LED [5] = {2, 3, 4, 5, 6};
// پایه وسط سنسور به ورودی آنالوگ آردوینو وصل شود
int sensorPin = A0;
void setup() {
Serial.begin(9600);
for (int i = 0; i < 5; i++) {
pinMode(LED[i], OUTPUT);
}
}
void loop() {
// خواندن مقدار از سنسور
int val = analogRead(sensorPin);
Serial.println(val);
// تمام ال ای دی ها خاموش
for (int i = 0; i<5; i++) {
digitalWrite(LED[i], LOW);
}
// روشن شدن ال ای دی ها
// توضیح این قسمت در پایین همین صفحه
if (val > 40 && val < 45) { // 20 - 22 C
digitalWrite( LED[0], HIGH);
} else if (val > 45 && val < 49){ // 22 - 24 C
digitalWrite( LED[0], HIGH);
digitalWrite( LED[1], HIGH);
} else if (val > 49 && val < 53){ // 24 - 26 C
digitalWrite( LED[0], HIGH);
digitalWrite( LED[1], HIGH);
digitalWrite( LED[2], HIGH);
} else if (val > 53 && val < 57){ // 26 - 28 C
digitalWrite( LED[0], HIGH);
digitalWrite( LED[1], HIGH);
digitalWrite( LED[2], HIGH);
digitalWrite( LED[3], HIGH);
} else if (val > 57){ // بیش از 28 درجه
digitalWrite( LED[0], HIGH);
digitalWrite( LED[1], HIGH);
digitalWrite( LED[2], HIGH);
digitalWrite( LED[3], HIGH);
digitalWrite( LED[4], HIGH);
}
// توقف کوتاه برای ارسال اعداد به سریال ویندو
delay(100);
}
توضیح:
در این سنسور هر 1 درجه سانتیگراد برابر با 10 میلی ولت است.
پس مثلا: 20 درجه سانتیگراد= 200 میلی ولت = 0.2 ولت= 41 واحد آنالوگ:
0.2 V / 5 V * 1023 = 41
پس تقریبا: تغییر هر 1 درجه سانتیگراد = تغییر 2 واحد آنالوگ
(منبع: کتاب Arduino Development Cookbook)

نرم افزار محاسبات ولتاژ رگولاتور
برای: LM317, L200, TL431, M523778xx
از تابع map برای نگاشت بین اعضای دو مجموعه استفاده میشود.
مثال: اگر بخواهیم اعداد موجود در بازه 1 تا 9 را به بازه 3 تا 80 تبدیل کنیم از تابع map یا نگاشت استفاده میکنیم.
ساختار:
map(value, fromLOW, fromHIGH, toLOW, toHIGH)
مبنای محاسبات در تابع map اعداد صحیح است. اعداد کسری به دست آمده در فرایند map میانگین گیری و یا گرد نمی شوند بلکه تقطیع میشوند.
مثال:
مقادیر قابل قبول برای تابع analogRead بین 0 تا 1023 است
مقادیر قابل قبول برای تابع analogWrite بین 0 تا 255 است
اگر بخواهیم مقادیر خوانده شده توسط تابع analogRead را به تابع analogWrite بفرستیم باید محدوده 0 تا 1023 را به محدوده 0 تا 255 تبدیل کنیم. این تبدیل مقادیر را با کمک تابع map انجام میدهیم:
void setup() {
}
void loop() {
int M = analogRead(0);
M = map(M, 0, 1023, 0, 255);
analogWrite(9,M);
}
مقادیر 0 تا 1023 توسط analogRead از روی درگاه ورودی آنالوگ A0 خوانده میشوند و به متغیر M انتساب داده میشوند. سپس با استفاده از تابع map مقادیر متغیر M به محدوده 0 تا 255 تبدیل میشود تا توسط تابع analogWrite قابل خواندن باشند و روی درگاه خروجی آنالوگ 9~ نوشته شوند (منبع: کتاب کلید آردوینو).

دانلود لیست فشرده نکات برنامه نویسی پراسسینگ Processing
(منبع: سایت https://sparkfuneducation.com/)

دانلود لیست نکات برنامه نویسی آردوینو
(منبع: سایت https://sparkfuneducation.com/)

سنسور رطوبت خاک میتواند مقدار رطوبت خاک را اندازه گیری کند تا در صورت نیاز، آبیاری خاک آغاز شود یا پایان یابد.

عملکرد سنسور ساده است:


نحوه سیم بندی مدار بصورت زیر است:
| سیم | سنسور | آردوینو | |
| زرد | AO | A0 | آنالوگ |
| سیاه | GND | GND | منفی |
| قرمز | VCC | 5V | مثبت |

کد آردوینو برای راه اندازی این سنسور به صورت زیر است:
const int hygrometer = A0; // اتصال پین آنالوگ سنسور به پین آنالوگ صفر آردوینو
int value;
void setup()
{
Serial.begin(9600);
}
void loop()
{
// مقدار چهارصد یعنی رطوبت خاک کافی است
// میتوانید هر مقداری را بجای چهارصد بگذارید
value = analogRead(hygrometer); // مقدار آنالوگ سنسور را میخواند
value = constrain(value,400,1023); // تعریف محدوده برای عدد سنسور
value = map(value,400,1023,100,0);
// مقدار آنالوگ خوانده شده را محدود میکند
// یعنی 400 میشود 100 و 1023میشود صفر
Serial.print("رطوبت خاک: ");
Serial.print(value);
Serial.println(%);
delay(1000); // هر یک ثانیه داده گیری انجام شود
}
در نرم افزار آردوینو روی Serial Monitor کلیک کنید تا اعداد خروجی رطوبت خاک نشان داده شوند:

(http://invent.module143.com/منبع: سایت)

(منبع: سایت https://sparkfuneducation.com/)
ساده ترین برنامه که میتوان در محیط آردوینو نوشت بصورت زیر است:
void setup()
{
//put your setup code here to run once
}
void loop()
{
//put your main code here to run repeatedly
}
هربرنامه ساده یا پیچیده آردوینو، باید دارای 2 تابع ویژه به نامهای setup و loop باشد:
دستوری که برایش تعریف می کنیم را «فقط یکبار انجام می دهد».
دستوری که برایش تعریف می کنیم را «آن قدر تکرار میکند تا بگوییم کافی است».

دو پرانتز که به صورت () بعد از کلمات setup و loop آمده است یعنی setup و loop کلمات عادی نیستند بلکه «تابع» هستند:
تابع یعنی چیزی که مانند یک دستگاه، کار مشخصی را که برایش تعریف کرده ایم انجام میدهد یعنی داده ای را از ما میگیرد وسپس عملیاتی را روی داده انجام میدهد و در آخر نتیجه را به ما برمیگرداند.
مجدداً به متن برنامه مراجعه کنید:
void setup()
{
//put your setup code here to run once
}
void loop()
{
//put your main code here to run repeatedly
}
یک علامت به شکل } بعد از کلمه setup قرارگرفته است. علامت } نشانه شروع محدوده ای است که هر دستوری داخل این محدوده نوشته شود، توسط تابع setup اجرا میشود. انتهای این محدوده را با علامتی برعکس، به شکل { نشان میدهیم. بطور خلاصه، دستوراتی که بین دو علامت } و { بیایند، به ترتیب و از بالا به پایین، «فقط یک بار» توسط تابع setup اجرا میشوند. به محدوده بین {} بدنه تابع می گوییم.
بعد از تابع loop نیز علایم } و { دیده میشوند: نقش آنها مثل قبل است و محدوده شروع و پایان دستوراتی را نشان میدهند که توسط تابع loop اجرا میشوند. دستوراتی که بین دو علامت } و { بیایند، به ترتیب و از بالا به پایین، «به دفعات نامحدود» توسط تابع loop اجرا میشوند.
بنابراین تفاوت اصلی تابع loop با تابع setup آن است که:
تابع setup دستورات داخل { } را فقط یک بار اجرا میکند ولی تابع loop دستورات داخل { } را نه فقط یک بار، بلکه آنقدر تکرار میکند که بگوییم کافی است.
(منبع: کتاب کلید آردوینو)


برنامه Blink سرعت چشمک زدن LED را کنترل میکند. مدار را مطابق شکل بالا ببندید. برای محافظت از LED در برابر جریان الکتریکی اضافی، یک عدد مقاومت را بصورت سری در مسیر اتصال LED به آردوینو قرار میدهیم. در شکل بالا:
(در شکل بالا، نقطه های سبز روی بردبورد یعنی: سوراخهای این مسیر، از زیر بردبورد به هم وصل هستند)
آردوینو را به کامپیوتر وصل کنید. برنامه Blink را در نرم افزار آردوینو بنویسید یا از آدرس زیر اجرا کنید:

برنامه به شکل زیر است:
void setup() {
pinMode(13, OUTPUT);
}
void loop() {
digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);
delay(1000);
}
فایل را به برد آردوینو بفرستید:

اکنون LED شروع به چشمک زدن میکند. مدت زمان روشن بودن آن 1 ثانیه و مدت زمان خاموش بودن آن نیز 1 ثانیه است. در برنامه بالا ابتدا توسط تابع ()pinMode درگاه دیجیتال شماره 13 را بعنوان درگاه خروجی تعریف میکنیم. سپس در بخش ()loop حلقه تکرارشونده برنامه را بصورت زیر تشکیل میدهیم:
- HIGHشدن درگاه 13 و روشن شدن LED متصل به این درگاه، توسط تابع ()digitalWrite
- توقف در حالت فوق، برای مدت 1000 میلی ثانیه یا 1 ثانیه توسط تابع ()delay
- LOWشدن درگاه 13 و خاموش شدن LED متصل به این درگاه، توسط تابع ()digitalWrite
- توقف درحالت فوق، برای مدت 1000 میلی ثانیه یا 1 ثانیه توسط تابع ()delay
حالا مقادیر تابع ()delay را تغییر دهید و برنامه را مجددا بارگذاری کنید تا تغییرات اعمال شده را بر مدت زمان روشن و خاموش شدن LED مشاهده نمایید.
(منبع: کتاب کلید آردوینو)
سوراخهای روی بردبورد را با سیم به هم وصل میکنند. به این سیمها، سیم جامپر میگویند.

سیم جامپر را میتوانید خودتان (با سیم تک رشته) آماده کنید:




برای وصل کردن قطعات الکترونیک به همدیگر 2 روش اصلی وجود دارد:
از بردبورد (Bread board = تخته نان) برای طراحی مدارها و اتصال موقت و آزمایشی قطعات استفاده میشود.

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






میخواهیم روشن و خاموش شدن یک LED را به کمک Arduino کنترل کنیم. قطعات مورد نیاز عبارتند از:
| آردوینو |
|
| کابل USB |
|
| مقاومت قهوه ای، مشکی، قرمز |
|
| LED |
|
| برد بورد |
|
سیم |
|
هر ال ای دی دارای یک پایه مثبت و یک پایه منفی است. پایه منفی کوتاهتر است. طبق شکل زیر پایه ها را روی برد نصب و به آردوینو وصل کنید:
پایه مثبت LED به پین 13 آردوینو و پایه منفی LED به پین منفی (GND) آردوینو وصل میشود.

آردوینو را با کابل به کامپیوتر وصل کنید.

نرم افزار آردوینو را اجرا کنید. وارد نرم افزار شوید و فایل blink را بیاورید.

از لیست Tools، نوع برد آردوینو و پورت ارتباطی کامپیوتر را انتخاب کنید.


فایل را به برد آردوینو بفرستید.

اکنون LED شروع به چشمک زدن میکند:

میتوانید LED را مستقیما به پینهای آردوینو وصل کنید (پایه مثبت LED به پین 13 و پایه منفی LED به پین GND). استفاده از مقاومت الزامی نیست:


ویدیو دستور زبان آردوینو: ساختار نگارش دستورها در محیط Arduino IDE
(منبع: سایت https://www.programmingelectronics.com/)

آردوینو همچون هر سخت افزار و نرم افزار دیگری، محدودیتهای خاص خود را دارد. سطح اعتمادپذیری آردوینو برای پروژه های صنعتی، صنایع خودرو، نظامی، پزشکی، امنیتی و ایمنی چندان بالا نیست. نوفه ها، گردوغبار، لرزشهای مداوم و شدید، وجود مواد خورنده و رطوبت محیطی ازجمله عواملی هستند که میتوانند عملکرد سخت افزار آردوینو را با چالشهای جدی مواجه کنند (منبع: کتاب کلید آردوینو).
مثالها:
مثال | کارایی آردوینو | توضیح |
اندازه گیری دمای داخل خودرو | بله | - |
حسگر فاصله تا مانع برای دنده عقب خودرو | بله | _ |
تصمیم گیری و فرمان به ترمزهای خودرو | خیر | نیاز به ایمنی بالا |
تجهیزات اتاق عمل و بخش مراقبت های ویژه | خیر | نیاز به ایمنی بالا |
حسگر ورود دست کارگربه دستگاه پرس | خیر | نیاز به ایمنی بالا |
سیستم دزدگیر بانک | خیر | نیاز به امنیت بالا |
پایش درگاه های فرودگاهی | خیر | نیاز به امنیت بالا |
کارخانه ی تولید مواد شیمیایی | خیر | وجود مواد خورنده |
قایق، کشتی و تجهیزات دریایی | خیر | رطوبت بسیار زیاد |
پروژه های پایش کویر | خیر | گرد و غبار زیاد |
دستگاه های غربال گری و خرد کن صنعتی | خیر | لرزش زیاد |
اتوماسیون صنعتی | خیر | نیاز به درگاه های زیاد |
تغذیه، نور و دمای مرغداری و دامپروری | بله | - |
تنظیم دما، رطوبت و آبیاری گلخانه | بله | - |
آبیاری گیاهان آپارتمانی | بله | - |
کنترل آبگیری مخازن کوچک | بله | - |
پله برقی | خیر | حجم کار بسیار زیاد |
آسانسور | خیر | نیاز به ایمنی بالا |
هوشمندسازی منازل و محل کار | بله | - |
اینترنت اشیا | بله | - |
نورپردازی تعاملی منازل و فروشگاه ها | بله | - |
نورپردازی تعاملی منازل و فروشگاه ها | بله | - |
نورپردازي بناهاي عظيم | خير | پيچيدگي بالا |
بهينه سازي مصرف برق منازل | بله | - |
اسباب بازي | بله | - |
آموزش | بله | - |
نمونه سازي پروژه ها | بله | - |