for در آردوینو

ساختار for در آردوینو برای تکرار کردن بخشی از کد به‌ کار می‌رود. بلاکی که می‌خواهیم تکرار شود، بین آکولاد (={}) قرار می‌گیرد. معمولاً یک شمارنده افزایشی، برای افزایش حلقه و درنهایت خاتمه‌ی آن مورد استفاده قرار می‌گیرد. حلقه For برای عملیات‌هایی که نیاز داریم تکرار شوند و معمولاً تعداد تکرارشان از قبل مشخص است استفاده می‌شود. برای مدیریت و انجام عملیات روی مجموعه‌ای از داده‌ها / پین‌ها، غالباً از آرایه در ترکیب با این حلقه استفاده می‌شود. سر حلقه‌ی (هدر) For سه قسمت دارد: (از چپ به راست به ترتیب) مقداردهی اولیه، شرط حلقه، مقدار افزایشی حلقه:

 

for (initialization; condition; increment) {

//statement(s);

}
حلقه for
حلقه for

مقداردهی فقط یک بار و در شروع حلقه رخ می‌دهد. در هر بار تکرار حلقه، شرط چک می‌شود و اگر نتیجه True بود، بلاک کد درون حلقه اجرا می‌شود و سپس عمل افزایش متغیر حلقه انجام می‌شود. دوباره شرط چک می‌شود و عملیات توضیح داده شده در خط قبل، تا زمان True بودن شرط تکرار خواهد شد. هنگامی‌که نتیجه‌ی شرط False شود، حلقه پایان می‌پذیرد. مثال:

 

// Dim an LED using a PWM pin
int PWMpin = 10; // LED in series with 470 ohm resistor on pin 10

void setup()
{
// no setup needed
}

void loop()
{
for (int i=0; i <= 255; i++){
analogWrite(PWMpin, i);
delay(10);
}
}

نکات: حلقه for زبان c بسیار منعطف‌تر از حلقه‌های for دیگر زبان‌ها مانند بیسیک است. هرکدام یا حتی هر سه عنصر موجود در هدر می‌تواند حذف شود؛ البته سمی کولن ها (;) باید وجود داشته باشند. جملات موجود در قسمت مقداردهی اولیه، شرط و تغییر مقدار متغیر حلقه، می‌تواند هر جمله‌ی قابل قبولی از زبان c با هر متغیرِ حتی نامربوطی باشد. از هر نوع داده مثل اعشاری می‌توان استفاده کرد. استفاده از این نوع داده‌های غیرمعمول، ممکن است راه‌حلی برای برخی مشکلات کمیاب برنامه‌نویسی باشند. برای مثال استفاده از عملیات ضرب در قسمت تغییر متغیر حلقه، یک دنباله‌ی لگاریتمی تولید می‌کند:

 

for(int x = 2; x < 100; x = x * 1.5){
println(x);
}

حاصل:94،63،42،28،19،13،9،6،4،3،2 مثالی دیگر، با یک حلقه For، نور یک LED را به تدریج کم و زیاد می‌کند:

void loop()
{
int x = 1;
for (int i = 0; i > -1; i = i + x){
analogWrite(PWMpin, i);
if (i == 255) x = -1; //* switch direction at peak
delay(10);
}
}

* 255 انتهای مسیر است و با رسیدن به این عدد، مسیر را عوض می‌کند.

منبع

 

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

نویسنده و طراح الکترونیکا هستم . سوالی داشتید در کامنت ها یا پیج های اینستاگرام و تلگرام سایت بپرسید .