اگر تعداد داده ها زیاد باشد، چه اتفاقی میفتد؟ تا چه زمانی مجاز به استفاده از متغیرها هستیم؟ اگر تعداد داده ها زیاد باشد، بهترین روش برای ساده نویسی کد آردوینو استفاده از آرایه ها و رشته ها است.آرایه ها همنوع هستند و هر آرایه دارای اسم مشخصی است که دقیقا مشابه متغیرها نامگذاری میشوند. برای فراخوانی آرایه ها از اندیس استفاده میکنیم. در ادامه با مرجع تخصصی آردوینو، دیجی اسپارک همراه باشید.
آرایه تک بعدی یا لیست
در C++، شما میتوانید از آرایههای تک بعدی یا همان لیستها (Arrays) استفاده کنید. آرایه تک بعدی یک مجموعه متغیرهای همنوع است که به صورت پشت سر هم در حافظه ذخیره میشوند. این متغیرها با شمارههای صحیح معین شده به عنوان “اندیس” قابل دسترسی هستند. اندیس از ۰ تا (اندازه آرایه – ۱) میتواند باشد. در آردوینو (Arduino)، شما میتوانید از آرایهها به صورت مشابه با C/C++ استفاده کنید. آرایهها در آردوینو برای ذخیره و مدیریت دادههای مختلفی به کار میروند.برای تعریف یک آرایه در آردوینو، میتوانید از نوع داده مورد نظر خود (مانند int یا byte) استفاده کرده و اندازه آرایه را تعیین کنید. مثال زیر یک آرایه از اعداد صحیح در آردوینو تعریف میکند:
int myArray[5]; // تعریف یک آرایه تک بعدی از اعداد صحیح با ۵ عنصر
سپس میتوانید به عناصر آرایه دسترسی پیدا کنید و مقادیر را مقداردهی کنید یا از آنها استفاده کنید. به عنوان مثال:
myArray[0] = 10; // مقداردهی به عنصر اول آرایه
myArray[1] = 20; // مقداردهی به عنصر دوم آرایه
int value = myArray[2]; // دسترسی به مقدار عنصر سوم آرایه و ذخیره آن در متغیر
آرایهها در آردوینو همچنین میتوانند برای ذخیره و مدیریت دادههای متفاوتی مانند رشتهها (Strings)، اعداد حقیقی (floats)، و دادههای سفارشی نیز استفاده شوند. به عنوان مثال:
String names[3] = {“arduino”, “sensor”, “LED”}; // تعریف یک آرایه از رشتهها
float sensorReadings[4]; // تعریف یک آرایه از اعداد حقیقی با ۴ عنصر
struct Point {
int x;
int y;
};
Point coordinates[2]; // تعریف یک آرایه از دادهساختارها
آرایه تک بعدی و یا لیست به صورت زیر در برنامه تعریف میشود. از آرایه برای منظم شدن برنامه و تعداد ورودی و خروجی ها در زمانیکه تعداد آن ها افزایش میباید، استفاده میکنیم. متغیرها در برنامه نویسی به صورت آرگومان تعریف میشوند که آرایه ها هم بدین صورت به عنوان آرگومان به توابع ارسال میشوند. برای ارسال آرایه به تابع؛ نام تابع به عنوان آرگومان فراخونی میشود.
- نوع آرایه یکی از انواع داده در C++ است.
- نام آرایه برای دسترسی به آرایه استفاده میشود.
- طول آرایه با یک عدد صحیح مثبت مشخص میشود.
- اندیس آرایه از صفر شروع میشود.
نمونه کد برای آرایه
int myInts[6]; int myPins[] = {2, 4, 8, 3, 6}; int mySensVals[6] = {2, 4, -8, 3, 2}; char message[6] = "hello";
نمونه کد آردوینو ARRAY
در کد زیر ۴ پین در یک آرایه با اسم mypins تعریف شده است. اگر بخواهیم به ترتیب هر پایه در سریال مانیتور با عدد نمایش داده شود. از یک حلقه تکرار for برای فراخوانی آرایه mypins استفاده میکنیم. شرط نویسی for قبلا آموزش داده شده است.
int mypins[]= {3,4,5,6,7} int i; for (i = 0; i<5; i=i+1) { Serial.println(mypins[i]); }
تصور کنید هشت ال ای دی دارید و میخواهید با آردوینو راه اندازی کنید. در نگاه اول تعریف هشت متغیر برای هشت ال ای دی بسیار طولانی و روند کدنویسی را سخت تر خواهد کرد. بهترین روش استفاده از آرایه است.
مطابق با شماتیک بالا اتصالات را انجام میدهیم.
کد آردوینو آرایه
نرم افزار آردوینو را باز کرده و متناسب با نوع برد استفاده، پورت را مشخص کنید. سپس کد برنامه را کپی و به نرم افزار آردوینو انتقال دهید.
int ledArray[] = {2,3,4,5,6,7,8,9}; int delayTime = 50; void setup() { // استفاده از تابع حلقه for برای تعریف خروجی for(int i = 0; i<10; i++) { pinMode(ledArray[i], OUTPUT); }} void loop() { //روشن شدن هشت ال ای دی for(int i = 0; i <= 7; i++) { digitalWrite(ledArray[i], HIGH); delay(delayTime); } //خاموش شدن هشت ال ای دی for(int i = 7; i >= 0; i--) { digitalWrite(ledArray[i], LOW); delay(delayTime*5); } }
تحلیل کد آردوینو آرایه
۸ ال ای دی داریم که تعریف هشت متغیر برای هر کدام بسیار روند برنامه نویسی را کند خواهد کرد. پس در اولین خط از کدنویسی از آرایه استفاده میکنیم.
int ledArray[] = {2,3,4,5,6,7,8,9}; نام آرایه ledArray است و طول آرایه به ترتیب ۲و۳و۴و۵و۶و۷و۸و۹ است
به دلخواه میتوانیم از یک متغیر برای تاخیر در برنامه استفاده کنیم که در این کد اسم دلخواه delayTime با تاخبر ۵۰ میلی ثانیه در برنامه تعریف میشود.
int delayTime = 50;
در برنامه اصلی یعنی Voidsetup ورودی و خروجی را تعریف میکنیم که برای سهولت در کدنویسی از ساختار تکراار for برای تعریف خروجی ها استفاده میکنیم.
void setup() { // استفاده از تابع حلقه for برای تعریف خروجی for(int i = 0; i<10; i++) { pinMode(ledArray[i], OUTPUT); }} // تمامی طول آرایه ها در نقش خروجی تعریف شده است
در حلقه برنامه میخواهیم ال ای دی ها در بازه زمانی مشخص شده روشن و خاموش شود. برای اینکار از ساختار تکرار for استفاده میکنیم. تحت شرایطی خاص یک یا چند دستور چندین بار اجرا میشوند. شرط روشن شدن ال ای دی ها به صورت زیر است.
/روشن شدن هشت ال ای دی for(int i = 0; i <= 7; i++) { digitalWrite(ledArray[i], HIGH); delay(delayTime); }
شرط خاموش شدن ال ای دی ها به صورت زیر است.
for(int i = 7; i >= 0; i--) { digitalWrite(ledArray[i], LOW); delay(delayTime*5); }
به صورت کلی تابع حلقه Voidloop به صورت زیر در برنامه نوشته میشود.
void loop() { //روشن شدن هشت ال ای دی for(int i = 0; i <= 7; i++) { digitalWrite(ledArray[i], HIGH); delay(delayTime); } //خاموش شدن هشت ال ای دی for(int i = 7; i >= 0; i--) { digitalWrite(ledArray[i], LOW); delay(delayTime*5); } }
وسایل مورد نیاز
آردوینو Arduino ( نوع آردوینو دلخواه است و این کد با تمامی آردوینو ها سازگار است )
جمع بندی لیدی پای
در برنامه نویسی آردوینو، مدیریت برنامه و ساده نویسی بسیار مهم است. هدف از نوشتن آرایه، تعداد زیاد داده های ورودی است و دیگر امکان استفاده از متغیرها منطقی به نظر نمیرسد. در این آموزش آرایه معرفی و نحوه ی کدنویسی آردوینو و اتصالات آموزش داده شده است. در هر مرحله تحلیل کد آردوینو انجام شده و با یک مطالعه به راحتی اجرا میشود.
چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریعترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند میتوانید از همین طریق اطلاع رسانی کنید.
در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.
جوون حلقه for که نوشتی به نظرت ال ای دی ها رو به ترتیب خاموش و روشن نمیکنه؟! نوشتی همه باهم خاموش و روشن میشن
با سلام
سپاس از همراهی شما
در این خصوص لطفا آموزش را کامل مطالعه کنید.
سلام
زمانی که بخواهیم یک متن را فقط در پلتفرم های iot نشان دهیم در کد برنامه چه چیزی باید بنویسیم؟ از رشته باید استفاده کنیم؟
با سلام
بله دقیقا با رشته stringکلمه ی کلیدی مورد نظر را در کد برنامه معرفی میکنیم.
سلام
اگر تعداد خروجی ها از ۱۰ تا بیشتر بشه میتونیم از آرایه استفاده کنیم؟
با سلام
آرایه ها در همین مثال ذکر شده کاربرد دارند و قابل اجرا است و تعداد خط های کدنویسی را کاهش میدهد.
با سلام
آیا برای ورودی هم میتوان از آرایه استفاده کرد؟
با سلام
بله با for در setup برنامه میتوانید برای ورودی هم از آرایه استفاده کنید.
سلام وخسته نباشید
خیلی کامل بود و خیلی تعداد کدهای برنامه خط هاش کم میشه
سلام
سپاس از همراهی شما کاربر گرامی
عالی و کامل مرسی
با سلام
کاربر گرامی سپاس از همراهی شما
امیدوارم آموزش مفید واقع شده باشد.
سلام
در کارگاه آردوینو این بخش رو خیلی قشنگ کار کردیم الان که بررسی میکنم متوجه تفاوت سطحم میشم
مرسی استاد
با سلام
سپاس از همراهی شما کاربر گرامی
امیدوارم آموزش و کارگاه ها برای شما مفید واقع شده باشد.
اگر تعداد خروجی هاتون بیشتر از ۵ تا شد بدون شک آرایه کنید چون کد منسجم تر میشه
با سلام
کاربر گرامی از اینکه تجربه ی خود را با دیگر کاربران به اشتراک میگذارید، صمیمانه سپاسگزاریم.
ممنون از توضیحاتتون
با سلام
کاربر گرامی سپاس از همراهی شما
امیدوارم مفید واقع شده باشد
ممنونم از توضیحاتتون
عالی
با سلام
کاربر گرامی سپاس از همراهی شما
ممنونم از شما خسته نباشید تمامی آموزش ها به ترتیب لینک شده است و در حال یادگیری هستم
با سلام
کاربر گرامی سپاس از همراهی شما
امیدوارم مفید واقع شده باشد.
سلام
محدودیتی برای ایجاد آرایه وجود دارد ؟
با سلام
سوال شما نامفهوم است. اما طول آرایه مهم نیست.
سلام
چرا در قسمت for(int i = 0; i<10; i++)) setup)
رو نوشتید ؟ نیازه اینجا هم نوشته بشه ؟
با سلام
بله حتما باید نوشته شود.
سلام خسته نباشید
ببخشید چرا در قسمت void loop شما i را کمتر و مساوی ۷ تعریف کردید ولی در قسمت
void setup
i را کمتر از ۱۰ تعریف کرده اید ؟
واینکه میشه توضیح بدید که معنی ++i و –i چیه ؟
ممنون میشم .
با سلام
تعداد ال ای دی ها ۷ است و به همین دلیل عدد ۷ انتخاب شده. علامتهای ریاضی به ترتیب به صورت کاهشی و افزایشی است.
سلام تشکر بخاطر توضیحات خوبتون
یه سوال داشتم…
میخواستم بدونم میشه یه بخش خاصی از یک رشته رو برداشت یه نه مثلا:
“x=”255” y=”128
قسمتهایی که داخل “” هست رو میخوام چطور باید این کار رو انجام بدم؟
برای این منظور روشهای خاصی هست میتوانید از کتابخانه regex استفاده کنید.