<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>وبلاگ اموزش الکترونیک | ساخت پروژه الکترونیک</title>
	<atom:link href="https://makingprojec.com/category/blog/feed/" rel="self" type="application/rss+xml" />
	<link>https://makingprojec.com/category/blog/</link>
	<description>مدار های الکترونیکی و میکروکنترلر</description>
	<lastBuildDate>Tue, 22 Sep 2026 11:00:32 +0000</lastBuildDate>
	<language>fa-IR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.2</generator>

<image>
	<url>https://makingprojec.com/wp-content/uploads/2021/10/cropped-makingprojec-512-x-min-32x32.png</url>
	<title>وبلاگ اموزش الکترونیک | ساخت پروژه الکترونیک</title>
	<link>https://makingprojec.com/category/blog/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>دستور else در آردوینو چیست؟ آموزش کامل با مثال</title>
		<link>https://makingprojec.com/arduino-else-statement/</link>
					<comments>https://makingprojec.com/arduino-else-statement/#respond</comments>
		
		<dc:creator><![CDATA[ساخت پروژه]]></dc:creator>
		<pubDate>Tue, 25 Aug 2026 04:30:04 +0000</pubDate>
				<category><![CDATA[اموزش اردوینو ARDUINO]]></category>
		<category><![CDATA[ساختار برنامه اردوینو Structure]]></category>
		<category><![CDATA[ساختارهای کنترلی اردوینو Control Structures]]></category>
		<guid isPermaLink="false">https://makingprojec.com/?p=59442</guid>

					<description><![CDATA[<p>دستور else در آردوینو چیست؟ آموزش کامل با مثال ، یکی از پایه‌ای‌ترین نیازهای هر برنامه‌نویس، تصمیم‌گیری بر اساس شرایط مختلف است. در آموزش آردوینو، دستور if به تنهایی فقط می‌تواند بگوید «اگر شرط برقرار بود، این کار را انجام بده»، اما در بسیاری از پروژه‌های واقعی نیاز داریم مشخص کنیم که در صورت برقرار نبودن شرط چه اتفاقی باید بیفتد. اینجاست که دستور else وارد می‌شود. با ترکیب if و else می‌توانید مسیر اجرای برنامه را کنترل کنید و رفتار پیش‌فرضی برای زمانی که هیچ‌کدام از شرط‌ها برقرار نبود ...</p>
<p>نوشته <a href="https://makingprojec.com/arduino-else-statement/">دستور else در آردوینو چیست؟ آموزش کامل با مثال</a> اولین بار در <a href="https://makingprojec.com">ساخت پروژه الکترونیک</a>. پدیدار شد.</p>
]]></description>
										<content:encoded><![CDATA[<p class="wp-block-paragraph">دستور else در آردوینو چیست؟ آموزش کامل با مثال ، یکی از پایه‌ای‌ترین نیازهای هر برنامه‌نویس، تصمیم‌گیری بر اساس شرایط مختلف است. در آموزش آردوینو، دستور <code>if</code> به تنهایی فقط می‌تواند بگوید «اگر شرط برقرار بود، این کار را انجام بده»، اما در بسیاری از پروژه‌های واقعی نیاز داریم مشخص کنیم که در صورت برقرار نبودن شرط چه اتفاقی باید بیفتد. اینجاست که دستور <code>else</code> وارد می‌شود. با ترکیب <code>if</code> و <code>else</code> می‌توانید مسیر اجرای برنامه را کنترل کنید و رفتار پیش‌فرضی برای زمانی که هیچ‌کدام از شرط‌ها برقرار نبود تعریف کنید. در ادامه‌ی این مقاله از سری آموزش‌های برنامه‌نویسی آردوینو، به‌طور کامل با نحوه‌ی کار، سینتکس و کاربردهای عملی دستور <code>else</code> آشنا می‌شوید.</p><p class="wp-block-paragraph">ساختار <code>if...else</code> کنترل بیشتری بر روند اجرای کد نسبت به دستور ساده‌ی <code>if</code> فراهم می‌کند، زیرا اجازه می‌دهد چند شرط را در کنار هم گروه‌بندی کنید. بخش <code>else</code> (در صورت وجود) زمانی اجرا می‌شود که شرط داخل <code>if</code> نتیجه‌ی نادرست (false) داشته باشد.</p><p class="wp-block-paragraph">می‌توان بعد از <code>else</code> یک <code>if</code> دیگر قرار داد تا چند تست متوالی و متقابلاً انحصاری (mutually exclusive) در کنار هم بررسی شوند. برنامه هر شرط را به‌ترتیب بررسی می‌کند تا زمانی که به یک شرط درست برسد؛ به‌محض یافتن اولین شرط درست، بلوک کد مربوط به آن اجرا می‌شود و برنامه از کل ساختار <code>if/else</code> عبور می‌کند و ادامه‌ی کد را دنبال می‌کند. اگر هیچ‌یک از شرط‌ها درست نباشد، بلوک <code>else</code> پیش‌فرض (در صورت وجود) اجرا می‌شود.</p><p class="wp-block-paragraph">نکته‌ی مهم این است که یک بلوک <code>else if</code> می‌تواند با یا بدون یک <code>else</code> پایانی استفاده شود و برعکس؛ همچنین تعداد بلوک‌های <code>else if</code> محدودیتی ندارد و می‌توانید هر تعداد که لازم است زنجیره کنید.</p><h2 class="wp-block-heading" id="h-نحوه-ی-نوشتار-syntax">نحوه‌ی نوشتار (Syntax)</h2><p class="wp-block-paragraph">ساختار کلی <code>if...else</code> به این شکل است:</p><div class="code-block">
                        <button class="copy-code-btn">کپی</button>
                        <div class="line"></div>
                        <pre class="wp-block-code"><code>if (condition1) {
  // یک یا چند دستور
} else if (condition2) {
  // یک یا چند دستور
} else if (condition3) {
  // یک یا چند دستور
} else {
  // یک یا چند دستور
}
</code></pre>
                        <div class="line"></div>
                    </div><p class="wp-block-paragraph">اگر داخل بلوک <code>if</code> یا <code>else</code> فقط یک دستور وجود داشته باشد، می‌توانید آکولادها را حذف کنید:</p><div class="code-block">
                        <button class="copy-code-btn">کپی</button>
                        <div class="line"></div>
                        <pre class="wp-block-code"><code>if (condition1)
  singleStatement;
else
  anotherSingleStatement;
</code></pre>
                        <div class="line"></div>
                    </div><h3 class="wp-block-heading" id="h-پارامترها">پارامترها</h3><ul class="wp-block-list"><li><strong>condition</strong>: یک عبارت شرطی (boolean) است که می‌تواند نتیجه‌ی درست (true) یا نادرست (false) داشته باشد. این عبارت معمولاً با عملگرهای مقایسه‌ای مانند <code>==</code>، <code>!=</code>، <code>&lt;</code>، <code>&gt;</code>، <code>&lt;=</code> و <code>&gt;=</code> ساخته می‌شود.</li></ul><h2 class="wp-block-heading" id="h-مقدار-بازگشتی">مقدار بازگشتی</h2><p class="wp-block-paragraph"><code>else</code> یک ساختار کنترلی (Control Structure) است، نه یک تابع؛ بنابراین هیچ مقدار بازگشتی ندارد. تنها مسیر اجرای برنامه را بین بلوک‌های مختلف کد هدایت می‌کند.</p><h2 class="wp-block-heading" id="h-کد-نمونه-ی-کامل">کد نمونه‌ی کامل</h2><p class="wp-block-paragraph">مثال زیر یک سیستم ساده‌ی هشدار دما را شبیه‌سازی می‌کند. با استفاده از یک مقدار فرضی دما، برنامه با کمک <code>if...else if...else</code> وضعیت مناسب را روی سریال مانیتور چاپ می‌کند:</p><div class="code-block">
                        <button class="copy-code-btn">کپی</button>
                        <div class="line"></div>
                        <pre class="wp-block-code"><code>// شبیه‌سازی یک سیستم هشدار دما با استفاده از else
int temperature = 65; // مقدار فرضی دما (بر حسب درجه سانتی‌گراد)

void setup() {
  Serial.begin(9600);
}

void loop() {
  if (temperature &gt;= 70) {
    // دما بسیار بالاست
    Serial.println("خطر! سیستم خاموش شود.");
  } else if (temperature &gt;= 60) {
    // دما در محدوده‌ی هشدار است
    Serial.println("هشدار! نیاز به توجه کاربر.");
  } else {
    // دما در محدوده‌ی امن است
    Serial.println("ایمن! ادامه‌ی فعالیت عادی.");
  }

  delay(1000); // یک ثانیه صبر کن و دوباره بررسی کن
}
</code></pre>
                        <div class="line"></div>
                    </div><h3 class="wp-block-heading" id="h-توضیح-خط-به-خط">توضیح خط‌به‌خط</h3><ul class="wp-block-list"><li>در ابتدا متغیر <code>temperature</code> مقدار فرضی دما را نگه می‌دارد.</li>

<li>در <code>setup()</code>، ارتباط سریال با نرخ ۹۶۰۰ بیت بر ثانیه راه‌اندازی می‌شود تا بتوانیم پیام‌ها را روی Serial Monitor ببینیم.</li>

<li>در <code>loop()</code>، ابتدا شرط اول (<code>temperature &gt;= 70</code>) بررسی می‌شود؛ اگر درست باشد، پیام خطر چاپ می‌شود و بقیه‌ی شرط‌ها بررسی نمی‌شوند.</li>

<li>اگر شرط اول نادرست باشد، برنامه به <code>else if (temperature &gt;= 60)</code> می‌رود و آن را بررسی می‌کند.</li>

<li>اگر هیچ‌کدام از دو شرط بالا درست نبود، بلوک <code>else</code> نهایی اجرا می‌شود که وضعیت ایمن را نشان می‌دهد.</li>

<li>در پایان، <code>delay(1000)</code> باعث می‌شود این بررسی هر یک ثانیه یک‌بار تکرار شود.</li></ul><h2 class="wp-block-heading" id="h-نکات-و-هشدارهای-رایج">نکات و هشدارهای رایج</h2><ul class="wp-block-list"><li><strong>اشتباه در استفاده از <code>=</code> به‌جای <code>==</code></strong>: یکی از رایج‌ترین اشتباهات مبتدیان، نوشتن <code>if (x = 10)</code> به‌جای <code>if (x == 10)</code> است. علامت مساوی تکی (<code>=</code>) عملگر انتساب است و مقدار متغیر <code>x</code> را برابر ۱۰ قرار می‌دهد؛ از آنجا که هر عدد غیرصفر در ارزیابی شرطی معادل TRUE در نظر گرفته می‌شود، این شرط همیشه درست ارزیابی می‌شود که نتیجه‌ی مطلوب یک دستور <code>if</code> نیست، و علاوه بر آن مقدار متغیر هم به‌اشتباه تغییر می‌کند.</li>

<li><strong>ترتیب بررسی شرط‌ها مهم است</strong>: در زنجیره‌ی <code>else if</code>، به‌محض رسیدن به اولین شرط درست، بقیه‌ی شرط‌ها بررسی نمی‌شوند؛ پس ترتیب قرار دادن شرط‌ها (مثلاً از بزرگ‌ترین بازه به کوچک‌ترین) باید با دقت انتخاب شود.</li>

<li><strong>حذف آکولاد فقط برای یک دستور مجاز است</strong>: اگر بلوک <code>if</code> یا <code>else</code> شما بیش از یک خط دستور دارد، حذف آکولاد باعث بروز رفتار غیرمنتظره می‌شود، چون فقط خط بعدی جزو شرط در نظر گرفته می‌شود.</li>

<li><strong><code>else</code> بدون <code>if</code> معنا ندارد</strong>: <code>else</code> همیشه باید بلافاصله بعد از بستن بلوک <code>if</code> یا <code>else if</code> بیاید؛ قرار دادن کد دیگری بین آن‌ها باعث خطای کامپایل می‌شود.</li></ul><h2 class="wp-block-heading" id="h-کاربردهای-عملی-و-پروژه-های-پیشنهادی">کاربردهای عملی و پروژه‌های پیشنهادی</h2><p class="wp-block-paragraph">دستور <code>else</code> در بسیاری از پروژه‌های واقعی آردوینو کاربرد دارد، از جمله:</p><ul class="wp-block-list"><li><strong>سیستم‌های هشدار دما و رطوبت</strong>: تعیین وضعیت (امن، هشدار، خطر) بر اساس مقدار سنسور.</li>

<li><strong>کنترل روشنایی خودکار</strong>: روشن یا خاموش کردن LED بر اساس مقدار خوانده‌شده از سنسور نور (LDR).</li>

<li><strong>چراغ راهنمایی شبیه‌سازی‌شده</strong>: تغییر وضعیت بین چراغ قرمز، زرد و سبز با استفاده از زنجیره‌ی <code>if...else if</code>.</li>

<li><strong>سیستم‌های تشخیص فاصله</strong>: تصمیم‌گیری درباره‌ی توقف یا حرکت یک ربات بر اساس داده‌ی سنسور فراصوت.</li>

<li><strong>منوهای چندحالته</strong>: انتخاب بین چند حالت عملکرد دستگاه بر اساس ورودی یک دکمه یا پتانسیومتر.</li></ul><h2 class="wp-block-heading" id="h-سوالات-متداول">سوالات متداول</h2><div class="schema-faq wp-block-yoast-faq-block"><div class="schema-faq-section" id="faq-question-1787601483677"><strong class="schema-faq-question"><strong>1. آیا استفاده از <code>else</code> بعد از <code>if</code> اجباری است؟</strong></strong> <p class="schema-faq-answer">خیر. <code>else</code> کاملاً اختیاری است. می‌توانید فقط از <code>if</code> بدون هیچ <code>else</code> استفاده کنید؛ در این صورت اگر شرط نادرست باشد، برنامه به‌سادگی از آن بلوک عبور می‌کند.</p> </div> <div class="schema-faq-section" id="faq-question-1787601493560"><strong class="schema-faq-question"><strong>2. چند بار می‌توان از <code>else if</code> استفاده کرد؟</strong></strong> <p class="schema-faq-answer">هیچ محدودیتی برای تعداد بلوک‌های <code>else if</code> وجود ندارد و می‌توانید هر تعداد که پروژه نیاز دارد زنجیره کنید.</p> </div> <div class="schema-faq-section" id="faq-question-1787601503395"><strong class="schema-faq-question"><strong>3. تفاوت <code>if</code> تکی با <code>if...else</code> چیست؟</strong></strong> <p class="schema-faq-answer"><code>if</code> تکی فقط مشخص می‌کند در صورت درست بودن شرط چه اتفاقی بیفتد، اما <code>if...else</code> رفتار پیش‌فرض برای حالت نادرست بودن شرط را هم تعریف می‌کند.</p> </div> <div class="schema-faq-section" id="faq-question-1787601513760"><strong class="schema-faq-question"><strong>4. آیا می‌توان داخل بلوک <code>else</code> یک <code>if...else</code> دیگر نوشت؟</strong> </strong> <p class="schema-faq-answer">بله، تودرتو کردن (nesting) ساختارهای شرطی کاملاً مجاز است و در پروژه‌های پیچیده‌تر بسیار رایج است.</p> </div> <div class="schema-faq-section" id="faq-question-1787601524430"><strong class="schema-faq-question"><strong>5. چرا شرط من همیشه درست ارزیابی می‌شود؟</strong></strong> <p class="schema-faq-answer">معمولاً این مشکل به‌خاطر استفاده از عملگر انتساب (<code>=</code>) به‌جای عملگر مقایسه (<code>==</code>) در شرط رخ می‌دهد؛ حتماً این مورد را بررسی کنید.</p> </div> <div class="schema-faq-section" id="faq-question-1787601536853"><strong class="schema-faq-question"><strong>6. آیا <code>else</code> می‌تواند بدون آکولاد نوشته شود؟</strong></strong> <p class="schema-faq-answer">بله، اگر فقط یک دستور در بلوک وجود داشته باشد، آکولادها اختیاری هستند، اما برای خوانایی بیشتر و جلوگیری از اشتباه، استفاده از آکولاد همیشه توصیه می‌شود.</p> </div> </div><h2 class="wp-block-heading" id="h-جمع-بندی">جمع‌بندی</h2><p class="wp-block-paragraph">دستور <code>else</code> یکی از ابزارهای کلیدی برای کنترل جریان اجرای برنامه در زبان آردوینو است و به شما اجازه می‌دهد رفتار پیش‌فرض و مسیرهای جایگزین را برای پروژه‌ی خود تعریف کنید. تسلط بر ترکیب <code>if...else if...else</code> پایه‌ی بسیاری از پروژه‌های واقعی آردوینو، از سیستم‌های هشدار گرفته تا رباتیک، است. برای تعمیق بیشتر یادگیری آردوینو، پیشنهاد می‌شود سایر دستورات ساختاری مرتبط مانند <code>switch...case</code>، <code>while</code> و <code>for</code> را نیز مطالعه کنید.</p><p class="wp-block-paragraph">اگر درباره دستور else در آردوینو چیست؟ آموزش کامل با مثال ، سوالی دارید یا در پروژه خود با چالش خاصی روبرو شده‌اید، نظر خود را در بخش دیدگاه‌ها بنویسید تا پاسخگوی شما باشیم. همچنین پیشنهاد می‌کنیم این مقاله را با همکاران و علاقه‌مندان به دنیای الکترونیک به اشتراک بگذارید.</p><p class="wp-block-paragraph"></p><!-- SMART-ILB-BOX-START --><div class="smart-ilb-box smart-ilb-style1" data-smart-ilb="1"><p class="smart-ilb-box-title">مطلب پیشنهادی</p><ul class="smart-ilb-list"><li class="smart-ilb-item" data-smart-ilb-link="687"><a href="https://makingprojec.com/arduino-if-statement/" data-smart-ilb-target="59438" target="_blank">دستور if در آردوینو چیست؟ آموزش کامل با مثال</a></li><li class="smart-ilb-item" data-smart-ilb-link="688"><a href="https://makingprojec.com/what-is-curly-braces-in-arduino/" data-smart-ilb-target="59324" target="_blank">آکولاد `{}` در آردوینو چیست؟ آموزش کامل با مثال</a></li><li class="smart-ilb-item" data-smart-ilb-link="689"><a href="https://makingprojec.com/arduino-loop-function/" data-smart-ilb-target="59386" target="_blank">دستور loop() در آردوینو چیست؟ آموزش کامل با مثال</a></li></ul></div><!-- SMART-ILB-BOX-END -->

<div class="kk-star-ratings kksr-auto kksr-align-center kksr-valign-bottom"
    data-payload='{&quot;align&quot;:&quot;center&quot;,&quot;id&quot;:&quot;59442&quot;,&quot;slug&quot;:&quot;default&quot;,&quot;valign&quot;:&quot;bottom&quot;,&quot;ignore&quot;:&quot;&quot;,&quot;reference&quot;:&quot;auto&quot;,&quot;class&quot;:&quot;&quot;,&quot;count&quot;:&quot;0&quot;,&quot;legendonly&quot;:&quot;&quot;,&quot;readonly&quot;:&quot;&quot;,&quot;score&quot;:&quot;0&quot;,&quot;starsonly&quot;:&quot;&quot;,&quot;best&quot;:&quot;5&quot;,&quot;gap&quot;:&quot;5&quot;,&quot;greet&quot;:&quot;امتیاز دادن به مطلب&quot;,&quot;legend&quot;:&quot;0\/5 - (0 امتیاز)&quot;,&quot;size&quot;:&quot;22&quot;,&quot;title&quot;:&quot;دستور else در آردوینو چیست؟ آموزش کامل با مثال&quot;,&quot;width&quot;:&quot;0&quot;,&quot;_legend&quot;:&quot;{score}\/{best} - ({count} {votes})&quot;,&quot;font_factor&quot;:&quot;1.25&quot;}'>
            
<div class="kksr-stars">
    
<div class="kksr-stars-inactive">
            <div class="kksr-star" data-star="1" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" data-star="2" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" data-star="3" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" data-star="4" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" data-star="5" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
    </div>
    
<div class="kksr-stars-active" style="width: 0px;">
            <div class="kksr-star" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
    </div>
</div>
                

<div class="kksr-legend" style="font-size: 17.6px;">
            <span class="kksr-muted">امتیاز دادن به مطلب</span>
    </div>
    </div>
<p>نوشته <a href="https://makingprojec.com/arduino-else-statement/">دستور else در آردوینو چیست؟ آموزش کامل با مثال</a> اولین بار در <a href="https://makingprojec.com">ساخت پروژه الکترونیک</a>. پدیدار شد.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://makingprojec.com/arduino-else-statement/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>دستور if در آردوینو چیست؟ آموزش کامل با مثال</title>
		<link>https://makingprojec.com/arduino-if-statement/</link>
					<comments>https://makingprojec.com/arduino-if-statement/#respond</comments>
		
		<dc:creator><![CDATA[ساخت پروژه]]></dc:creator>
		<pubDate>Mon, 24 Aug 2026 19:50:58 +0000</pubDate>
				<category><![CDATA[اموزش اردوینو ARDUINO]]></category>
		<category><![CDATA[ساختار برنامه اردوینو Structure]]></category>
		<category><![CDATA[ساختارهای کنترلی اردوینو Control Structures]]></category>
		<guid isPermaLink="false">https://makingprojec.com/?p=59438</guid>

					<description><![CDATA[<p>دستور if در آردوینو چیست؟ آموزش کامل با مثال ، اگر تازه وارد دنیای برنامه‌نویسی آردوینو شده باشید، خیلی زود به جایی می‌رسید که پروژه‌تان دیگر با اجرای پیوسته و خطی کد راضی نمی‌شود. فرض کنید می‌خواهید وقتی نور محیط کم شد، یک LED روشن شود؛ یا وقتی دمای سنسور از یک حد مشخص بالاتر رفت، یک فن به کار بیفتد. در تمام این موقعیت‌ها به ابزاری نیاز دارید که بتواند تصمیم‌گیری کند. این ابزار در زبان برنامه‌نویسی آردوینو چیزی نیست جز دستور if، یکی از پایه‌ای‌ترین و پرکاربردترین ساختارهای کنترلی که د ...</p>
<p>نوشته <a href="https://makingprojec.com/arduino-if-statement/">دستور if در آردوینو چیست؟ آموزش کامل با مثال</a> اولین بار در <a href="https://makingprojec.com">ساخت پروژه الکترونیک</a>. پدیدار شد.</p>
]]></description>
										<content:encoded><![CDATA[<p class="wp-block-paragraph">دستور if در آردوینو چیست؟ آموزش کامل با مثال ، اگر تازه وارد دنیای <strong>برنامه‌نویسی آردوینو</strong> شده باشید، خیلی زود به جایی می‌رسید که پروژه‌تان دیگر با اجرای پیوسته و خطی کد راضی نمی‌شود. فرض کنید می‌خواهید وقتی نور محیط کم شد، یک LED روشن شود؛ یا وقتی دمای سنسور از یک حد مشخص بالاتر رفت، یک فن به کار بیفتد. در تمام این موقعیت‌ها به ابزاری نیاز دارید که بتواند <strong>تصمیم‌گیری</strong> کند. این ابزار در زبان برنامه‌نویسی آردوینو چیزی نیست جز دستور <strong>if</strong>، یکی از پایه‌ای‌ترین و پرکاربردترین ساختارهای کنترلی که در تقریباً هر پروژه‌ی آردوینو استفاده می‌شود.</p><p class="wp-block-paragraph">دستور if ساده‌ترین و پایه‌ای‌ترین ساختار کنترلی در برنامه‌نویسی است. این دستور یک شرط را بررسی می‌کند و در صورتی که آن شرط «درست» (true) باشد، دستور یا مجموعه‌ای از دستورات را اجرا می‌کند؛ در غیر این صورت، آن بخش از کد نادیده گرفته می‌شود. به بیان ساده، if به شما اجازه می‌دهد بسته به درست یا نادرست بودن یک وضعیت، تصمیم بگیرید که آیا بخشی از کد اجرا شود یا نه.</p><p class="wp-block-paragraph">این دستور در کنار حلقه‌ها (for و while) ستون فقرات منطق برنامه‌های آردوینو را تشکیل می‌دهد، چون بدون آن، کد شما همیشه به یک شکل ثابت اجرا می‌شد و امکان واکنش هوشمند به داده‌های سنسورها یا ورودی‌ها وجود نداشت.</p><h2 id="h-نحوه-ی-نوشتار-syntax-و-پارامترها" class="wp-block-heading">نحوه‌ی نوشتار (Syntax) و پارامترها</h2><p class="wp-block-paragraph">ساختار کلی دستور if به این شکل است:</p><div class="code-block">
                        <button class="copy-code-btn">کپی</button>
                        <div class="line"></div>
                        <pre class="wp-block-code"><code>if (condition) {
  // دستور یا دستوراتی که در صورت درست بودن condition اجرا می‌شوند
}
</code></pre>
                        <div class="line"></div>
                    </div><p class="wp-block-paragraph"><strong>پارامتر:</strong></p><ul class="wp-block-list"><li><strong>condition</strong>: عبارتی منطقی است که مقدار آن یا «درست» (true) و یا «نادرست» (false) است. این عبارت معمولاً با استفاده از عملگرهای مقایسه‌ای نوشته می‌شود.</li></ul><p class="wp-block-paragraph">عملگرهای مقایسه‌ای که برای نوشتن شرط استفاده می‌شوند عبارت‌اند از:</p><figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>عملگر</th><th>معنی</th></tr></thead><tbody><tr><td><code>x == y</code></td><td>x برابر است با y</td></tr><tr><td><code>x != y</code></td><td>x برابر نیست با y</td></tr><tr><td><code>x &lt; y</code></td><td>x کوچک‌تر است از y</td></tr><tr><td><code>x &gt; y</code></td><td>x بزرگ‌تر است از y</td></tr><tr><td><code>x &lt;= y</code></td><td>x کوچک‌تر یا مساوی y</td></tr><tr><td><code>x &gt;= y</code></td><td>x بزرگ‌تر یا مساوی y</td></tr></tbody></table></figure><p class="wp-block-paragraph">نکته‌ی مهم: اگر داخل بلوک if فقط یک دستور وجود داشته باشد، آکولادها ({}) قابل حذف هستند. اما در عمل، حتی برای یک خط هم توصیه می‌شود آکولاد بگذارید تا خوانایی کد بالا برود و از اشتباهات احتمالی در آینده جلوگیری شود.</p><h3 id="h-استفاده-همراه-با-else-و-else-if" class="wp-block-heading">استفاده همراه با else و else if</h3><p class="wp-block-paragraph">دستور if معمولاً همراه با else و else if استفاده می‌شود تا بتوانید چند حالت مختلف را بررسی کنید:</p><div class="code-block">
                        <button class="copy-code-btn">کپی</button>
                        <div class="line"></div>
                        <pre class="wp-block-code"><code>if (condition1) {
  // اگر condition1 درست باشد
} else if (condition2) {
  // اگر condition1 نادرست ولی condition2 درست باشد
} else {
  // اگر هیچ‌کدام از شرط‌های بالا درست نباشند
}
</code></pre>
                        <div class="line"></div>
                    </div><p class="wp-block-paragraph">در این ساختار، شرط‌ها به ترتیب بررسی می‌شوند و به محض این‌که یکی از آن‌ها درست باشد، بلوک کد مربوط به آن اجرا و از بقیه‌ی شرط‌ها صرف‌نظر می‌شود. اگر هیچ‌یک از شرط‌ها درست نباشند، بلوک else (در صورت وجود) اجرا می‌شود.</p><h2 id="h-مقدار-بازگشتی" class="wp-block-heading">مقدار بازگشتی</h2><p class="wp-block-paragraph">دستور if یک تابع نیست و مقدار بازگشتی (return value) به معنای متعارف ندارد؛ بلکه بر اساس نتیجه‌ی ارزیابی condition (true یا false)، مسیر اجرای برنامه را تعیین می‌کند.</p><h2 id="h-کد-نمونه-ی-کامل" class="wp-block-heading">کد نمونه‌ی کامل</h2><p class="wp-block-paragraph">مثال زیر که برگرفته از مستندات رسمی آردوینو است، نشان می‌دهد چگونه با استفاده از یک پتانسیومتر (مقاومت متغیر) و دستور if، یک LED را روشن یا خاموش کنیم. وقتی مقدار خوانده‌شده از ورودی آنالوگ از یک آستانه (threshold) مشخص بیشتر شود، LED متصل به پین ۱۳ روشن می‌شود؛ در غیر این صورت خاموش می‌ماند.</p><p class="wp-block-paragraph"><strong>قطعات مورد نیاز:</strong> برد آردوینو، پتانسیومتر (مقاومت متغیر)</p><div class="code-block">
                        <button class="copy-code-btn">کپی</button>
                        <div class="line"></div>
                        <pre class="wp-block-code"><code>/*
  If Statement Conditional
  با استفاده از دستور if، LED را بر اساس مقدار خوانده‌شده
  از یک پتانسیومتر روشن یا خاموش می‌کنیم.
*/

int analogPin = 0;   // پین آنالوگی که پتانسیومتر به آن وصل است
int ledPin = 13;      // پین LED داخلی روی اکثر بردهای آردوینو
int threshold = 400;  // مقدار آستانه برای مقایسه

void setup() {
  pinMode(ledPin, OUTPUT); // پین LED را به عنوان خروجی تعریف می‌کنیم
}

void loop() {
  // مقدار آنالوگ ورودی را می‌خوانیم (عددی بین 0 تا 1023)
  int analogValue = analogRead(analogPin);

  // اگر مقدار خوانده‌شده بیشتر از آستانه باشد، LED را روشن کن
  if (analogValue &gt; threshold) {
    digitalWrite(ledPin, HIGH);
  } else {
    // در غیر این صورت LED خاموش بماند
    digitalWrite(ledPin, LOW);
  }
}
</code></pre>
                        <div class="line"></div>
                    </div><p class="wp-block-paragraph"><strong>توضیح خط‌به‌خط:</strong></p><ul class="wp-block-list"><li>در ابتدای کد، سه متغیر تعریف می‌شوند: پین ورودی آنالوگ، پین خروجی LED و مقدار آستانه.</li>

<li>در تابع setup()، پین LED با pinMode به‌عنوان خروجی (OUTPUT) پیکربندی می‌شود.</li>

<li>در تابع loop()، مقدار آنالوگ با analogRead خوانده و در متغیر analogValue ذخیره می‌شود.</li>

<li>دستور if بررسی می‌کند که آیا analogValue از threshold بزرگ‌تر است یا نه. اگر بله، با digitalWrite پین LED به حالت HIGH (روشن) می‌رود؛ در غیر این صورت، بلوک else اجرا شده و LED در حالت LOW (خاموش) قرار می‌گیرد.</li></ul><h2 id="h-نکات-و-هشدارهای-رایج" class="wp-block-heading">نکات و هشدارهای رایج</h2><ul class="wp-block-list"><li><strong>اشتباه گرفتن <code>=</code> با <code>==</code></strong>: رایج‌ترین اشتباه مبتدیان این است که به‌جای عملگر مقایسه‌ای <code>==</code> از عملگر انتساب <code>=</code> استفاده می‌کنند. نوشتن <code>if (x = 10)</code> به‌جای مقایسه، مقدار ۱۰ را در متغیر x قرار می‌دهد و چون هر عدد غیرصفر در ارزیابی شرط «درست» تلقی می‌شود، این شرط همیشه true خواهد بود؛ در نتیجه رفتار برنامه کاملاً نادرست می‌شود. همیشه برای مقایسه از <code>==</code> استفاده کنید.</li>

<li><strong>فراموش کردن آکولاد در بلوک‌های چندخطی</strong>: اگر بیش از یک دستور در بلوک if دارید، حتماً از آکولاد استفاده کنید؛ در غیر این صورت فقط خط اول تحت تأثیر شرط قرار می‌گیرد و باقی خطوط همیشه اجرا می‌شوند.</li>

<li><strong>تودرتو کردن بیش از حد شرط‌ها</strong>: استفاده‌ی زیاد از if های تودرتو (nested if) کد را سخت‌خوان می‌کند. در مواردی که چند مقدار گسسته را باید بررسی کنید، دستور switch-case می‌تواند جایگزین خواناتری باشد.</li>

<li><strong>دقت در نوع داده هنگام مقایسه</strong>: مطمئن شوید متغیرهایی که مقایسه می‌کنید از نوع سازگار هستند (مثلاً مقایسه‌ی int با float می‌تواند نتایج غیرمنتظره‌ای بدهد).</li></ul><h2 id="h-کاربردهای-عملی-و-پروژه-های-پیشنهادی" class="wp-block-heading">کاربردهای عملی و پروژه‌های پیشنهادی</h2><p class="wp-block-paragraph">دستور if در تقریباً همه‌ی پروژه‌های آردوینو کاربرد دارد؛ از جمله:</p><ul class="wp-block-list"><li><strong>سیستم روشنایی خودکار</strong>: روشن و خاموش کردن LED یا رله بر اساس مقدار سنسور نور (LDR)</li>

<li><strong>هشدار دما</strong>: فعال‌سازی بازر یا فن خنک‌کننده وقتی دما از حد مجاز عبور می‌کند</li>

<li><strong>سیستم امنیتی ساده</strong>: تشخیص باز شدن در با سنسور مغناطیسی و فعال کردن آژیر</li>

<li><strong>کنترل رطوبت خاک</strong>: روشن کردن پمپ آب‌یاری هنگامی که رطوبت خاک از سنسور کمتر از حد مشخص خوانده شود</li>

<li><strong>پردازش ورودی دکمه‌ها</strong>: تشخیص فشرده شدن یک دکمه فشاری (push button) و اجرای عملی متناسب با آن</li></ul><h2 id="h-سوالات-متداول" class="wp-block-heading">سوالات متداول</h2><div class="schema-faq wp-block-yoast-faq-block"><div class="schema-faq-section" id="faq-question-1787600440867"><strong class="schema-faq-question"><strong>1. تفاوت if و if-else در آردوینو چیست؟</strong></strong> <p class="schema-faq-answer">دستور if به‌تنهایی فقط یک شرط را بررسی می‌کند و در صورت درست بودن آن، کد داخل بلوکش اجرا می‌شود. اگر بخواهید در صورت نادرست بودن شرط هم کاری انجام شود، از else استفاده می‌کنید که یک بلوک جایگزین برای حالت false تعریف می‌کند.</p> </div> <div class="schema-faq-section" id="faq-question-1787600448631"><strong class="schema-faq-question"><strong>2. آیا می‌توان چند if را پشت سر هم نوشت؟</strong></strong> <p class="schema-faq-answer">بله، هم می‌توانید چند if مستقل و جدا از هم بنویسید که هر کدام جداگانه بررسی می‌شوند، و هم می‌توانید با else if چند شرط را به‌صورت زنجیره‌ای و متوالی بررسی کنید که فقط اولین شرط درست، اجرا می‌شود.</p> </div> <div class="schema-faq-section" id="faq-question-1787600457953"><strong class="schema-faq-question"><strong>3. چرا شرط من همیشه true برمی‌گردد؟</strong></strong> <p class="schema-faq-answer">معمولاً دلیل اصلی این است که به‌جای <code>==</code> از <code>=</code> استفاده کرده‌اید. این یکی از رایج‌ترین اشتباهات در نوشتن دستور if است.</p> </div> <div class="schema-faq-section" id="faq-question-1787600467459"><strong class="schema-faq-question"><strong>4. آیا داخل if می‌توان چند شرط را با هم ترکیب کرد؟</strong></strong> <p class="schema-faq-answer">بله، با استفاده از عملگرهای منطقی <code>&amp;&amp;</code> (و) و <code>||</code> (یا) می‌توانید چند شرط را در یک if ترکیب کنید؛ مثلاً <code>if (x &gt; 10 &amp;&amp; y &lt; 5)</code>.</p> </div> <div class="schema-faq-section" id="faq-question-1787600483646"><strong class="schema-faq-question"><strong>5. چه زمانی باید از switch-case به‌جای if-else استفاده کنم؟</strong></strong> <p class="schema-faq-answer">وقتی می‌خواهید یک متغیر واحد را با چند مقدار مشخص و گسسته مقایسه کنید (مثلاً حالت‌های ۱، ۲، ۳ یک منو)، switch-case معمولاً کد را خواناتر می‌کند؛ اما برای بازه‌ها و شرط‌های پیچیده‌تر، if-else مناسب‌تر است.</p> </div> <div class="schema-faq-section" id="faq-question-1787600494882"><strong class="schema-faq-question"><strong>6. آیا حذف آکولاد در if همیشه کار درستی است؟</strong></strong> <p class="schema-faq-answer">از نظر فنی برای یک دستور تک‌خطی مجاز است، اما در پروژه‌های واقعی توصیه می‌شود همیشه از آکولاد استفاده کنید تا در صورت اضافه کردن خط‌های بعدی به بلوک، دچار خطای منطقی نشوید.</p> </div> </div><h2 id="h-جمع-بندی" class="wp-block-heading">جمع‌بندی</h2><p class="wp-block-paragraph">دستور if یکی از پایه‌ای‌ترین اما در عین حال مهم‌ترین ابزارهای <strong>برنامه‌نویسی آردوینو</strong> است که به کد شما امکان تصمیم‌گیری و واکنش هوشمندانه به داده‌ها می‌دهد. تسلط بر آن، پیش‌نیاز یادگیری ساختارهای پیشرفته‌تر مانند حلقه‌ها، switch-case و توابع است. پیشنهاد می‌شود برای تثبیت این مفهوم، همین پروژه‌ی نمونه را با سنسورهای دیگر (مانند LDR یا سنسور دما) پیاده‌سازی کنید و در آموزش‌های مرتبط با ساختارهای کنترلی آردوینو بیشتر مطالعه کنید.</p><p class="wp-block-paragraph">اگر درباره دستور if در آردوینو چیست؟ آموزش کامل با مثال ، سوالی دارید یا در پروژه خود با چالش خاصی روبرو شده‌اید، نظر خود را در بخش دیدگاه‌ها بنویسید تا پاسخگوی شما باشیم. همچنین پیشنهاد می‌کنیم این مقاله را با همکاران و علاقه‌مندان به دنیای الکترونیک به اشتراک بگذارید.</p><p class="wp-block-paragraph"></p><p class="wp-block-paragraph"></p><p class="wp-block-paragraph"></p><p class="wp-block-paragraph"></p><!-- SMART-ILB-BOX-START --><div class="smart-ilb-box smart-ilb-style1" data-smart-ilb="1"><p class="smart-ilb-box-title">مطلب پیشنهادی</p><ul class="smart-ilb-list"><li class="smart-ilb-item" data-smart-ilb-link="684"><a href="https://makingprojec.com/arduino-else-statement/" data-smart-ilb-target="59442" target="_blank">دستور else در آردوینو چیست؟ آموزش کامل با مثال</a></li><li class="smart-ilb-item" data-smart-ilb-link="685"><a href="https://makingprojec.com/what-is-curly-braces-in-arduino/" data-smart-ilb-target="59324" target="_blank">آکولاد `{}` در آردوینو چیست؟ آموزش کامل با مثال</a></li><li class="smart-ilb-item" data-smart-ilb-link="686"><a href="https://makingprojec.com/arduino-loop-function/" data-smart-ilb-target="59386" target="_blank">دستور loop() در آردوینو چیست؟ آموزش کامل با مثال</a></li></ul></div><!-- SMART-ILB-BOX-END -->

<div class="kk-star-ratings kksr-auto kksr-align-center kksr-valign-bottom"
    data-payload='{&quot;align&quot;:&quot;center&quot;,&quot;id&quot;:&quot;59438&quot;,&quot;slug&quot;:&quot;default&quot;,&quot;valign&quot;:&quot;bottom&quot;,&quot;ignore&quot;:&quot;&quot;,&quot;reference&quot;:&quot;auto&quot;,&quot;class&quot;:&quot;&quot;,&quot;count&quot;:&quot;1&quot;,&quot;legendonly&quot;:&quot;&quot;,&quot;readonly&quot;:&quot;&quot;,&quot;score&quot;:&quot;5&quot;,&quot;starsonly&quot;:&quot;&quot;,&quot;best&quot;:&quot;5&quot;,&quot;gap&quot;:&quot;5&quot;,&quot;greet&quot;:&quot;امتیاز دادن به مطلب&quot;,&quot;legend&quot;:&quot;5\/5 - (1 امتیاز)&quot;,&quot;size&quot;:&quot;22&quot;,&quot;title&quot;:&quot;دستور if در آردوینو چیست؟ آموزش کامل با مثال&quot;,&quot;width&quot;:&quot;132.5&quot;,&quot;_legend&quot;:&quot;{score}\/{best} - ({count} {votes})&quot;,&quot;font_factor&quot;:&quot;1.25&quot;}'>
            
<div class="kksr-stars">
    
<div class="kksr-stars-inactive">
            <div class="kksr-star" data-star="1" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" data-star="2" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" data-star="3" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" data-star="4" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" data-star="5" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
    </div>
    
<div class="kksr-stars-active" style="width: 132.5px;">
            <div class="kksr-star" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
    </div>
</div>
                

<div class="kksr-legend" style="font-size: 17.6px;">
            5/5 - (1 امتیاز)    </div>
    </div>
<p>نوشته <a href="https://makingprojec.com/arduino-if-statement/">دستور if در آردوینو چیست؟ آموزش کامل با مثال</a> اولین بار در <a href="https://makingprojec.com">ساخت پروژه الکترونیک</a>. پدیدار شد.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://makingprojec.com/arduino-if-statement/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>دستور loop() در آردوینو چیست؟ آموزش کامل با مثال</title>
		<link>https://makingprojec.com/arduino-loop-function/</link>
					<comments>https://makingprojec.com/arduino-loop-function/#respond</comments>
		
		<dc:creator><![CDATA[ساخت پروژه]]></dc:creator>
		<pubDate>Sun, 23 Aug 2026 08:30:35 +0000</pubDate>
				<category><![CDATA[اموزش اردوینو ARDUINO]]></category>
		<category><![CDATA[ساختار اصلی برنامه اردوینو Sketch Structure]]></category>
		<category><![CDATA[ساختار برنامه اردوینو Structure]]></category>
		<guid isPermaLink="false">https://makingprojec.com/?p=59386</guid>

					<description><![CDATA[<p>دستور loop() در آردوینو چیست؟ آموزش کامل با مثال ، اگر تا به حال یک پروژه‌ی آردوینو نوشته باشید، حتماً با دو تابع ثابت روبه‌رو شده‌اید: setup() و loop(). این دو تابع ستون فقرات هر برنامه (یا به اصطلاح آردوینویی‌ها، «اسکچ») هستند. اما این‌بار می‌خواهیم تمرکزمان را روی loop() بگذاریم؛ تابعی که قلب تپنده‌ی هر پروژه‌ی آردوینو محسوب می‌شود و بدون آن، هیچ پروژه‌ای نمی‌تواند به‌صورت مداوم کار کند. در این مقاله از سری آموزش آردوینو، به‌طور کامل بررسی می‌کنیم که دستور loop() چیست، چگونه کار می‌ ...</p>
<p>نوشته <a href="https://makingprojec.com/arduino-loop-function/">دستور loop() در آردوینو چیست؟ آموزش کامل با مثال</a> اولین بار در <a href="https://makingprojec.com">ساخت پروژه الکترونیک</a>. پدیدار شد.</p>
]]></description>
										<content:encoded><![CDATA[<p class="wp-block-paragraph">دستور loop() در آردوینو چیست؟ آموزش کامل با مثال ، اگر تا به حال یک پروژه‌ی آردوینو نوشته باشید، حتماً با دو تابع ثابت روبه‌رو شده‌اید: setup() و loop(). این دو تابع ستون فقرات هر برنامه (یا به اصطلاح آردوینویی‌ها، «اسکچ») هستند. اما این‌بار می‌خواهیم تمرکزمان را روی loop() بگذاریم؛ تابعی که قلب تپنده‌ی هر پروژه‌ی آردوینو محسوب می‌شود و بدون آن، هیچ پروژه‌ای نمی‌تواند به‌صورت مداوم کار کند. در این مقاله از سری آموزش آردوینو، به‌طور کامل بررسی می‌کنیم که دستور loop() چیست، چگونه کار می‌کند و چطور در پروژه‌های واقعی از آن استفاده کنیم.</p><p class="wp-block-paragraph">تابع loop() دقیقاً همان کاری را انجام می‌دهد که از نامش برمی‌آید پس از اجرای تابع setup() که مقداردهی اولیه و تنظیمات آغازین را انجام می‌دهد، تابع loop() به‌صورت پیوسته و بی‌پایان تکرار می‌شود و به همین دلیل به برد آردوینو اجازه می‌دهد تا پیوسته تغییر کند، به رویدادها واکنش نشان دهد و عملاً کنترل فعال برد را در دست بگیرد.</p><p class="wp-block-paragraph">به زبان ساده‌تر کدهایی که داخل setup() می‌نویسید فقط یک‌بار، در لحظه‌ی روشن شدن یا ریست شدن برد، اجرا می‌شوند. اما هر کدی که داخل loop() قرار بگیرد، بی‌نهایت بار و پشت سر هم اجرا می‌شود؛ دقیقاً تا زمانی که برد خاموش شود یا ریست شود. همین ویژگی است که loop() را به مکان اصلی برای نوشتن منطق اصلی پروژه تبدیل می‌کند: خواندن سنسورها، کنترل موتورها، بررسی وضعیت دکمه‌ها، ارسال داده روی پورت سریال و هر کار تکرارشونده‌ی دیگری.</p><h3 class="wp-block-heading" id="h-نحوه-ی-نوشتار-syntax-و-پارامترها">نحوه‌ی نوشتار (Syntax) و پارامترها</h3><p class="wp-block-paragraph">ساختار کلی این تابع به‌صورت زیر است:</p><div class="code-block">
                        <button class="copy-code-btn">کپی</button>
                        <div class="line"></div>
                        <pre class="wp-block-code"><code>void loop() {
  // کدهایی که باید به‌طور پیوسته اجرا شوند
}</code></pre>
                        <div class="line"></div>
                    </div><p class="wp-block-paragraph">نکات مربوط به نحوه‌ی نوشتار:</p><ul class="wp-block-list"><li>کلمه‌ی کلیدی void در ابتدای تابع نشان می‌دهد که loop() هیچ مقداری را بازنمی‌گرداند.</li>

<li>نام تابع باید دقیقاً loop باشد (با حروف کوچک) و پرانتز خالی () بعد از آن الزامی است.</li>

<li>تمام دستوراتی که باید به‌صورت تکرارشونده اجرا شوند، باید داخل آکولادهای { } این تابع نوشته شوند.</li>

<li>این تابع پارامتر ورودی نمی‌گیرد.</li></ul><h3 class="wp-block-heading" id="h-مقدار-بازگشتی">مقدار بازگشتی</h3><p class="wp-block-paragraph">تابع loop() هیچ مقداری بازنمی‌گرداند (void). وظیفه‌ی آن صرفاً اجرای مکرر بلوک کد داخلی‌اش است، نه محاسبه و بازگرداندن یک نتیجه.</p><h3 class="wp-block-heading" id="h-کد-نمونه-ی-کامل-با-توضیح">کد نمونه‌ی کامل با توضیح</h3><p class="wp-block-paragraph">مثال زیر، برگرفته از منطق نمونه‌های رسمی آردوینو، نشان می‌دهد که چگونه وضعیت یک دکمه فشاری خوانده می‌شود و بر اساس آن، یک کاراکتر روی پورت سریال ارسال می‌شود:</p><div class="code-block">
                        <button class="copy-code-btn">کپی</button>
                        <div class="line"></div>
                        <pre class="wp-block-code"><code>int buttonPin = 3; // پین متصل به دکمه فشاری

// setup فقط یک‌بار اجرا می‌شود
// در اینجا ارتباط سریال و پین دکمه را مقداردهی اولیه می‌کنیم
void setup() {
  Serial.begin(9600);      // شروع ارتباط سریال با نرخ 9600 بود در ثانیه
  pinMode(buttonPin, INPUT); // تعریف پین دکمه به‌عنوان ورودی
}

// loop بارها و بارها اجرا می‌شود
// در هر بار اجرا، وضعیت دکمه بررسی می‌شود و بر همان اساس داده ارسال می‌شود
void loop() {
  if (digitalRead(buttonPin) == HIGH) {
    Serial.write('H'); // اگر دکمه فشرده شده، حرف H ارسال شود
  }
  else {
    Serial.write('L'); // در غیر این صورت، حرف L ارسال شود
  }

  delay(1000); // کمی مکث قبل از تکرار بعدی حلقه
}</code></pre>
                        <div class="line"></div>
                    </div><p class="wp-block-paragraph">توضیح خط‌به‌خط:</p><ul class="wp-block-list"><li>در ابتدای کد، متغیر buttonPin به‌عنوان یک متغیر سراسری تعریف شده تا در هر دو تابع setup() و loop() قابل دسترسی باشد.</li>

<li>در setup()، ارتباط سریال با نرخ ۹۶۰۰ راه‌اندازی و پین دکمه به‌عنوان ورودی تنظیم می‌شود. این کار فقط یک‌بار انجام می‌شود.</li>

<li>در loop()، وضعیت دکمه با digitalRead() خوانده می‌شود. اگر مقدار HIGH بود (یعنی دکمه فشرده شده)، حرف &#8216;H&#8217; و در غیر این صورت حرف &#8216;L&#8217; از طریق پورت سریال ارسال می‌شود.</li>

<li>تابع delay(1000) باعث می‌شود قبل از اجرای دوباره‌ی loop()، حدود یک ثانیه مکث ایجاد شود.</li></ul><p class="wp-block-paragraph">این چرخه تا زمانی که برد روشن است، بی‌وقفه تکرار می‌شود؛ همین رفتار تکرارشونده، جوهره‌ی اصلی برنامه‌نویسی آردوینو را شکل می‌دهد.</p><h3 class="wp-block-heading" id="h-نکات-و-هشدارهای-رایج">نکات و هشدارهای رایج</h3><ul class="wp-block-list"><li><strong>فراموش کردن یکی از دو تابع اصلی:</strong> هر اسکچ آردوینو باید هم setup() و هم loop() را داشته باشد، حتی اگر یکی از آن‌ها خالی باشد. نبود هرکدام باعث خطای کامپایل می‌شود.</li>

<li><strong>نوشتن حلقه‌ی بی‌نهایت داخل loop():</strong> از آن‌جا که خود loop() به‌طور خودکار بی‌نهایت بار اجرا می‌شود، نیازی به قرار دادن یک حلقه‌ی while(true) یا for بی‌پایان اضافه داخل آن نیست؛ این کار معمولاً باعث گیر کردن برنامه در یک بخش خاص و از کار افتادن رفتار تکرارشونده‌ی طبیعی می‌شود.</li>

<li><strong>استفاده‌ی بیش از حد از delay():</strong> استفاده‌ی زیاد از delay() داخل loop() باعث می‌شود برد در طول آن مدت به هیچ رویداد دیگری (مثل فشردن دکمه) واکنش نشان ندهد. برای پروژه‌های چندوظیفه‌ای بهتر است از تکنیک‌های بدون‌تأخیر مثل millis() استفاده شود.</li>

<li><strong>تعریف متغیرهای محلی به‌جای سراسری:</strong> متغیرهایی که داخل loop() تعریف می‌شوند محلی هستند و در هر تکرار مقداردهی اولیه می‌شوند. اگر نیاز دارید مقداری بین تکرارهای مختلف حفظ شود، باید آن را به‌صورت متغیر سراسری (خارج از setup() و loop()) تعریف کنید.</li>

<li><strong>سنگین بودن بیش از حد loop():</strong> قرار دادن کدهای بسیار سنگین یا محاسبات پیچیده داخل loop() می‌تواند سرعت واکنش برنامه را کاهش دهد؛ بهتر است کد را با استفاده از توابع کمکی و ساختار تمیز مدیریت کنید.</li></ul><h3 class="wp-block-heading" id="h-کاربردهای-عملی-و-پروژه-های-پیشنهادی">کاربردهای عملی و پروژه‌های پیشنهادی</h3><p class="wp-block-paragraph">تابع loop() در تقریباً همه‌ی پروژه‌های آردوینو حضور دارد؛ چند نمونه‌ی رایج:</p><ul class="wp-block-list"><li><strong>پروژه‌ی چشمک‌زن LED (Blink):</strong> روشن و خاموش کردن پیوسته‌ی یک LED با فاصله‌ی زمانی مشخص.</li>

<li><strong>سیستم هشدار با سنسور فاصله:</strong> خواندن مداوم مقدار یک سنسور اولتراسونیک و فعال کردن آژیر در صورت نزدیک شدن جسم.</li>

<li><strong>ترموستات ساده:</strong> خواندن پیوسته‌ی دمای محیط با سنسوری مثل DHT11 و روشن/خاموش کردن یک رله بر اساس آستانه‌ی دما.</li>

<li><strong>کنترل‌کننده‌ی رباتیک ساده:</strong> بررسی مداوم داده‌های سنسور خط یا مانع‌یاب برای تصمیم‌گیری در مورد جهت حرکت ربات.</li>

<li><strong>سیستم ثبت داده (Data Logger):</strong> خواندن پیوسته‌ی مقادیر سنسورها و ذخیره یا ارسال آن‌ها هر چند ثانیه یک‌بار.</li></ul><h3 class="wp-block-heading" id="h-سوالات-متداول">سوالات متداول</h3><div class="schema-faq wp-block-yoast-faq-block"><div class="schema-faq-section" id="faq-question-1787433701734"><strong class="schema-faq-question"><strong>1. آیا می‌توان بدون تابع loop() یک برنامه‌ی آردوینو نوشت؟</strong></strong> <p class="schema-faq-answer">خیر. هر اسکچ آردوینو باید حتماً هر دو تابع setup() و loop() را داشته باشد، حتی اگر بدنه‌ی یکی از آن‌ها خالی باشد؛ در غیر این صورت کامپایلر خطا می‌دهد.</p> </div> <div class="schema-faq-section" id="faq-question-1787433710840"><strong class="schema-faq-question"><strong>2. آیا کدهای داخل loop() بی‌نهایت بار اجرا می‌شوند؟</strong></strong> <p class="schema-faq-answer">بله، تا زمانی که برد روشن است و ریست نشده، محتوای داخل loop() پشت سر هم و بدون توقف اجرا می‌شود.</p> </div> <div class="schema-faq-section" id="faq-question-1787433720047"><strong class="schema-faq-question">3<strong>. تفاوت loop() با setup() چیست؟</strong></strong> <p class="schema-faq-answer">setup() فقط یک‌بار و در ابتدای اجرای برنامه فراخوانی می‌شود و برای مقداردهی اولیه استفاده می‌شود؛ در حالی که loop() بارها و بارها تکرار می‌شود و منطق اصلی و مداوم برنامه در آن قرار می‌گیرد.</p> </div> <div class="schema-faq-section" id="faq-question-1787433732890"><strong class="schema-faq-question"><strong>4. چرا نباید داخل loop() از حلقه‌ی بی‌نهایت جداگانه استفاده کنم؟</strong></strong> <p class="schema-faq-answer">چون خود loop() به‌طور طبیعی بی‌نهایت بار تکرار می‌شود؛ اضافه کردن یک حلقه‌ی بی‌پایان دیگر داخل آن معمولاً باعث می‌شود برنامه در یک نقطه گیر کند و دیگر به رویدادهای جدید واکنش نشان ندهد.</p> </div> <div class="schema-faq-section" id="faq-question-1787433744403"><strong class="schema-faq-question"><strong>5. آیا استفاده‌ی زیاد از delay() داخل loop() مشکل‌ساز است؟</strong></strong> <p class="schema-faq-answer">بله، چون در طول مدت delay()، برد قادر به اجرای کد دیگری یا واکنش به رویدادهای جدید نیست. برای پروژه‌هایی که نیاز به واکنش سریع دارند، بهتر است از millis() به‌جای delay() استفاده شود.</p> </div> <div class="schema-faq-section" id="faq-question-1787433757214"><strong class="schema-faq-question"><strong>6. آیا متغیرهایی که داخل loop() تعریف می‌شوند، مقدارشان بین تکرارها حفظ می‌شود؟</strong></strong> <p class="schema-faq-answer">خیر. متغیرهای تعریف‌شده داخل loop() محلی هستند و در هر بار اجرا از نو مقداردهی می‌شوند. برای حفظ مقدار بین تکرارها باید متغیر را به‌صورت سراسری تعریف کنید.</p> </div> </div><h3 class="wp-block-heading" id="h-جمع-بندی">جمع‌بندی</h3><p class="wp-block-paragraph">تابع loop() یکی از دو ستون اصلی هر برنامه‌نویسی آردوینو است و مسئولیت اجرای پیوسته و بی‌پایان منطق اصلی پروژه را بر عهده دارد. درک درست نحوه‌ی عملکرد آن، از جمله تفاوتش با setup()، نحوه‌ی مدیریت متغیرها و اجتناب از اشتباهات رایج مثل استفاده‌ی نادرست از delay() یا حلقه‌های تودرتوی بی‌پایان، پایه‌ای‌ترین گام برای تسلط بر برنامه‌نویسی آردوینو محسوب می‌شود. اگر تازه‌کار هستید، پیشنهاد می‌شود در کنار این مقاله، به سراغ آموزش‌های مرتبط با setup()، توابع millis() و digitalRead() نیز بروید تا تصویر کامل‌تری از ساختار یک اسکچ آردوینو به دست آورید.</p><p class="wp-block-paragraph">اگر درباره دستور loop() در آردوینو چیست؟ آموزش کامل با مثال ، سوالی دارید یا در پروژه خود با چالش خاصی روبرو شده‌اید، نظر خود را در بخش دیدگاه‌ها بنویسید تا پاسخگوی شما باشیم. همچنین پیشنهاد می‌کنیم این مقاله را با همکاران و علاقه‌مندان به دنیای الکترونیک به اشتراک بگذارید.</p><p class="wp-block-paragraph"></p><!-- SMART-ILB-BOX-START --><div class="smart-ilb-box smart-ilb-style1" data-smart-ilb="1"><p class="smart-ilb-box-title">مطلب پیشنهادی</p><ul class="smart-ilb-list"><li class="smart-ilb-item" data-smart-ilb-link="681"><a href="https://makingprojec.com/arduino-setup-function/" data-smart-ilb-target="59380" target="_blank">دستور setup() در آردوینو چیست؟ آموزش کامل با مثال</a></li><li class="smart-ilb-item" data-smart-ilb-link="682"><a href="https://makingprojec.com/arduino-if-statement/" data-smart-ilb-target="59438" target="_blank">دستور if در آردوینو چیست؟ آموزش کامل با مثال</a></li><li class="smart-ilb-item" data-smart-ilb-link="683"><a href="https://makingprojec.com/what-is-curly-braces-in-arduino/" data-smart-ilb-target="59324" target="_blank">آکولاد `{}` در آردوینو چیست؟ آموزش کامل با مثال</a></li></ul></div><!-- SMART-ILB-BOX-END -->

<div class="kk-star-ratings kksr-auto kksr-align-center kksr-valign-bottom"
    data-payload='{&quot;align&quot;:&quot;center&quot;,&quot;id&quot;:&quot;59386&quot;,&quot;slug&quot;:&quot;default&quot;,&quot;valign&quot;:&quot;bottom&quot;,&quot;ignore&quot;:&quot;&quot;,&quot;reference&quot;:&quot;auto&quot;,&quot;class&quot;:&quot;&quot;,&quot;count&quot;:&quot;0&quot;,&quot;legendonly&quot;:&quot;&quot;,&quot;readonly&quot;:&quot;&quot;,&quot;score&quot;:&quot;0&quot;,&quot;starsonly&quot;:&quot;&quot;,&quot;best&quot;:&quot;5&quot;,&quot;gap&quot;:&quot;5&quot;,&quot;greet&quot;:&quot;امتیاز دادن به مطلب&quot;,&quot;legend&quot;:&quot;0\/5 - (0 امتیاز)&quot;,&quot;size&quot;:&quot;22&quot;,&quot;title&quot;:&quot;دستور loop() در آردوینو چیست؟ آموزش کامل با مثال&quot;,&quot;width&quot;:&quot;0&quot;,&quot;_legend&quot;:&quot;{score}\/{best} - ({count} {votes})&quot;,&quot;font_factor&quot;:&quot;1.25&quot;}'>
            
<div class="kksr-stars">
    
<div class="kksr-stars-inactive">
            <div class="kksr-star" data-star="1" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" data-star="2" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" data-star="3" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" data-star="4" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" data-star="5" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
    </div>
    
<div class="kksr-stars-active" style="width: 0px;">
            <div class="kksr-star" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
    </div>
</div>
                

<div class="kksr-legend" style="font-size: 17.6px;">
            <span class="kksr-muted">امتیاز دادن به مطلب</span>
    </div>
    </div>
<p>نوشته <a href="https://makingprojec.com/arduino-loop-function/">دستور loop() در آردوینو چیست؟ آموزش کامل با مثال</a> اولین بار در <a href="https://makingprojec.com">ساخت پروژه الکترونیک</a>. پدیدار شد.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://makingprojec.com/arduino-loop-function/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>دستور setup() در آردوینو چیست؟ آموزش کامل با مثال</title>
		<link>https://makingprojec.com/arduino-setup-function/</link>
					<comments>https://makingprojec.com/arduino-setup-function/#respond</comments>
		
		<dc:creator><![CDATA[ساخت پروژه]]></dc:creator>
		<pubDate>Sat, 22 Aug 2026 23:30:27 +0000</pubDate>
				<category><![CDATA[اموزش اردوینو ARDUINO]]></category>
		<category><![CDATA[ساختار اصلی برنامه اردوینو Sketch Structure]]></category>
		<category><![CDATA[ساختار برنامه اردوینو Structure]]></category>
		<guid isPermaLink="false">https://makingprojec.com/?p=59380</guid>

					<description><![CDATA[<p>دستور setup() در آردوینو چیست؟ آموزش کامل با مثال ، اگر تازه وارد دنیای برنامه‌نویسی آردوینو شده باشید، احتمالاً در همان اولین پروژه‌ی خود با دو تابع آشنا می‌شوید: setup() و loop(). این دو تابع ستون فقرات هر برنامه (یا به اصطلاح آردوینویی‌ها، «اسکچ») هستند و بدون آن‌ها هیچ کدی روی برد اجرا نمی‌شود. در این مقاله به‌طور کامل و دقیق با تابع setup() آشنا می‌شویم، نحوه‌ی نوشتن آن را بررسی می‌کنیم و با چند مثال عملی کاربردش را در پروژه‌های واقعی نشان می‌دهیم. این مطلب بخشی از آموزش برنامه‌نو ...</p>
<p>نوشته <a href="https://makingprojec.com/arduino-setup-function/">دستور setup() در آردوینو چیست؟ آموزش کامل با مثال</a> اولین بار در <a href="https://makingprojec.com">ساخت پروژه الکترونیک</a>. پدیدار شد.</p>
]]></description>
										<content:encoded><![CDATA[<p class="wp-block-paragraph">دستور setup() در آردوینو چیست؟ آموزش کامل با مثال ، اگر تازه وارد دنیای برنامه‌نویسی آردوینو شده باشید، احتمالاً در همان اولین پروژه‌ی خود با دو تابع آشنا می‌شوید: <code>setup()</code> و <code>loop()</code>. این دو تابع ستون فقرات هر برنامه (یا به اصطلاح آردوینویی‌ها، «اسکچ») هستند و بدون آن‌ها هیچ کدی روی برد اجرا نمی‌شود. در این مقاله به‌طور کامل و دقیق با تابع <code>setup()</code> آشنا می‌شویم، نحوه‌ی نوشتن آن را بررسی می‌کنیم و با چند مثال عملی کاربردش را در پروژه‌های واقعی نشان می‌دهیم. این مطلب بخشی از آموزش برنامه‌نویسی آردوینو برای مبتدیان است و می‌تواند پایه‌ی خوبی برای یادگیری ساختار کلی زبان آردوینو باشد.</p><p class="wp-block-paragraph">تابع <code>setup()</code> یکی از دو تابع اجباری در هر اسکچ آردوینو است. این تابع بلافاصله بعد از روشن شدن یا ریست شدن برد فراخوانی می‌شود و تنها <strong>یک‌بار</strong> اجرا می‌گردد. به همین دلیل، <code>setup()</code> بهترین جا برای انجام کارهای مقداردهی اولیه است؛ کارهایی مانند تعریف حالت پایه‌ها (ورودی یا خروجی بودن پین‌ها)، راه‌اندازی ارتباط سریال، مقداردهی اولیه‌ی متغیرها، یا فراخوانی توابع آماده‌سازی کتابخانه‌هایی که در پروژه استفاده می‌کنید.</p><p class="wp-block-paragraph">نکته‌ی مهم این است که کدهای داخل <code>setup()</code> فقط یک بار، در همان لحظه‌ی روشن‌شدن یا ریست برد، اجرا می‌شوند و دیگر تکرار نخواهند شد. برخلاف آن، تابع <code>loop()</code> بی‌نهایت بار و پشت سر هم اجرا می‌شود و منطق اصلی برنامه معمولاً آنجا نوشته می‌شود.</p><h3 class="wp-block-heading" id="h-نحوه-ی-نوشتار-syntax-و-پارامترها">نحوه‌ی نوشتار (Syntax) و پارامترها</h3><p class="wp-block-paragraph">ساختار کلی تابع <code>setup()</code> به این شکل است:</p><p class="wp-block-paragraph">arduino</p><div class="code-block">
                        <button class="copy-code-btn">کپی</button>
                        <div class="line"></div>
                        <pre class="wp-block-code"><code>void setup() {
  // کدهای مقداردهی اولیه اینجا نوشته می‌شوند
}</code></pre>
                        <div class="line"></div>
                    </div><p class="wp-block-paragraph">نکات مربوط به نحوه‌ی نوشتار:</p><ul class="wp-block-list"><li>تابع <code>setup()</code> <strong>هیچ پارامتری</strong> نمی‌گیرد؛ پرانتز جلوی آن همیشه خالی است.</li>

<li>کلمه‌ی کلیدی <code>void</code> قبل از نام تابع نشان می‌دهد که این تابع مقداری را برنمی‌گرداند.</li>

<li>تمام دستورات باید داخل آکولاد <code>{ }</code> نوشته شوند.</li>

<li>نام این تابع دقیقاً باید <code>setup</code> باشد (با حروف کوچک) تا کامپایلر آردوینو آن را به‌عنوان تابع ویژه‌ی راه‌اندازی بشناسد.</li></ul><h3 class="wp-block-heading" id="h-مقدار-بازگشتی-return-value">مقدار بازگشتی (Return Value)</h3><p class="wp-block-paragraph">تابع <code>setup()</code> هیچ مقداری برنمی‌گرداند. به همین دلیل نوع بازگشتی آن <code>void</code> تعریف شده است. اگر در کد نیاز دارید داده‌ای را نگه دارید یا بین بخش‌های مختلف برنامه به اشتراک بگذارید، باید از متغیرهای سراسری (Global Variables) استفاده کنید که خارج از <code>setup()</code> و <code>loop()</code> تعریف می‌شوند.</p><h3 class="wp-block-heading" id="h-کد-نمونه-ی-کامل">کد نمونه‌ی کامل</h3><p class="wp-block-paragraph">در مثال زیر، یک دکمه‌ی فشاری (Push Button) به پین شماره‌ی ۳ متصل شده و ارتباط سریال با نرخ ۹۶۰۰ بیت بر ثانیه راه‌اندازی می‌شود. تمام این مقداردهی‌ها فقط یک‌بار، در <code>setup()</code> انجام می‌شوند:</p><p class="wp-block-paragraph">arduino</p><div class="code-block">
                        <button class="copy-code-btn">کپی</button>
                        <div class="line"></div>
                        <pre class="wp-block-code"><code>// تعریف متغیر سراسری برای شماره‌ی پین دکمه
int buttonPin = 3;

void setup() {
  // راه‌اندازی ارتباط سریال با نرخ 9600 بیت بر ثانیه
  // Initialize serial communication at 9600 bits per second
  Serial.begin(9600);

  // تنظیم پین دکمه به‌عنوان ورودی
  // Set buttonPin as an INPUT
  pinMode(buttonPin, INPUT);
}

void loop() {
  // کد اصلی برنامه که به‌طور مداوم تکرار می‌شود
  // Main code that runs repeatedly
}</code></pre>
                        <div class="line"></div>
                    </div><p class="wp-block-paragraph">توضیح خط‌به‌خط:</p><ul class="wp-block-list"><li><strong>خط ۲:</strong> متغیر <code>buttonPin</code> به‌صورت سراسری تعریف شده تا هم در <code>setup()</code> و هم در <code>loop()</code> قابل دسترسی باشد.</li>

<li><strong>خط ۵ (داخل setup):</strong> با <code>Serial.begin(9600)</code> ارتباط سریال بین آردوینو و کامپیوتر با سرعت ۹۶۰۰ بیت بر ثانیه برقرار می‌شود. این کار فقط یک‌بار لازم است، بنابراین جایش داخل <code>setup()</code> است، نه <code>loop()</code>.</li>

<li><strong>خط ۹ (داخل setup):</strong> با <code>pinMode(buttonPin, INPUT)</code> مشخص می‌شود که پین شماره‌ی ۳ به‌عنوان ورودی رفتار کند، چون قرار است سیگنال دکمه را بخوانیم.</li>

<li><strong>تابع loop():</strong> خالی گذاشته شده، چون تمرکز این مثال روی <code>setup()</code> است؛ در پروژه‌ی واقعی، خواندن وضعیت دکمه و اجرای منطق برنامه اینجا قرار می‌گیرد.</li></ul><h3 class="wp-block-heading" id="h-نکات-و-هشدارهای-رایج">نکات و هشدارهای رایج</h3><ul class="wp-block-list"><li><strong>اشتباه رایج مبتدیان:</strong> قرار دادن <code>pinMode()</code> یا <code>Serial.begin()</code> داخل <code>loop()</code> به‌جای <code>setup()</code>. این کار باعث می‌شود این دستورات هزاران بار در ثانیه تکرار شوند که هم غیرضروری است و هم می‌تواند رفتار غیرمنتظره ایجاد کند (مثلاً قطع و وصل مکرر ارتباط سریال).</li>

<li><strong>فراموش کردن تابع setup() یا loop():</strong> هر اسکچ آردوینو حتماً باید هر دو تابع را داشته باشد، حتی اگر یکی از آن‌ها خالی باشد؛ در غیر این صورت کامپایل با خطا مواجه می‌شود.</li>

<li><strong>حروف بزرگ و کوچک:</strong> نام تابع باید دقیقاً <code>setup</code> نوشته شود (نه <code>Setup</code> یا <code>SETUP</code>)، چون زبان آردوینو نسبت به بزرگی و کوچکی حروف حساس است.</li>

<li><strong>فراخوانی مستقیم setup():</strong> نیازی نیست شما خودتان <code>setup()</code> را صدا بزنید؛ این تابع به‌صورت خودکار توسط برنامه‌ی اصلی آردوینو (main) در پس‌زمینه فراخوانی می‌شود.</li>

<li><strong>کدهای طولانی و تأخیردار:</strong> از قرار دادن حلقه‌های بی‌نهایت یا تأخیرهای بسیار طولانی داخل <code>setup()</code> خودداری کنید، مگر اینکه واقعاً بخواهید قبل از شروع برنامه‌ی اصلی، مرحله‌ای زمان‌بر (مثل اتصال به وای‌فای) انجام شود.</li></ul><h3 class="wp-block-heading" id="h-کاربردهای-عملی-و-پروژه-های-پیشنهادی">کاربردهای عملی و پروژه‌های پیشنهادی</h3><p class="wp-block-paragraph">تابع <code>setup()</code> در تقریباً همه‌ی پروژه‌های آردوینو کاربرد دارد. چند نمونه‌ی رایج:</p><ul class="wp-block-list"><li><strong>پروژه‌ی چشمک‌زن LED (Blink):</strong> تنظیم پین LED به‌عنوان خروجی با <code>pinMode(LED_BUILTIN, OUTPUT)</code> در <code>setup()</code>.</li>

<li><strong>پروژه‌های سنسوری:</strong> راه‌اندازی سنسورهای دما، رطوبت یا فاصله که معمولاً نیاز به یک تابع مقداردهی اولیه از کتابخانه‌ی مربوطه دارند (مثل <code>dht.begin()</code> یا <code>lcd.begin()</code>).</li>

<li><strong>پروژه‌های مبتنی بر ارتباط سریال:</strong> هر پروژه‌ای که نیاز به نمایش داده در Serial Monitor دارد، حتماً باید <code>Serial.begin()</code> را در <code>setup()</code> فراخوانی کند.</li>

<li><strong>پروژه‌های وای‌فای و بلوتوث:</strong> اتصال اولیه به شبکه یا جفت‌سازی بلوتوث معمولاً در <code>setup()</code> انجام می‌شود تا فقط یک‌بار در ابتدای کار رخ دهد.</li>

<li><strong>پروژه‌های موتور و سروو:</strong> تعریف پین‌های کنترل موتور یا اتصال سروو به پین مشخص، از کارهای رایجی است که در <code>setup()</code> جای می‌گیرد.</li></ul><h3 class="wp-block-heading" id="h-سوالات-متداول">سوالات متداول</h3><div class="schema-faq wp-block-yoast-faq-block"><div class="schema-faq-section" id="faq-question-1787432622401"><strong class="schema-faq-question"><strong>1. آیا می‌توان بدون تابع setup() یک اسکچ آردوینو نوشت؟</strong></strong> <p class="schema-faq-answer">خیر. هر اسکچ آردوینو باید حتماً هر دو تابع <code>setup()</code> و <code>loop()</code> را داشته باشد، حتی اگر یکی از آن‌ها بدنه‌ی خالی داشته باشد. در غیر این صورت، کامپایلر خطا می‌دهد.</p> </div> <div class="schema-faq-section" id="faq-question-1787432634475"><strong class="schema-faq-question"><strong>2. چند بار setup() اجرا می‌شود؟</strong></strong> <p class="schema-faq-answer">تنها یک‌بار؛ درست بعد از روشن شدن برد یا هر بار که برد ریست شود (مثلاً با فشردن دکمه‌ی Reset یا آپلود مجدد کد).</p> </div> <div class="schema-faq-section" id="faq-question-1787432646951"><strong class="schema-faq-question"><strong>3. تفاوت setup() و loop() چیست؟</strong></strong> <p class="schema-faq-answer"><code>setup()</code> فقط یک‌بار برای مقداردهی اولیه اجرا می‌شود، اما <code>loop()</code> بی‌نهایت بار و پشت سر هم تکرار می‌شود و منطق اصلی برنامه در آن قرار دارد.</p> </div> <div class="schema-faq-section" id="faq-question-1787432659198"><strong class="schema-faq-question"><strong>4. آیا می‌توان از حلقه‌های while یا if داخل setup() استفاده کرد؟</strong></strong> <p class="schema-faq-answer">بله، هیچ محدودیتی برای استفاده از ساختارهای کنترلی مانند <code>if</code> یا <code>while</code> داخل <code>setup()</code> وجود ندارد؛ همان قوانین معمول زبان C/C++ در آنجا هم برقرار است.</p> </div> <div class="schema-faq-section" id="faq-question-1787432667928"><strong class="schema-faq-question"><strong>5. آیا setup() می‌تواند پارامتر بگیرد یا مقداری برگرداند؟</strong></strong> <p class="schema-faq-answer">خیر. <code>setup()</code> نه پارامتری می‌گیرد و نه مقداری برمی‌گرداند؛ نوع بازگشتی آن همیشه <code>void</code> است.</p> </div> <div class="schema-faq-section" id="faq-question-1787432680532"><strong class="schema-faq-question"><strong>6. چرا برنامه‌ی من هر بار Serial Monitor را باز می‌کنم دوباره اجرا می‌شود؟</strong></strong> <p class="schema-faq-answer">این رفتار طبیعی است، چون باز کردن پورت سریال روی بسیاری از بردهای آردوینو (مانند Uno) باعث ریست شدن برد می‌شود و در نتیجه <code>setup()</code> دوباره فراخوانی می‌شود.</p> </div> </div><h3 class="wp-block-heading" id="h-جمع-بندی">جمع‌بندی</h3><p class="wp-block-paragraph">دستور setup() در آردوینو چیست؟ آموزش کامل با مثال ، تابع <code>setup()</code> نقطه‌ی شروع هر پروژه‌ی آردوینویی است و شناخت دقیق آن، پایه‌ی درک ساختار کلی برنامه‌نویسی آردوینو محسوب می‌شود. با تمرین و ساختن پروژه‌های کوچک مثل چشمک‌زن LED یا خواندن مقدار سنسور، به‌مرور با کاربردهای متنوع این تابع آشنا خواهید شد. برای ادامه‌ی یادگیری، پیشنهاد می‌شود آموزش تابع <code>loop()</code> و همچنین مبحث توابع پایه‌ای مثل <code>pinMode()</code> و <code>digitalWrite()</code> را نیز مطالعه کنید.</p><p class="wp-block-paragraph"></p><!-- SMART-ILB-BOX-START --><div class="smart-ilb-box smart-ilb-style1" data-smart-ilb="1"><p class="smart-ilb-box-title">مطلب پیشنهادی</p><ul class="smart-ilb-list"><li class="smart-ilb-item" data-smart-ilb-link="678"><a href="https://makingprojec.com/arduino-loop-function/" data-smart-ilb-target="59386" target="_blank">دستور loop() در آردوینو چیست؟ آموزش کامل با مثال</a></li><li class="smart-ilb-item" data-smart-ilb-link="679"><a href="https://makingprojec.com/arduino-if-statement/" data-smart-ilb-target="59438" target="_blank">دستور if در آردوینو چیست؟ آموزش کامل با مثال</a></li><li class="smart-ilb-item" data-smart-ilb-link="680"><a href="https://makingprojec.com/what-is-curly-braces-in-arduino/" data-smart-ilb-target="59324" target="_blank">آکولاد `{}` در آردوینو چیست؟ آموزش کامل با مثال</a></li></ul></div><!-- SMART-ILB-BOX-END -->

<div class="kk-star-ratings kksr-auto kksr-align-center kksr-valign-bottom"
    data-payload='{&quot;align&quot;:&quot;center&quot;,&quot;id&quot;:&quot;59380&quot;,&quot;slug&quot;:&quot;default&quot;,&quot;valign&quot;:&quot;bottom&quot;,&quot;ignore&quot;:&quot;&quot;,&quot;reference&quot;:&quot;auto&quot;,&quot;class&quot;:&quot;&quot;,&quot;count&quot;:&quot;1&quot;,&quot;legendonly&quot;:&quot;&quot;,&quot;readonly&quot;:&quot;&quot;,&quot;score&quot;:&quot;5&quot;,&quot;starsonly&quot;:&quot;&quot;,&quot;best&quot;:&quot;5&quot;,&quot;gap&quot;:&quot;5&quot;,&quot;greet&quot;:&quot;امتیاز دادن به مطلب&quot;,&quot;legend&quot;:&quot;5\/5 - (1 امتیاز)&quot;,&quot;size&quot;:&quot;22&quot;,&quot;title&quot;:&quot;دستور setup() در آردوینو چیست؟ آموزش کامل با مثال&quot;,&quot;width&quot;:&quot;132.5&quot;,&quot;_legend&quot;:&quot;{score}\/{best} - ({count} {votes})&quot;,&quot;font_factor&quot;:&quot;1.25&quot;}'>
            
<div class="kksr-stars">
    
<div class="kksr-stars-inactive">
            <div class="kksr-star" data-star="1" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" data-star="2" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" data-star="3" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" data-star="4" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" data-star="5" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
    </div>
    
<div class="kksr-stars-active" style="width: 132.5px;">
            <div class="kksr-star" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
    </div>
</div>
                

<div class="kksr-legend" style="font-size: 17.6px;">
            5/5 - (1 امتیاز)    </div>
    </div>
<p>نوشته <a href="https://makingprojec.com/arduino-setup-function/">دستور setup() در آردوینو چیست؟ آموزش کامل با مثال</a> اولین بار در <a href="https://makingprojec.com">ساخت پروژه الکترونیک</a>. پدیدار شد.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://makingprojec.com/arduino-setup-function/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>سمی‌ کالن (;) در آردوینو چیست؟ آموزش کامل با مثال</title>
		<link>https://makingprojec.com/what-is-semicolon-in-arduino/</link>
					<comments>https://makingprojec.com/what-is-semicolon-in-arduino/#respond</comments>
		
		<dc:creator><![CDATA[ساخت پروژه]]></dc:creator>
		<pubDate>Sat, 22 Aug 2026 20:51:43 +0000</pubDate>
				<category><![CDATA[اموزش اردوینو ARDUINO]]></category>
		<category><![CDATA[ساختار برنامه اردوینو Structure]]></category>
		<category><![CDATA[مبانی نحوی]]></category>
		<guid isPermaLink="false">https://makingprojec.com/?p=59376</guid>

					<description><![CDATA[<p>سمی‌ کالن (;) در آردوینو چیست؟ آموزش کامل با مثال ، اگر تازه وارد دنیای برنامه‌نویسی آردوینو شده باشید، حتماً یکی از اولین خطاهایی که در محیط IDE با آن روبه‌رو می‌شوید، پیامی شبیه به expected ';' before... است. این خطا معمولاً به یک نشانه‌ی کوچک اما حیاتی برمی‌گردد: سمی‌کالن یا نقطه‌ویرگول (;).</p>
<p>سمی‌کالن شاید کوچک‌ترین کاراکتر در کد شما باشد، اما نبودش می‌تواند کل کامپایل پروژه را متوقف کند. در این مقاله به‌طور کامل بررسی می‌کنیم که سمی‌کالن در آردوینو چیست، چرا لازم است، چگونه استفا ...</p>
<p>نوشته <a href="https://makingprojec.com/what-is-semicolon-in-arduino/">سمی‌ کالن (;) در آردوینو چیست؟ آموزش کامل با مثال</a> اولین بار در <a href="https://makingprojec.com">ساخت پروژه الکترونیک</a>. پدیدار شد.</p>
]]></description>
										<content:encoded><![CDATA[<p class="wp-block-paragraph">سمی‌ کالن (;) در آردوینو چیست؟ آموزش کامل با مثال ، اگر تازه وارد دنیای <strong>برنامه‌نویسی آردوینو</strong> شده باشید، حتماً یکی از اولین خطاهایی که در محیط IDE با آن روبه‌رو می‌شوید، پیامی شبیه به <code>expected ';' before...</code> است. این خطا معمولاً به یک نشانه‌ی کوچک اما حیاتی برمی‌گردد: <strong>سمی‌کالن یا نقطه‌ویرگول (;)</strong>.</p><p class="wp-block-paragraph">سمی‌کالن شاید کوچک‌ترین کاراکتر در کد شما باشد، اما نبودش می‌تواند کل کامپایل پروژه را متوقف کند. در این مقاله به‌طور کامل بررسی می‌کنیم که سمی‌کالن در آردوینو چیست، چرا لازم است، چگونه استفاده می‌شود و چه اشتباهات رایجی حول آن رخ می‌دهد.</p><p class="wp-block-paragraph">در زبان برنامه‌نویسی آردوینو (که بر پایه‌ی C/C++ است)، سمی‌کالن برای <strong>پایان دادن به یک دستور (statement)</strong> استفاده می‌شود. هر خط از کد که یک عملیات مشخص را انجام می‌دهد—مثل تعریف یک متغیر، فراخوانی یک تابع، یا انجام یک محاسبه—باید با سمی‌کالن به پایان برسد. این نشانه به کامپایلر می‌گوید: «این دستور اینجا تمام شد، برو سراغ دستور بعدی».</p><p class="wp-block-paragraph">نکته‌ی مهم این است که سمی‌کالن یک تابع یا دستور مستقل نیست، بلکه بخشی از <strong>ساختار نحوی (syntax)</strong> زبان است؛ درست مثل نقطه در پایان یک جمله‌ی فارسی یا انگلیسی.</p><h2 id="h-نحوه-ی-نوشتار-syntax" class="wp-block-heading">نحوه‌ی نوشتار (Syntax)</h2><p class="wp-block-paragraph">سمی‌کالن همیشه در انتهای یک دستور کامل قرار می‌گیرد:</p><div class="code-block">
                        <button class="copy-code-btn">کپی</button>
                        <div class="line"></div>
                        <pre class="wp-block-code"><code>statement;
</code></pre>
                        <div class="line"></div>
                    </div><p class="wp-block-paragraph">برای مثال:</p><div class="code-block">
                        <button class="copy-code-btn">کپی</button>
                        <div class="line"></div>
                        <pre class="wp-block-code"><code>int a = 13;      // تعریف متغیر عدد صحیح
float b = 17.1;  // تعریف متغیر اعشاری
</code></pre>
                        <div class="line"></div>
                    </div><h3 id="h-پارامترها" class="wp-block-heading">پارامترها</h3><p class="wp-block-paragraph">سمی‌کالن هیچ پارامتری نمی‌گیرد؛ صرفاً یک نشانه‌ی نحوی برای پایان دستور است.</p><h2 id="h-مقدار-بازگشتی" class="wp-block-heading">مقدار بازگشتی</h2><p class="wp-block-paragraph">سمی‌کالن یک تابع نیست و بنابراین <strong>مقدار بازگشتی ندارد</strong>. نقش آن کاملاً ساختاری است و در فرآیند کامپایل به کامپایلر کمک می‌کند تا مرز میان دستورات را تشخیص دهد.</p><h2 id="h-کد-نمونه-ی-کامل" class="wp-block-heading">کد نمونه‌ی کامل</h2><p class="wp-block-paragraph">در ادامه یک اسکچ ساده می‌بینید که در آن از سمی‌کالن برای پایان دادن به چند نوع دستور مختلف استفاده شده است:</p><div class="code-block">
                        <button class="copy-code-btn">کپی</button>
                        <div class="line"></div>
                        <pre class="wp-block-code"><code>// تعریف پین LED به‌عنوان یک ثابت (Constant)
const int ledPin = 13;

void setup() {
  // تنظیم پین به‌عنوان خروجی
  // توجه کنید که هر دستور با سمی‌کالن پایان می‌یابد
  pinMode(ledPin, OUTPUT);
  Serial.begin(9600); // شروع ارتباط سریال
}

void loop() {
  digitalWrite(ledPin, HIGH); // روشن کردن LED
  delay(1000);                 // توقف به مدت ۱ ثانیه
  digitalWrite(ledPin, LOW);   // خاموش کردن LED
  delay(1000);                 // توقف به مدت ۱ ثانیه

  Serial.println("LED چشمک زد"); // ارسال پیام به مانیتور سریال
}
</code></pre>
                        <div class="line"></div>
                    </div><p class="wp-block-paragraph">در این کد، هر خط داخل <code>setup()</code> و <code>loop()</code> که یک عملیات مستقل انجام می‌دهد (مثل <code>pinMode</code>، <code>digitalWrite</code> یا <code>delay</code>) با سمی‌کالن بسته شده است. اما توجه کنید که خود توابع <code>void setup()</code> و <code>void loop()</code> که با آکولاد <code>{ }</code> تعریف می‌شوند، نیازی به سمی‌کالن در پایان ندارند؛ چون بلوک کد هستند نه یک دستور تکی.</p><h2 id="h-نکات-و-هشدارهای-رایج" class="wp-block-heading">نکات و هشدارهای رایج</h2><p class="wp-block-paragraph">فراموش کردن سمی‌کالن یکی از رایج‌ترین اشتباهات مبتدیان در برنامه‌نویسی آردوینو است. چند نکته‌ی مهم را در نظر داشته باشید:</p><ul class="wp-block-list"><li><strong>خطای کامپایل:</strong> اگر سمی‌کالن را در انتهای یک خط فراموش کنید، کامپایلر با خطا متوقف می‌شود. گاهی پیام خطا کاملاً واضح است و مستقیماً به «سمی‌کالن گم‌شده» اشاره می‌کند، اما گاهی پیام خطا گنگ و نامرتبط به نظر می‌رسد. در چنین مواردی، اولین کاری که باید انجام دهید بررسی خط بالاتر از محل خطا برای یافتن سمی‌کالن جا‌مانده است.</li>

<li><strong>سمی‌کالن اضافه بعد از <code>#define</code> و <code>#include</code>:</strong> بر خلاف دستورات معمولی، خطوط <code>#define</code> و <code>#include</code> که در ابتدای اسکچ نوشته می‌شوند، <strong>نباید</strong> با سمی‌کالن پایان یابند. این خطوط پیش‌پردازنده (preprocessor) هستند و قواعد متفاوتی دارند.</li></ul><div class="code-block">
                        <button class="copy-code-btn">کپی</button>
                        <div class="line"></div>
                        <pre class="wp-block-code"><code>// درست
#define LED_PIN 13
#include &lt;Servo.h&gt;

// نادرست (سمی‌کالن اضافه)
#define LED_PIN 13;
</code></pre>
                        <div class="line"></div>
                    </div><ul class="wp-block-list"><li><strong>سمی‌کالن اشتباهی بعد از <code>if</code>، <code>for</code> یا <code>while</code>:</strong> یکی از موذی‌ترین خطاها زمانی رخ می‌دهد که یک سمی‌کالن اضافه بلافاصله بعد از دستورات شرطی یا حلقه‌ای قرار بگیرد. در این حالت، کامپایلر آن را معادل یک بلوک خالی <code>{}</code> در نظر می‌گیرد و کد داخل بلوک بعدی، بدون توجه به شرط، همیشه اجرا می‌شود:</li></ul><div class="code-block">
                        <button class="copy-code-btn">کپی</button>
                        <div class="line"></div>
                        <pre class="wp-block-code"><code>bool condition = false;

// اشتباه: سمی‌کالن اضافه بعد از if باعث می‌شود این پیام
// همیشه چاپ شود، حتی وقتی condition نادرست است!
if (condition);
{
  Serial.println("این پیام همیشه چاپ می‌شود");
}
</code></pre>
                        <div class="line"></div>
                    </div><p class="wp-block-paragraph">این نوع خطا معمولاً هیچ پیام کامپایلی تولید نمی‌کند (چون از نظر نحوی کد درست است)، بنابراین تشخیص آن سخت‌تر از خطای کامپایل معمولی است و باید هنگام بررسی رفتار غیرمنتظره‌ی برنامه به آن توجه کرد.</p><h2 id="h-کاربردهای-عملی-و-پروژه-های-پیشنهادی" class="wp-block-heading">کاربردهای عملی و پروژه‌های پیشنهادی</h2><p class="wp-block-paragraph">از آنجا که سمی‌کالن در تقریباً هر خط کد آردوینو حضور دارد، تسلط بر آن پیش‌نیاز هر پروژه‌ای است، از جمله:</p><ul class="wp-block-list"><li><strong>چشمک‌زن LED (Blink):</strong> ساده‌ترین پروژه‌ی آردوینو که در آن استفاده‌ی درست از سمی‌کالن در دستورات <code>digitalWrite</code> و <code>delay</code> اهمیت زیادی دارد.</li>

<li><strong>خواندن سنسور و چاپ در مانیتور سریال:</strong> پروژه‌هایی که با <code>analogRead</code> و <code>Serial.println</code> سروکار دارند و هر دستور باید جداگانه با سمی‌کالن بسته شود.</li>

<li><strong>کنترل موتور یا سروو با شرط:</strong> در پروژه‌هایی که از <code>if</code> و حلقه‌های <code>for</code> یا <code>while</code> استفاده می‌کنید، دقت در جای‌گذاری سمی‌کالن (و پرهیز از سمی‌کالن اضافه) اهمیت دوچندانی پیدا می‌کند.</li></ul><h2 id="h-سوالات-متداول" class="wp-block-heading">سوالات متداول</h2><div class="schema-faq wp-block-yoast-faq-block"><div class="schema-faq-section" id="faq-question-1787431055703"><strong class="schema-faq-question"><strong>1. چرا وقتی سمی‌کالن را جا می‌اندازم، پیام خطا گاهی به خط اشتباهی اشاره می‌کند؟</strong></strong> <p class="schema-faq-answer">کامپایلر تا زمانی که به سمی‌کالن بعدی برسد، دستور را «ناتمام» تلقی می‌کند. به همین دلیل ممکن است خطا در خط بعدی یا حتی چند خط پایین‌تر گزارش شود، نه دقیقاً همان خطی که سمی‌کالن از قلم افتاده است.</p> </div> <div class="schema-faq-section" id="faq-question-1787431070588"><strong class="schema-faq-question"><strong>2. آیا بعد از <code>void setup()</code> و <code>void loop()</code> هم باید سمی‌کالن بگذاریم؟</strong></strong> <p class="schema-faq-answer">خیر. این‌ها تعریف تابع هستند و با آکولاد <code>{ }</code> بسته می‌شوند، نه سمی‌کالن. سمی‌کالن فقط برای دستورات تکی داخل این بلوک‌ها استفاده می‌شود.</p> </div> <div class="schema-faq-section" id="faq-question-1787431082216"><strong class="schema-faq-question"><strong>3. چرا بعد از <code>#define</code> نباید سمی‌کالن بگذاریم؟</strong></strong> <p class="schema-faq-answer">چون <code>#define</code> یک دستور پیش‌پردازنده است، نه یک دستور معمولی C++. اگر سمی‌کالن اضافه کنید، آن سمی‌کالن هم بخشی از مقدار جایگزین‌شده در نظر گرفته می‌شود و می‌تواند باعث خطاهای عجیب در ادامه‌ی کد شود.</p> </div> <div class="schema-faq-section" id="faq-question-1787431096994"><strong class="schema-faq-question"><strong>4. اگر بعد از <code>if</code> یک سمی‌کالن اضافه بگذارم، برنامه خطا می‌دهد؟</strong></strong> <p class="schema-faq-answer">معمولاً نه؛ کامپایلر خطایی نشان نمی‌دهد چون از نظر نحوی مشکلی نیست. اما رفتار برنامه اشتباه خواهد بود، چون بلوک بعد از <code>if</code> صرف‌نظر از شرط همیشه اجرا می‌شود. این نوع باگ‌ها تشخیصشان سخت‌تر از خطاهای کامپایل است.</p> </div> <div class="schema-faq-section" id="faq-question-1787431112583"><strong class="schema-faq-question"><strong>5. آیا هر خط کد آردوینو نیاز به سمی‌کالن دارد؟</strong></strong> <p class="schema-faq-answer">نه هر خط، بلکه هر «دستور». خطوطی مثل تعریف تابع، حلقه‌ها و شرط‌ها که با آکولاد بسته می‌شوند، نیازی به سمی‌کالن ندارند؛ اما دستورات تکی داخل آن‌ها باید با سمی‌کالن پایان یابند.</p> </div> <div class="schema-faq-section" id="faq-question-1787431123633"><strong class="schema-faq-question"><strong>6. آیا می‌توان چند دستور را در یک خط و با چند سمی‌کالن نوشت؟</strong></strong> <p class="schema-faq-answer">از نظر فنی بله، چون کامپایلر فضای خالی و خطوط جدید را نادیده می‌گیرد و فقط به سمی‌کالن برای تشخیص پایان دستور توجه می‌کند. اما از نظر خوانایی کد، توصیه می‌شود هر دستور را در یک خط جداگانه بنویسید.</p> </div> </div><h2 id="h-جمع-بندی" class="wp-block-heading">جمع‌بندی</h2><p class="wp-block-paragraph">سمی‌کالن شاید در نگاه اول یک جزئیات کوچک به نظر برسد، اما یکی از پایه‌ای‌ترین بخش‌های <strong>آموزش آردوینو</strong> و ساختار زبان C/C++ است. دقت در استفاده‌ی درست از آن—از یادآوری آن در انتهای دستورات تا پرهیز از سمی‌کالن‌های اضافه بعد از <code>if</code>، <code>for</code>، <code>while</code>، <code>#define</code> و <code>#include</code>—می‌تواند از بسیاری از خطاهای گیج‌کننده در <strong>برنامه‌نویسی آردوینو</strong> جلوگیری کند. برای تسلط بیشتر، پیشنهاد می‌کنیم سایر بخش‌های مربوط به ساختار نحوی زبان آردوینو، مثل آکولادها و کامنت‌گذاری، را نیز مطالعه کنید.</p><p class="wp-block-paragraph">اگر درباره سمی‌ کالن (;) در آردوینو چیست؟ آموزش کامل با مثال ، سوالی دارید یا در پروژه خود با چالش خاصی روبرو شده‌اید، نظر خود را در بخش دیدگاه‌ها بنویسید تا پاسخگوی شما باشیم. همچنین پیشنهاد می‌کنیم این مقاله را با همکاران و علاقه‌مندان به دنیای الکترونیک به اشتراک بگذارید.</p><p class="wp-block-paragraph"></p><!-- SMART-ILB-BOX-START --><div class="smart-ilb-box smart-ilb-style1" data-smart-ilb="1"><p class="smart-ilb-box-title">مطلب پیشنهادی</p><ul class="smart-ilb-list"><li class="smart-ilb-item" data-smart-ilb-link="675"><a href="https://makingprojec.com/arduino-if-statement/" data-smart-ilb-target="59438" target="_blank">دستور if در آردوینو چیست؟ آموزش کامل با مثال</a></li><li class="smart-ilb-item" data-smart-ilb-link="676"><a href="https://makingprojec.com/what-is-curly-braces-in-arduino/" data-smart-ilb-target="59324" target="_blank">آکولاد `{}` در آردوینو چیست؟ آموزش کامل با مثال</a></li><li class="smart-ilb-item" data-smart-ilb-link="677"><a href="https://makingprojec.com/arduino-loop-function/" data-smart-ilb-target="59386" target="_blank">دستور loop() در آردوینو چیست؟ آموزش کامل با مثال</a></li></ul></div><!-- SMART-ILB-BOX-END -->

<div class="kk-star-ratings kksr-auto kksr-align-center kksr-valign-bottom"
    data-payload='{&quot;align&quot;:&quot;center&quot;,&quot;id&quot;:&quot;59376&quot;,&quot;slug&quot;:&quot;default&quot;,&quot;valign&quot;:&quot;bottom&quot;,&quot;ignore&quot;:&quot;&quot;,&quot;reference&quot;:&quot;auto&quot;,&quot;class&quot;:&quot;&quot;,&quot;count&quot;:&quot;0&quot;,&quot;legendonly&quot;:&quot;&quot;,&quot;readonly&quot;:&quot;&quot;,&quot;score&quot;:&quot;0&quot;,&quot;starsonly&quot;:&quot;&quot;,&quot;best&quot;:&quot;5&quot;,&quot;gap&quot;:&quot;5&quot;,&quot;greet&quot;:&quot;امتیاز دادن به مطلب&quot;,&quot;legend&quot;:&quot;0\/5 - (0 امتیاز)&quot;,&quot;size&quot;:&quot;22&quot;,&quot;title&quot;:&quot;سمی‌ کالن (;) در آردوینو چیست؟ آموزش کامل با مثال&quot;,&quot;width&quot;:&quot;0&quot;,&quot;_legend&quot;:&quot;{score}\/{best} - ({count} {votes})&quot;,&quot;font_factor&quot;:&quot;1.25&quot;}'>
            
<div class="kksr-stars">
    
<div class="kksr-stars-inactive">
            <div class="kksr-star" data-star="1" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" data-star="2" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" data-star="3" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" data-star="4" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" data-star="5" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
    </div>
    
<div class="kksr-stars-active" style="width: 0px;">
            <div class="kksr-star" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
    </div>
</div>
                

<div class="kksr-legend" style="font-size: 17.6px;">
            <span class="kksr-muted">امتیاز دادن به مطلب</span>
    </div>
    </div>
<p>نوشته <a href="https://makingprojec.com/what-is-semicolon-in-arduino/">سمی‌ کالن (;) در آردوینو چیست؟ آموزش کامل با مثال</a> اولین بار در <a href="https://makingprojec.com">ساخت پروژه الکترونیک</a>. پدیدار شد.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://makingprojec.com/what-is-semicolon-in-arduino/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>آکولاد `{}` در آردوینو چیست؟ آموزش کامل با مثال</title>
		<link>https://makingprojec.com/what-is-curly-braces-in-arduino/</link>
					<comments>https://makingprojec.com/what-is-curly-braces-in-arduino/#respond</comments>
		
		<dc:creator><![CDATA[ساخت پروژه]]></dc:creator>
		<pubDate>Sat, 22 Aug 2026 03:30:46 +0000</pubDate>
				<category><![CDATA[اموزش اردوینو ARDUINO]]></category>
		<category><![CDATA[ساختار برنامه اردوینو Structure]]></category>
		<category><![CDATA[مبانی نحوی]]></category>
		<guid isPermaLink="false">https://makingprojec.com/?p=59324</guid>

					<description><![CDATA[<p>آکولاد `{}` در آردوینو چیست؟ آموزش کامل با مثال ، اگر تازه برنامه‌نویسی آردوینو را شروع کرده باشید، حتماً با علامت‌های { و } در کدهای نمونه روبه‌رو شده‌اید. این دو علامت که در فارسی به آن‌ها «آکولاد» یا «کروشه‌ی فرفری» می‌گویند، یکی از پایه‌ای‌ترین و در عین حال گیج‌کننده‌ترین بخش‌های نحو (Syntax) زبان ++C است که آردوینو نیز از آن استفاده می‌کند. بسیاری از خطاهای رایج در کامپایل کدهای آردوینو، از جمله پیام‌های مبهم و گنگ کامپایلر، ریشه در نامتوازن بودن همین آکولادها دارد. در این مقاله ب ...</p>
<p>نوشته <a href="https://makingprojec.com/what-is-curly-braces-in-arduino/">آکولاد `{}` در آردوینو چیست؟ آموزش کامل با مثال</a> اولین بار در <a href="https://makingprojec.com">ساخت پروژه الکترونیک</a>. پدیدار شد.</p>
]]></description>
										<content:encoded><![CDATA[<p class="wp-block-paragraph">آکولاد `{}` در آردوینو چیست؟ آموزش کامل با مثال ، اگر تازه برنامه‌نویسی آردوینو را شروع کرده باشید، حتماً با علامت‌های <code>{</code> و <code>}</code> در کدهای نمونه روبه‌رو شده‌اید. این دو علامت که در فارسی به آن‌ها «آکولاد» یا «کروشه‌ی فرفری» می‌گویند، یکی از پایه‌ای‌ترین و در عین حال گیج‌کننده‌ترین بخش‌های نحو (Syntax) زبان ++C است که آردوینو نیز از آن استفاده می‌کند. بسیاری از خطاهای رایج در کامپایل کدهای آردوینو، از جمله پیام‌های مبهم و گنگ کامپایلر، ریشه در نامتوازن بودن همین آکولادها دارد. در این مقاله به‌صورت کامل بررسی می‌کنیم که آکولاد در آردوینو چیست، در چه بخش‌هایی از کد به کار می‌رود و چگونه می‌توان از اشتباهات رایج مرتبط با آن جلوگیری کرد.</p><p class="wp-block-paragraph">آکولادها بخش مهمی از زبان ++C هستند و در چندین ساختار مختلف زبان برنامه‌نویسی آردوینو کاربرد دارند؛ همین تنوع کاربرد است که گاهی برای مبتدیان گیج‌کننده می‌شود. یک قانون ثابت و همیشگی درباره‌ی آکولادها وجود دارد: هر آکولاد باز <code>{</code> باید حتماً با یک آکولاد بسته <code>}</code> همراه شود. به این وضعیت که تعداد آکولادهای باز و بسته با هم برابر باشند، «متوازن بودن آکولادها» (Balanced Braces) گفته می‌شود.</p><p class="wp-block-paragraph">محیط توسعه‌ی آردوینو (Arduino IDE) امکانی راحت برای بررسی تعادل آکولادها فراهم کرده است: کافی است یک آکولاد را انتخاب کنید یا نشانگر ماوس را بلافاصله بعد از آن قرار دهید تا آکولاد متناظرش به‌صورت خودکار هایلایت شود. این ویژگی ساده، یکی از بهترین ابزارها برای پیدا کردن آکولادهای جا افتاده یا اضافی در یک کد طولانی است.</p><p class="wp-block-paragraph">برنامه‌نویسان مبتدی، به‌خصوص کسانی که از زبان‌هایی مثل BASIC به سراغ ++C می‌آیند، معمولاً در کار با آکولادها دچار سردرگمی می‌شوند؛ چون در ++C همین یک نماد ساده، هم نقش دستور RETURN در یک زیرروال (تابع) را بازی می‌کند، هم نقش ENDIF در یک شرط، و هم نقش NEXT در یک حلقه‌ی FOR.</p><h3 id="h-نحوه-ی-نوشتار-syntax-و-پارامترها" class="wp-block-heading">نحوه‌ی نوشتار (Syntax) و پارامترها</h3><p class="wp-block-paragraph">آکولادها پارامتر یا ورودی خاصی نمی‌گیرند؛ آن‌ها صرفاً یک محدوده (Scope) از کد را مشخص می‌کنند. مهم‌ترین کاربردهای آکولاد در آردوینو به شرح زیر است:</p><p class="wp-block-paragraph"><strong>۱. توابع (Functions)</strong></p><p class="wp-block-paragraph">arduino</p><div class="code-block">
                        <button class="copy-code-btn">کپی</button>
                        <div class="line"></div>
                        <pre class="wp-block-code"><code>void myFunction(datatype argument) {
  // statement(s)
}</code></pre>
                        <div class="line"></div>
                    </div><p class="wp-block-paragraph"><strong>۲. حلقه‌ی while</strong></p><p class="wp-block-paragraph">arduino</p><div class="code-block">
                        <button class="copy-code-btn">کپی</button>
                        <div class="line"></div>
                        <pre class="wp-block-code"><code>while (boolean expression) {
  // statement(s)
}</code></pre>
                        <div class="line"></div>
                    </div><p class="wp-block-paragraph"><strong>۳. حلقه‌ی do&#8230;while</strong></p><p class="wp-block-paragraph">arduino</p><div class="code-block">
                        <button class="copy-code-btn">کپی</button>
                        <div class="line"></div>
                        <pre class="wp-block-code"><code>do {
  // statement(s)
} while (boolean expression);</code></pre>
                        <div class="line"></div>
                    </div><p class="wp-block-paragraph"><strong>۴. حلقه‌ی for</strong></p><p class="wp-block-paragraph">arduino</p><div class="code-block">
                        <button class="copy-code-btn">کپی</button>
                        <div class="line"></div>
                        <pre class="wp-block-code"><code>for (initialization; termination condition; incrementing expression) {
  // statement(s)
}</code></pre>
                        <div class="line"></div>
                    </div><p class="wp-block-paragraph"><strong>۵. دستورهای شرطی if / else if / else</strong></p><p class="wp-block-paragraph">arduino</p><div class="code-block">
                        <button class="copy-code-btn">کپی</button>
                        <div class="line"></div>
                        <pre class="wp-block-code"><code>if (boolean expression) {
  // statement(s)
} else if (boolean expression) {
  // statement(s)
} else {
  // statement(s)
}</code></pre>
                        <div class="line"></div>
                    </div><p class="wp-block-paragraph">در تمام این ساختارها، هر چیزی که داخل آکولادها نوشته می‌شود، بلوکی از کد محسوب می‌شود که با هم اجرا یا نادیده گرفته می‌شود.</p><h3 id="h-مقدار-بازگشتی-return-value" class="wp-block-heading">مقدار بازگشتی (Return Value)</h3><p class="wp-block-paragraph">آکولاد یک دستور یا تابع نیست، بلکه یک نماد نحوی (Syntax Element) است؛ بنابراین هیچ مقدار بازگشتی ندارد. آکولاد صرفاً محدوده‌ی یک بلوک کد را برای کامپایلر مشخص می‌کند.</p><h3 id="h-کد-نمونه-ی-کامل-با-توضیح-خط-به-خط" class="wp-block-heading">کد نمونه‌ی کامل با توضیح خط‌به‌خط</h3><p class="wp-block-paragraph">در مثال زیر، یک LED با استفاده از یک شرط ساده کنترل می‌شود تا کاربرد آکولاد در چند ساختار مختلف (تابع، شرط و حلقه) به‌طور همزمان نشان داده شود.</p><p class="wp-block-paragraph">arduino</p><div class="code-block">
                        <button class="copy-code-btn">کپی</button>
                        <div class="line"></div>
                        <pre class="wp-block-code"><code>// تعریف پایه‌ی متصل به LED
const int ledPin = 13;
int lightLevel = 0; // مقدار فرضی سنسور نور

// -------- تابع setup --------
// این تابع فقط یک‌بار در ابتدای اجرای برنامه فراخوانی می‌شود
void setup() {
  pinMode(ledPin, OUTPUT); // تعیین پایه‌ی LED به‌عنوان خروجی
  Serial.begin(9600);      // آماده‌سازی ارتباط سریال
} // پایان تابع setup - آکولاد بسته اینجا لازم است

// -------- تابع loop --------
// این تابع به‌صورت بی‌نهایت تکرار می‌شود
void loop() {
  lightLevel = analogRead(A0); // خواندن مقدار نور از پایه‌ی آنالوگ

  // ساختار شرطی if/else - هرکدام آکولاد جدا دارند
  if (lightLevel &lt; 300) {
    digitalWrite(ledPin, HIGH); // روشن کردن LED در محیط تاریک
  } else {
    digitalWrite(ledPin, LOW);  // خاموش کردن LED در محیط روشن
  }

  // یک حلقه‌ی for برای چاپ پیام سه‌بار در سریال مانیتور
  for (int i = 0; i &lt; 3; i++) {
    Serial.println("در حال بررسی نور محیط...");
  } // بسته شدن حلقه‌ی for

  delay(500); // نیم‌ثانیه تأخیر قبل از تکرار حلقه‌ی اصلی
} // پایان تابع loop</code></pre>
                        <div class="line"></div>
                    </div><p class="wp-block-paragraph">در این کد می‌بینید که هر ساختار (تابع <code>setup</code>، تابع <code>loop</code>، شرط <code>if/else</code> و حلقه‌ی <code>for</code>) آکولادهای جداگانه‌ی خودش را دارد و هیچ‌کدام از این آکولادها با یکدیگر تداخل ندارند؛ رعایت همین نکته است که کد را خوانا و قابل نگهداری نگه می‌دارد.</p><h3 id="h-نکات-و-هشدارهای-رایج" class="wp-block-heading">نکات و هشدارهای رایج</h3><ul class="wp-block-list"><li><strong>نامتوازن بودن آکولادها</strong> رایج‌ترین خطای مبتدیان است. کافی است یک آکولاد بسته را فراموش کنید تا کامپایلر خطاهایی گنگ و گاه بی‌ربط به محل واقعی مشکل نمایش دهد؛ به همین دلیل پیدا کردن منشأ خطا در برنامه‌های طولانی می‌تواند دشوار باشد.</li>

<li>از آنجا که کاربرد آکولاد بسیار متنوع است و اهمیت زیادی در نحو برنامه دارد، جابه‌جا کردن یک آکولاد حتی به‌اندازه‌ی یک یا دو خط می‌تواند معنای کل برنامه را به‌طور کامل تغییر دهد.</li>

<li>یک عادت خوب برای جلوگیری از فراموش کردن آکولاد بسته، این است که بلافاصله بعد از تایپ آکولاد باز، آکولاد بسته را هم بنویسید و سپس کد داخل آن را اضافه کنید.</li>

<li>از قابلیت هایلایت‌کردن خودکار آکولادهای متناظر در Arduino IDE استفاده کنید؛ این ابزار به سرعت نشان می‌دهد که آیا آکولادها متوازن هستند یا نه.</li>

<li>دقت کنید که آکولاد با پرانتز <code>()</code> و کروشه‌ی معمولی <code>[]</code> اشتباه گرفته نشود؛ هرکدام از این نمادها در آردوینو نقش کاملاً متفاوتی دارند.</li></ul><h3 id="h-کاربردهای-عملی-و-پروژه-های-پیشنهادی" class="wp-block-heading">کاربردهای عملی و پروژه‌های پیشنهادی</h3><p class="wp-block-paragraph">درک درست آکولاد پیش‌نیاز تقریباً تمام پروژه‌های آردوینو است، از جمله:</p><ul class="wp-block-list"><li>ساخت یک سیستم روشنایی خودکار بر اساس نور محیط (با استفاده از <code>if/else</code>)</li>

<li>طراحی یک چراغ‌راهنمای ساده با استفاده از حلقه‌ی <code>for</code> یا <code>while</code></li>

<li>ساخت یک ترموستات ساده که بسته به دمای خوانده‌شده از سنسور، رله را روشن یا خاموش می‌کند</li>

<li>نوشتن توابع اختصاصی (Custom Function) برای تمیزتر کردن کد پروژه‌های بزرگ‌تر، مثل کنترل چند موتور یا چند سنسور</li></ul><h3 id="h-سوالات-متداول" class="wp-block-heading">سوالات متداول</h3><div class="schema-faq wp-block-yoast-faq-block"><div class="schema-faq-section" id="faq-question-1787313282607"><strong class="schema-faq-question"><strong>1. چرا در انتهای برخی کدهای آردوینو چند آکولاد پشت سر هم دیده می‌شود؟</strong></strong> <p class="schema-faq-answer">چون معمولاً چند ساختار تو در تو (مثلاً یک <code>for</code> داخل یک <code>if</code>، داخل یک تابع) وجود دارد و هر کدام باید با آکولاد بسته‌ی مخصوص به خودش تمام شود.</p> </div> <div class="schema-faq-section" id="faq-question-1787313293475"><strong class="schema-faq-question"><strong>2. اگر آکولاد را فراموش کنم چه اتفاقی می‌افتد؟</strong></strong> <p class="schema-faq-answer">کامپایلر آردوینو خطای کامپایل می‌دهد؛ این خطا گاهی دقیقاً محل مشکل را نشان نمی‌دهد و ممکن است در خطوط بعدی کد ظاهر شود، بنابراین پیدا کردنش برای مبتدیان دشوار است.</p> </div> <div class="schema-faq-section" id="faq-question-1787313303533"><strong class="schema-faq-question"><strong>3. آیا بعد از آکولاد بسته باید سِمی‌کالن (<code>;</code>) گذاشت؟</strong></strong> <p class="schema-faq-answer">در بیشتر ساختارها مثل توابع، <code>if</code>، <code>for</code> و <code>while</code> خیر؛ اما در <code>do...while</code> بله، چون خود دستور <code>do...while</code> باید با سِمی‌کالن پایان یابد.</p> </div> <div class="schema-faq-section" id="faq-question-1787313307933"><strong class="schema-faq-question"><strong>4. تفاوت آکولاد با پرانتز در آردوینو چیست؟</strong></strong> <p class="schema-faq-answer">پرانتز <code>()</code> معمولاً برای پارامترهای توابع یا شرط‌های منطقی استفاده می‌شود، در حالی‌ که آکولاد <code>{}</code> برای مشخص کردن بلوک یا محدوده‌ی کد به کار می‌رود.</p> </div> <div class="schema-faq-section" id="faq-question-1787313323869"><strong class="schema-faq-question"><strong>5. چطور می‌توان به‌سرعت آکولاد جفت‌شده را در Arduino IDE پیدا کرد؟</strong></strong> <p class="schema-faq-answer">کافی است روی یک آکولاد کلیک کنید یا نشانگر را بلافاصله بعد از آن قرار دهید؛ IDE به‌طور خودکار آکولاد متناظرش را هایلایت می‌کند.</p> </div> <div class="schema-faq-section" id="faq-question-1787313337173"><strong class="schema-faq-question"><strong>6. آیا می‌توان آکولاد را در جاهای دیگری غیر از توابع و حلقه‌ها هم استفاده کرد؟</strong></strong> <p class="schema-faq-answer">بله، آکولاد در ساختارهایی مثل آرایه‌ها (مثلاً <code>int myArray[] = {1, 2, 3};</code>) نیز کاربرد دارد، هرچند این کاربرد کمی متفاوت از تعریف بلوک کد است.</p> </div> </div><h3 id="h-جمع-بندی" class="wp-block-heading">جمع‌بندی</h3><p class="wp-block-paragraph">آکولاد <code>{}</code> شاید در نگاه اول یک نماد ساده به نظر برسد، اما ستون فقرات ساختار کد در زبان برنامه‌نویسی آردوینو محسوب می‌شود. تسلط بر نحوه‌ی درست استفاده از آن، یکی از اولین و مهم‌ترین گام‌ها در مسیر یادگیری آردوینو و پیشگیری از خطاهای رایج کامپایل است. برای تثبیت این مفهوم پیشنهاد می‌شود چند پروژه‌ی عملی ساده مانند کنترل LED با شرط یا ساخت یک حلقه‌ی تکرارشونده را خودتان بنویسید و آموزش‌های تکمیلی مربوط به ساختار برنامه در آردوینو را دنبال کنید.</p><p class="wp-block-paragraph">اگر درباره آکولاد `{}` در آردوینو چیست؟ آموزش کامل با مثال سوالی دارید یا در پروژه خود با چالش خاصی روبرو شده‌اید، نظر خود را در بخش دیدگاه‌ها بنویسید تا پاسخگوی شما باشیم. همچنین پیشنهاد می‌کنیم این مقاله را با همکاران و علاقه‌مندان به دنیای الکترونیک به اشتراک بگذارید.</p><p class="wp-block-paragraph"></p><p class="wp-block-paragraph"></p><!-- SMART-ILB-BOX-START --><div class="smart-ilb-box smart-ilb-style1" data-smart-ilb="1"><p class="smart-ilb-box-title">مطلب پیشنهادی</p><ul class="smart-ilb-list"><li class="smart-ilb-item" data-smart-ilb-link="672"><a href="https://makingprojec.com/arduino-if-statement/" data-smart-ilb-target="59438" target="_blank">دستور if در آردوینو چیست؟ آموزش کامل با مثال</a></li><li class="smart-ilb-item" data-smart-ilb-link="673"><a href="https://makingprojec.com/arduino-else-statement/" data-smart-ilb-target="59442" target="_blank">دستور else در آردوینو چیست؟ آموزش کامل با مثال</a></li><li class="smart-ilb-item" data-smart-ilb-link="674"><a href="https://makingprojec.com/arduino-loop-function/" data-smart-ilb-target="59386" target="_blank">دستور loop() در آردوینو چیست؟ آموزش کامل با مثال</a></li></ul></div><!-- SMART-ILB-BOX-END -->

<div class="kk-star-ratings kksr-auto kksr-align-center kksr-valign-bottom"
    data-payload='{&quot;align&quot;:&quot;center&quot;,&quot;id&quot;:&quot;59324&quot;,&quot;slug&quot;:&quot;default&quot;,&quot;valign&quot;:&quot;bottom&quot;,&quot;ignore&quot;:&quot;&quot;,&quot;reference&quot;:&quot;auto&quot;,&quot;class&quot;:&quot;&quot;,&quot;count&quot;:&quot;0&quot;,&quot;legendonly&quot;:&quot;&quot;,&quot;readonly&quot;:&quot;&quot;,&quot;score&quot;:&quot;0&quot;,&quot;starsonly&quot;:&quot;&quot;,&quot;best&quot;:&quot;5&quot;,&quot;gap&quot;:&quot;5&quot;,&quot;greet&quot;:&quot;امتیاز دادن به مطلب&quot;,&quot;legend&quot;:&quot;0\/5 - (0 امتیاز)&quot;,&quot;size&quot;:&quot;22&quot;,&quot;title&quot;:&quot;آکولاد `{}` در آردوینو چیست؟ آموزش کامل با مثال&quot;,&quot;width&quot;:&quot;0&quot;,&quot;_legend&quot;:&quot;{score}\/{best} - ({count} {votes})&quot;,&quot;font_factor&quot;:&quot;1.25&quot;}'>
            
<div class="kksr-stars">
    
<div class="kksr-stars-inactive">
            <div class="kksr-star" data-star="1" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" data-star="2" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" data-star="3" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" data-star="4" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" data-star="5" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
    </div>
    
<div class="kksr-stars-active" style="width: 0px;">
            <div class="kksr-star" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
    </div>
</div>
                

<div class="kksr-legend" style="font-size: 17.6px;">
            <span class="kksr-muted">امتیاز دادن به مطلب</span>
    </div>
    </div>
<p>نوشته <a href="https://makingprojec.com/what-is-curly-braces-in-arduino/">آکولاد `{}` در آردوینو چیست؟ آموزش کامل با مثال</a> اولین بار در <a href="https://makingprojec.com">ساخت پروژه الکترونیک</a>. پدیدار شد.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://makingprojec.com/what-is-curly-braces-in-arduino/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>کامنت‌ گذاری `//` و `/* */` در آردوینو چیست؟ آموزش کامل با مثال</title>
		<link>https://makingprojec.com/arduino-comments-single-line-block-comment/</link>
					<comments>https://makingprojec.com/arduino-comments-single-line-block-comment/#respond</comments>
		
		<dc:creator><![CDATA[ساخت پروژه]]></dc:creator>
		<pubDate>Fri, 21 Aug 2026 16:30:40 +0000</pubDate>
				<category><![CDATA[اموزش اردوینو ARDUINO]]></category>
		<category><![CDATA[ساختار برنامه اردوینو Structure]]></category>
		<category><![CDATA[مبانی نحوی]]></category>
		<guid isPermaLink="false">https://makingprojec.com/?p=59284</guid>

					<description><![CDATA[<p>کامنت‌ گذاری `//` و `/* */` در آردوینو چیست؟ آموزش کامل با مثال ، وقتی برای اولین بار یک کد آردوینو باز می‌کنید، معمولاً چند خط با علامت // یا داخل /* */ می‌بینید که رنگ متفاوتی دارند و ظاهراً هیچ کاری انجام نمی‌دهند. این خطوط همان کامنت‌ها (Comments) هستند؛ یکی از ساده‌ترین اما پرکاربردترین بخش‌های برنامه‌نویسی آردوینو. کامنت‌گذاری به شما کمک می‌کند کدی بنویسید که هم برای خودتان در آینده، هم برای هم‌تیمی‌ها یا دیگر علاقه‌مندانی که کد شما را می‌بینند، قابل‌فهم باشد. در این مقاله از سری ...</p>
<p>نوشته <a href="https://makingprojec.com/arduino-comments-single-line-block-comment/">کامنت‌ گذاری `//` و `/* */` در آردوینو چیست؟ آموزش کامل با مثال</a> اولین بار در <a href="https://makingprojec.com">ساخت پروژه الکترونیک</a>. پدیدار شد.</p>
]]></description>
										<content:encoded><![CDATA[<p class="wp-block-paragraph">کامنت‌ گذاری `//` و `/* */` در آردوینو چیست؟ آموزش کامل با مثال ، وقتی برای اولین بار یک کد آردوینو باز می‌کنید، معمولاً چند خط با علامت <code>//</code> یا داخل <code>/* */</code> می‌بینید که رنگ متفاوتی دارند و ظاهراً هیچ کاری انجام نمی‌دهند. این خطوط همان <strong>کامنت‌ها (Comments)</strong> هستند؛ یکی از ساده‌ترین اما پرکاربردترین بخش‌های برنامه‌نویسی آردوینو. کامنت‌گذاری به شما کمک می‌کند کدی بنویسید که هم برای خودتان در آینده، هم برای هم‌تیمی‌ها یا دیگر علاقه‌مندانی که کد شما را می‌بینند، قابل‌فهم باشد. در این مقاله از سری آموزش آردوینو، به‌طور کامل با دو نوع کامنت در زبان برنامه‌نویسی آردوینو آشنا می‌شوید، نحوه‌ی نوشتار هرکدام را یاد می‌گیرید و با مثال‌های عملی کاربردشان را در پروژه‌های واقعی می‌بینید.</p><p class="wp-block-paragraph">کامنت‌ها خطوطی در برنامه هستند که برای اطلاع‌رسانی به خودِ شما یا دیگران درباره‌ی نحوه‌ی عملکرد برنامه استفاده می‌شوند. کامپایلر این خطوط را نادیده می‌گیرد و آن‌ها به میکروکنترلر منتقل نمی‌شوند؛ به همین دلیل هیچ فضایی از حافظه‌ی فلش برد را اشغال نمی‌کنند. تنها هدف کامنت‌ها کمک به فهمیدن یا به‌خاطر آوردن منطق کد است، یا اطلاع‌رسانی به دیگران درباره‌ی طرز کار برنامه.</p><p class="wp-block-paragraph">زبان برنامه‌نویسی آردوینو دو روش برای نوشتن کامنت دارد:</p><ul class="wp-block-list"><li><strong>کامنت تک‌خطی (<code>//</code>)</strong>: هر چیزی که بعد از این دو اسلش در همان خط بیاید، توسط کامپایلر نادیده گرفته می‌شود.</li>

<li><strong>کامنت بلوکی یا چندخطی (<code>/* */</code>)</strong>: هر چیزی که بین علامت شروع <code>/*</code> و علامت پایان <code>*/</code> قرار بگیرد، صرف‌نظر از تعداد خطوطی که اشغال می‌کند، نادیده گرفته می‌شود.</li></ul><p class="wp-block-paragraph">یکی از کاربردهای بسیار عملی کامنت‌ها، «غیرفعال‌سازی موقت» (Commenting out) بخشی از کد است. وقتی در حال آزمایش یا رفع اشکال (Debug) هستید، می‌توانید با تبدیل چند خط کد به کامنت، آن‌ها را بدون حذف واقعی از برنامه کنار بگذارید. این کار به‌ویژه زمانی مفید است که می‌خواهید محل بروز یک خطا را پیدا کنید یا وقتی برنامه کامپایل نمی‌شود و پیام خطای کامپایلر گنگ و نامفهوم است.</p><h3 class="wp-block-heading" id="h-نحوه-ی-نوشتار-syntax">نحوه‌ی نوشتار (Syntax)</h3><h4 class="wp-block-heading" id="h-کامنت-تک-خطی">کامنت تک‌خطی</h4><p class="wp-block-paragraph">arduino</p><div class="code-block">
                        <button class="copy-code-btn">کپی</button>
                        <div class="line"></div>
                        <pre class="wp-block-code"><code>// این یک کامنت تک‌خطی است</code></pre>
                        <div class="line"></div>
                    </div><p class="wp-block-paragraph">هر متنی که بعد از <code>//</code> تا انتهای همان خط نوشته شود، کامنت محسوب می‌شود و کامپایلر آن را اجرا نمی‌کند.</p><h4 class="wp-block-heading" id="h-کامنت-بلوکی-چندخطی">کامنت بلوکی (چندخطی)</h4><p class="wp-block-paragraph">arduino</p><div class="code-block">
                        <button class="copy-code-btn">کپی</button>
                        <div class="line"></div>
                        <pre class="wp-block-code"><code>/*
  این یک کامنت بلوکی است
  و می‌تواند چندین خط را در بر بگیرد
*/</code></pre>
                        <div class="line"></div>
                    </div><p class="wp-block-paragraph">هر متنی بین <code>/*</code> و <code>*/</code> -even اگر چند خط باشد- به‌عنوان کامنت در نظر گرفته می‌شود.</p><p class="wp-block-paragraph"><strong>پارامتر:</strong> این دو ساختار پارامتر ورودی ندارند؛ صرفاً نشانه‌هایی هستند که به کامپایلر می‌گویند بخشی از متن را نادیده بگیرد.</p><p class="wp-block-paragraph"><strong>مقدار بازگشتی:</strong> کامنت‌ها هیچ مقدار بازگشتی ندارند، چون در واقع بخشی از منطق اجرایی برنامه نیستند و صرفاً برای خواننده‌ی انسانی کد نوشته می‌شوند.</p><h3 class="wp-block-heading" id="h-کد-نمونه-ی-کامل">کد نمونه‌ی کامل</h3><p class="wp-block-paragraph">در مثال زیر، یک برنامه‌ی ساده برای چشمک‌زدن LED روی پایه‌ی ۱۳ آورده شده که از هر دو نوع کامنت استفاده می‌کند:</p><p class="wp-block-paragraph">arduino</p><div class="code-block">
                        <button class="copy-code-btn">کپی</button>
                        <div class="line"></div>
                        <pre class="wp-block-code"><code>/*
  پروژه: چشمک‌زدن LED (Blink)
  توضیح: این برنامه LED متصل به پایه‌ی ۱۳ را
  هر یک ثانیه روشن و خاموش می‌کند.
  این یک مثال کلاسیک برای شروع یادگیری آردوینو است.
*/

int ledPin = 13; // شماره پایه‌ای که LED به آن وصل است

void setup() {
  // پایه‌ی ledPin را به‌عنوان خروجی (OUTPUT) تنظیم می‌کنیم
  pinMode(ledPin, OUTPUT);
}

void loop() {
  digitalWrite(ledPin, HIGH); // روشن کردن LED
  delay(1000);                // مکث به مدت ۱۰۰۰ میلی‌ثانیه (۱ ثانیه)

  digitalWrite(ledPin, LOW);  // خاموش کردن LED
  delay(1000);                // مکث به مدت ۱ ثانیه

  /*
    اگر بخواهید سرعت چشمک‌زدن را تغییر دهید
    کافی است مقدار delay را کم یا زیاد کنید.
    مثال: delay(500) برای چشمک‌زدن سریع‌تر
  */
}</code></pre>
                        <div class="line"></div>
                    </div><p class="wp-block-paragraph">در این کد:</p><ul class="wp-block-list"><li>کامنت بلوکی بالای برنامه، توضیح کلی پروژه را ارائه می‌دهد.</li>

<li>کامنت‌های تک‌خطی کنار هر دستور، وظیفه‌ی همان خط را توضیح می‌دهند.</li>

<li>کامنت بلوکی داخل <code>loop()</code> یک نکته‌ی آموزشی اضافه برای توسعه‌ی بعدی کد است.</li></ul><h3 class="wp-block-heading" id="h-نکات-و-هشدارهای-رایج">نکات و هشدارهای رایج</h3><ul class="wp-block-list"><li><strong>تودرتو نکردن کامنت‌های بلوکی:</strong> کامنت‌های <code>/* */</code> را نمی‌توان تودرتو (Nested) نوشت. اگر داخل یک کامنت بلوکی، کامنت بلوکی دیگری باز کنید، کامپایلر با اولین <code>*/</code> که ببیند بلوک را می‌بندد و باقی متن ممکن است به‌صورت کد در نظر گرفته شود و خطای کامپایل ایجاد کند.</li>

<li><strong>فراموش کردن بستن <code>*/</code>:</strong> یکی از رایج‌ترین اشتباهات مبتدیان این است که کامنت بلوکی را باز می‌کنند اما فراموش می‌کنند آن را ببندند. در این حالت، تمام کدهای بعدی تا رسیدن به یک <code>*/</code> دیگر (یا تا پایان فایل) به‌اشتباه به‌عنوان کامنت در نظر گرفته می‌شوند و برنامه اجرا نخواهد شد.</li>

<li><strong>استفاده‌ی بیش‌ازحد یا کم‌ازحد از کامنت:</strong> نوشتن کامنت برای هر خط بدیهی، کد را شلوغ و کم‌خوان می‌کند؛ اما نبود هیچ کامنتی هم باعث می‌شود بعد از مدتی حتی خودتان منطق کد را فراموش کنید. بهترین رویکرد این است که کامنت‌ها «چرایی» تصمیمات را توضیح دهند، نه صرفاً تکرار «چیستی» کد.</li>

<li><strong>کامنت کردن موقت کد برای دیباگ:</strong> اگر بخشی از کد باعث خطا یا رفتار نامنظم می‌شود، می‌توانید آن را موقتاً با <code>//</code> یا <code>/* */</code> غیرفعال کنید تا محل دقیق مشکل را پیدا کنید، بدون این‌که کد را واقعاً حذف کرده باشید.</li></ul><h3 class="wp-block-heading" id="h-کاربردهای-عملی-و-پروژه-های-پیشنهادی">کاربردهای عملی و پروژه‌های پیشنهادی</h3><p class="wp-block-paragraph">کامنت‌گذاری در تمام پروژه‌های آردوینو کاربرد دارد، اما در موارد زیر اهمیت بیشتری پیدا می‌کند:</p><ul class="wp-block-list"><li><strong>پروژه‌های چندحسگره:</strong> مثلاً پروژه‌ای که هم‌زمان از سنسور دما، رطوبت و نور استفاده می‌کند؛ کامنت‌ها کمک می‌کنند بدانید هر بخش از کد مربوط به کدام سنسور است.</li>

<li><strong>مستندسازی پروژه:</strong> نوشتن یک کامنت بلوکی در ابتدای فایل که شامل نام پروژه، توضیح کوتاه، نام قطعات مورد نیاز و تاریخ آخرین ویرایش باشد.</li>

<li><strong>رفع اشکال (Debugging):</strong> غیرفعال کردن موقت بخشی از کد با کامنت، برای پیدا کردن منبع خطا بدون حذف دائمی آن قسمت.</li>

<li><strong>کار تیمی روی یک پروژه:</strong> وقتی چند نفر روی یک کد کار می‌کنند، کامنت‌های واضح باعث می‌شود سایر اعضای تیم سریع‌تر بفهمند هر بخش از کد چه کاری انجام می‌دهد.</li></ul><h3 class="wp-block-heading" id="h-سوالات-متداول">سوالات متداول</h3><div class="schema-faq wp-block-yoast-faq-block"><div class="schema-faq-section" id="faq-question-1787312465611"><strong class="schema-faq-question"><strong>1. آیا کامنت‌ها روی حجم برنامه یا حافظه‌ی آردوینو تأثیر می‌گذارند؟</strong></strong> <p class="schema-faq-answer">خیر. کامنت‌ها توسط کامپایلر نادیده گرفته می‌شوند و به میکروکنترلر منتقل نمی‌شوند، بنابراین هیچ فضایی از حافظه‌ی فلش برد را اشغال نمی‌کنند.</p> </div> <div class="schema-faq-section" id="faq-question-1787312474973"><strong class="schema-faq-question"><strong>2. تفاوت اصلی بین <code>//</code> و <code>/* */</code> چیست؟</strong></strong> <p class="schema-faq-answer"><code>//</code> فقط تا انتهای همان خط را کامنت می‌کند، در حالی که <code>/* */</code> می‌تواند چندین خط را در بر بگیرد و برای توضیحات طولانی‌تر یا غیرفعال کردن بخش بزرگی از کد مناسب‌تر است.</p> </div> <div class="schema-faq-section" id="faq-question-1787312484140"><strong class="schema-faq-question"><strong>3. آیا می‌توان کد را داخل کامنت بلوکی «کامنت کرد»؟</strong></strong> <p class="schema-faq-answer">بله، این یکی از کاربردهای رایج <code>/* */</code> است؛ اما دقت کنید که کامنت‌های بلوکی تودرتو پشتیبانی نمی‌شوند و ممکن است باعث خطای کامپایل شوند.</p> </div> <div class="schema-faq-section" id="faq-question-1787312493467"><strong class="schema-faq-question"><strong>4. آیا فراموش کردن <code>*/</code> باعث خطا می‌شود؟</strong></strong> <p class="schema-faq-answer">بله، اگر کامنت بلوکی را ببندید فراموش کنید، کامپایلر تمام خطوط بعدی را تا رسیدن به یک <code>*/</code> بعدی (یا پایان فایل) به‌عنوان کامنت در نظر می‌گیرد و کدهای واقعی اجرا نخواهند شد؛ این یکی از رایج‌ترین منابع خطای مبهم در برنامه‌نویسی آردوینو برای مبتدیان است.</p> </div> <div class="schema-faq-section" id="faq-question-1787312503786"><strong class="schema-faq-question"><strong>5. آیا زبان‌های فارسی در کامنت‌ها مشکلی ایجاد می‌کند؟</strong></strong> <p class="schema-faq-answer">معمولاً خیر، چون کامنت‌ها اجرا نمی‌شوند و صرفاً برای انسان خوانده می‌شوند. با این حال بهتر است فایل کد را با انکودینگ UTF-8 ذخیره کنید تا حروف فارسی به‌درستی نمایش داده شوند.</p> </div> <div class="schema-faq-section" id="faq-question-1787312515548"><strong class="schema-faq-question"><strong>6. آیا نوشتن کامنت اجباری است؟</strong></strong> <p class="schema-faq-answer">از نظر کامپایلر، خیر؛ برنامه بدون کامنت هم اجرا می‌شود. اما از نظر خوانایی و نگهداری کد در آینده، کامنت‌نویسی به‌شدت توصیه می‌شود، به‌خصوص در پروژه‌های بزرگ‌تر یا کارهای تیمی.</p> </div> </div><h3 class="wp-block-heading" id="h-جمع-بندی">جمع‌بندی</h3><p class="wp-block-paragraph">کامنت‌گذاری، هرچند در نگاه اول ساده به نظر می‌رسد، یکی از پایه‌ای‌ترین مهارت‌ها در نوشتن کد تمیز و قابل‌نگهداری در آردوینو است. استفاده‌ی درست از <code>//</code> برای توضیحات کوتاه و <code>/* */</code> برای توضیحات بلندتر یا کامنت‌کردن موقت بخش‌هایی از کد، مسیر یادگیری برنامه‌نویسی آردوینو را برای شما و دیگرانی که کد شما را می‌خوانند بسیار روان‌تر می‌کند. اگر تازه شروع به یادگیری آردوینو کرده‌اید، پیشنهاد می‌شود در کنار این آموزش، به بخش‌های دیگر مستندات ساختار زبان آردوینو مانند توابع <code>setup()</code> و <code>loop()</code> نیز نگاهی بیندازید تا درک کامل‌تری از ساختار کلی یک اسکچ آردوینو پیدا کنید.</p><p class="wp-block-paragraph">اگر درباره کامنت‌ گذاری `//` و `/* */` در آردوینو چیست؟ آموزش کامل با مثال ، سوالی دارید یا در پروژه خود با چالش خاصی روبرو شده‌اید، نظر خود را در بخش دیدگاه‌ها بنویسید تا پاسخگوی شما باشیم. همچنین پیشنهاد می‌کنیم این مقاله را با همکاران و علاقه‌مندان به دنیای الکترونیک به اشتراک بگذارید.</p><p class="wp-block-paragraph"></p><!-- SMART-ILB-BOX-START --><div class="smart-ilb-box smart-ilb-style1" data-smart-ilb="1"><p class="smart-ilb-box-title">مطلب پیشنهادی</p><ul class="smart-ilb-list"><li class="smart-ilb-item" data-smart-ilb-link="669"><a href="https://makingprojec.com/arduino-if-statement/" data-smart-ilb-target="59438" target="_blank">دستور if در آردوینو چیست؟ آموزش کامل با مثال</a></li><li class="smart-ilb-item" data-smart-ilb-link="670"><a href="https://makingprojec.com/what-is-curly-braces-in-arduino/" data-smart-ilb-target="59324" target="_blank">آکولاد `{}` در آردوینو چیست؟ آموزش کامل با مثال</a></li><li class="smart-ilb-item" data-smart-ilb-link="671"><a href="https://makingprojec.com/arduino-loop-function/" data-smart-ilb-target="59386" target="_blank">دستور loop() در آردوینو چیست؟ آموزش کامل با مثال</a></li></ul></div><!-- SMART-ILB-BOX-END -->

<div class="kk-star-ratings kksr-auto kksr-align-center kksr-valign-bottom"
    data-payload='{&quot;align&quot;:&quot;center&quot;,&quot;id&quot;:&quot;59284&quot;,&quot;slug&quot;:&quot;default&quot;,&quot;valign&quot;:&quot;bottom&quot;,&quot;ignore&quot;:&quot;&quot;,&quot;reference&quot;:&quot;auto&quot;,&quot;class&quot;:&quot;&quot;,&quot;count&quot;:&quot;0&quot;,&quot;legendonly&quot;:&quot;&quot;,&quot;readonly&quot;:&quot;&quot;,&quot;score&quot;:&quot;0&quot;,&quot;starsonly&quot;:&quot;&quot;,&quot;best&quot;:&quot;5&quot;,&quot;gap&quot;:&quot;5&quot;,&quot;greet&quot;:&quot;امتیاز دادن به مطلب&quot;,&quot;legend&quot;:&quot;0\/5 - (0 امتیاز)&quot;,&quot;size&quot;:&quot;22&quot;,&quot;title&quot;:&quot;کامنت‌ گذاری `\/\/` و `\/* *\/` در آردوینو چیست؟ آموزش کامل با مثال&quot;,&quot;width&quot;:&quot;0&quot;,&quot;_legend&quot;:&quot;{score}\/{best} - ({count} {votes})&quot;,&quot;font_factor&quot;:&quot;1.25&quot;}'>
            
<div class="kksr-stars">
    
<div class="kksr-stars-inactive">
            <div class="kksr-star" data-star="1" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" data-star="2" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" data-star="3" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" data-star="4" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" data-star="5" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
    </div>
    
<div class="kksr-stars-active" style="width: 0px;">
            <div class="kksr-star" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
    </div>
</div>
                

<div class="kksr-legend" style="font-size: 17.6px;">
            <span class="kksr-muted">امتیاز دادن به مطلب</span>
    </div>
    </div>
<p>نوشته <a href="https://makingprojec.com/arduino-comments-single-line-block-comment/">کامنت‌ گذاری `//` و `/* */` در آردوینو چیست؟ آموزش کامل با مثال</a> اولین بار در <a href="https://makingprojec.com">ساخت پروژه الکترونیک</a>. پدیدار شد.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://makingprojec.com/arduino-comments-single-line-block-comment/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>آموزش ساخت پروژه ترموستات با آردوینو Arduino مدار و کد کنترل دما</title>
		<link>https://makingprojec.com/arduino-thermostat-dht22/</link>
					<comments>https://makingprojec.com/arduino-thermostat-dht22/#respond</comments>
		
		<dc:creator><![CDATA[ساخت پروژه]]></dc:creator>
		<pubDate>Fri, 21 Aug 2026 12:47:54 +0000</pubDate>
				<category><![CDATA[اموزش اردوینو ARDUINO]]></category>
		<category><![CDATA[وبلاگ اموزش الکترونیک]]></category>
		<guid isPermaLink="false">https://makingprojec.com/?p=59187</guid>

					<description><![CDATA[<p>آموزش ساخت پروژه ترموستات با آردوینو Arduino مدار و کد کنترل دما ، اگر تا حالا وسط زمستان از سرمای اتاق کلافه شده باشید یا تابستان با دیدن قبض برق دستتان رفته باشد روی قلبتان، احتمالاً به این فکر افتاده‌اید که کاش می‌شد دمای خانه را هوشمندتر و دقیق‌تر کنترل کرد. خبر خوب این است که ساخت یک ترموستات هوشمند با آردوینو نه‌تنها ممکن است، بلکه با یک بودجه نسبتاً محدود و کمی حوصله، می‌توانید سیستمی بسازید که از خیلی از محصولات تجاری بازار هم کاربردی‌تر باشد؛ چون دقیقاً مطابق نیاز خودتان طراحی ...</p>
<p>نوشته <a href="https://makingprojec.com/arduino-thermostat-dht22/">آموزش ساخت پروژه ترموستات با آردوینو Arduino مدار و کد کنترل دما</a> اولین بار در <a href="https://makingprojec.com">ساخت پروژه الکترونیک</a>. پدیدار شد.</p>
]]></description>
										<content:encoded><![CDATA[<p class="wp-block-paragraph">آموزش ساخت پروژه ترموستات با آردوینو Arduino مدار و کد کنترل دما ، اگر تا حالا وسط زمستان از سرمای اتاق کلافه شده باشید یا تابستان با دیدن قبض برق دستتان رفته باشد روی قلبتان، احتمالاً به این فکر افتاده‌اید که کاش می‌شد دمای خانه را هوشمندتر و دقیق‌تر کنترل کرد. خبر خوب این است که ساخت یک <strong>ترموستات هوشمند با آردوینو</strong> نه‌تنها ممکن است، بلکه با یک بودجه نسبتاً محدود و کمی حوصله، می‌توانید سیستمی بسازید که از خیلی از محصولات تجاری بازار هم کاربردی‌تر باشد؛ چون دقیقاً مطابق نیاز خودتان طراحی می‌شود.</p><p class="wp-block-paragraph">من در این مقاله قصد دارم قدم‌به‌قدم، از انتخاب قطعات تا نوشتن کد و رفع اشکالات رایج، شما را همراهی کنم. سعی می‌کنم علاوه بر «چطور»، به «چرا»ی هر تصمیم هم بپردازم، چون تجربه نشان داده وقتی منطق پشت یک مدار را بفهمید، خیلی راحت‌تر می‌توانید آن را برای نیازهای خودتان تغییر بدهید.</p><h2 class="wp-block-heading" id="h-ترموستات-هوشمند-چیست-و-چرا-ساختنش-با-آردوینو-منطقی-است">ترموستات هوشمند چیست و چرا ساختنش با آردوینو منطقی است؟</h2><p class="wp-block-paragraph">ترموستات در ساده‌ترین تعریف، دستگاهی است که دمای یک محیط را اندازه می‌گیرد و بر اساس آن، تجهیزات گرمایشی یا سرمایشی را روشن یا خاموش می‌کند. ترموستات‌های سنتی معمولاً یک آستانه ثابت دارند و کار پیچیده‌ای انجام نمی‌دهند. اما وقتی پای «هوشمند» بودن به میان می‌آید، موضوع فرق می‌کند: امکاناتی مثل زمان‌بندی، کنترل از راه دور، ثبت تاریخچه دما، و حتی یادگیری الگوی رفتاری ساکنان خانه اضافه می‌شود.</p><p class="wp-block-paragraph">آردوینو برای این کار گزینه بسیار مناسبی است، به چند دلیل ساده:</p><ul class="wp-block-list"><li><strong>قیمت پایین</strong>: کل پروژه معمولاً چند برابر ارزان‌تر از خرید یک ترموستات هوشمند برند معتبر تمام می‌شود.</li>

<li><strong>انعطاف‌پذیری بالا</strong>: می‌توانید دقیقاً همان منطقی که می‌خواهید را پیاده کنید، نه چیزی که سازنده تصمیم گرفته.</li>

<li><strong>جامعه کاربری بزرگ</strong>: هر مشکلی که در مسیر پیش بیاید، احتمالاً قبلاً کسی حلش کرده و در انجمن‌های آردوینو یا در مستندات رسمی Arduino به آن پرداخته شده.</li>

<li><strong>قابلیت توسعه</strong>: می‌توانید بعداً سنسور رطوبت، ماژول وای‌فای، یا حتی هوش مصنوعی ساده برای پیش‌بینی الگوی مصرف اضافه کنید.</li></ul><h2 class="wp-block-heading" id="h-قطعات-مورد-نیاز-برای-ساخت-پروژه">قطعات مورد نیاز برای ساخت پروژه</h2><p class="wp-block-paragraph">قبل از هر چیز بیایید فهرست خرید را مرور کنیم. من سعی کرده‌ام قطعاتی را معرفی کنم که هم در دسترس هستند و هم قیمت معقولی دارند.</p><figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>قطعه</th><th>کاربرد</th><th>نکته انتخاب</th></tr></thead><tbody><tr><td>برد آردوینو (Uno یا Nano)</td><td>مغز متفکر سیستم</td><td>Uno برای شروع ساده‌تر و مقاوم‌تر است</td></tr><tr><td>سنسور دما DHT22 یا DS18B20</td><td>اندازه‌گیری دما (و رطوبت در DHT22)</td><td>DS18B20 برای دقت بالا و کابل بلند مناسب‌تر است</td></tr><tr><td>ماژول رله دو یا چهار کاناله</td><td>کنترل دستگاه گرمایشی/سرمایشی</td><td>حتماً رله دارای اپتوکوپلر انتخاب کنید</td></tr><tr><td>نمایشگر LCD 16&#215;2 با ماژول I2C</td><td>نمایش دما و وضعیت سیستم</td><td>ماژول I2C سیم‌کشی را بسیار ساده می‌کند</td></tr><tr><td>پتانسیومتر یا دکمه‌های فشاری</td><td>تنظیم دمای هدف</td><td>دکمه‌ها برای رابط کاربری دقیق‌تر بهترند</td></tr><tr><td>منبع تغذیه ۵ ولت</td><td>تغذیه برد و مدار</td><td>ترجیحاً آداپتور جداگانه برای رله</td></tr><tr><td>بردبورد و سیم‌های رابط</td><td>اتصال اولیه قبل از لحیم‌کاری</td><td>برای پروتوتایپ ضروری است</td></tr></tbody></table></figure><p class="wp-block-paragraph">نکته‌ای که خیلی‌ها در شروع کار نادیده می‌گیرند این است که رله‌ای که برای کنترل دستگاه گرمایشی یا کولر استفاده می‌شود، باید توان کافی برای تحمل جریان آن دستگاه را داشته باشد. اگر مطمئن نیستید، همیشه یک مارجین امنیتی در نظر بگیرید و از رله‌ای با ظرفیت بالاتر از نیاز واقعی استفاده کنید.</p><h2 class="wp-block-heading" id="h-طراحی-مداری-چطور-همه-قطعات-را-به-هم-وصل-کنیم">طراحی مداری: چطور همه قطعات را به هم وصل کنیم</h2><p class="wp-block-paragraph">اتصال سنسور دما DS18B20 به آردوینو نیازمند یک مقاومت pull-up حدود ۴.۷ کیلو‌اهم بین پایه داده و ولتاژ مثبت است. این مقاومت کمک می‌کند سیگنال دیجیتال به‌درستی خوانده شود و از نویز جلوگیری می‌کند.</p><p class="wp-block-paragraph">برای ماژول رله، سه سیم اصلی نیاز دارید: تغذیه، زمین، و پایه سیگنال که به یکی از پین‌های دیجیتال آردوینو وصل می‌شود. اینجا یک نکته امنیتی مهم است که نباید از آن گذشت: <strong>هرگز مستقیماً به سیم‌کشی برق شهری دست نزنید مگر اینکه دانش کافی درباره ایمنی برق داشته باشید</strong>. اگر قرار است رله را به دستگاه گرمایشی یا کولر با ولتاژ برق شهری وصل کنید، بهتر است از یک برقکار مطمئن کمک بگیرید یا حداقل مطمئن شوید بخش پرقدرت مدار کاملاً ایزوله و پوشیده شده است.</p><p class="wp-block-paragraph">نمایشگر LCD با ماژول I2C فقط به چهار سیم نیاز دارد: VCC، GND، SDA و SCL. این یکی از بهترین تصمیماتی است که می‌توانید بگیرید، چون سیم‌کشی مستقیم LCD بدون I2C حداقل ۱۰ پین آردوینو را اشغال می‌کند که برای این پروژه اصلاً به‌صرفه نیست.</p><h2 class="wp-block-heading" id="h-نوشتن-کد-منطق-اصلی-ترموستات">نوشتن کد: منطق اصلی ترموستات</h2><p class="wp-block-paragraph">هسته اصلی کار، نوشتن کدی است که دما را می‌خواند، آن را با دمای هدف مقایسه می‌کند و بر اساس نتیجه، رله را کنترل می‌کند. در ادامه یک نسخه پایه اما کاربردی از این کد را می‌بینید:</p><div class="code-block">
                        <button class="copy-code-btn">کپی</button>
                        <div class="line"></div>
                        <pre class="wp-block-code"><code>#include &lt;OneWire.h&gt;
#include &lt;DallasTemperature.h&gt;
#include &lt;LiquidCrystal_I2C.h&gt;

#define ONE_WIRE_BUS 2
#define RELAY_HEAT 7
#define RELAY_COOL 8

OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&amp;oneWire);
LiquidCrystal_I2C lcd(0x27, 16, 2);

float targetTemp = 24.0;
float hysteresis = 0.5;

void setup() {
  sensors.begin();
  lcd.init();
  lcd.backlight();
  pinMode(RELAY_HEAT, OUTPUT);
  pinMode(RELAY_COOL, OUTPUT);
  digitalWrite(RELAY_HEAT, LOW);
  digitalWrite(RELAY_COOL, LOW);
}

void loop() {
  sensors.requestTemperatures();
  float currentTemp = sensors.getTempCByIndex(0);

  lcd.setCursor(0, 0);
  lcd.print("Now: ");
  lcd.print(currentTemp);
  lcd.print(" C");

  lcd.setCursor(0, 1);
  lcd.print("Target: ");
  lcd.print(targetTemp);

  if (currentTemp &lt; targetTemp - hysteresis) {
    digitalWrite(RELAY_HEAT, HIGH);
    digitalWrite(RELAY_COOL, LOW);
  } else if (currentTemp &gt; targetTemp + hysteresis) {
    digitalWrite(RELAY_COOL, HIGH);
    digitalWrite(RELAY_HEAT, LOW);
  } else {
    digitalWrite(RELAY_HEAT, LOW);
    digitalWrite(RELAY_COOL, LOW);
  }

  delay(2000);
}
</code></pre>
                        <div class="line"></div>
                    </div><p class="wp-block-paragraph">نکته کلیدی در این کد، مفهوم <strong>هیسترزیس</strong> (hysteresis) است. شاید بپرسید چرا به‌جای یک آستانه ساده، از یک بازه استفاده کرده‌ایم؟ دلیلش این است که اگر دمای هدف را دقیقاً برابر یک عدد ثابت در نظر بگیرید، رله ممکن است در نوسانات کوچک دما مدام روشن و خاموش شود؛ پدیده‌ای که در مهندسی کنترل به آن «چترینگ» (chattering) می‌گویند و می‌تواند به مرور عمر رله و کمپرسور کولر یا موتور بخاری را کاهش دهد. با تعریف یک بازه کوچک بالا و پایین دمای هدف، از این نوسانات مکرر جلوگیری می‌کنیم.</p><h2 class="wp-block-heading" id="h-اضافه-کردن-قابلیت-های-هوشمند-از-کنترل-دستی-تا-اتصال-به-اینترنت">اضافه کردن قابلیت‌های هوشمند: از کنترل دستی تا اتصال به اینترنت</h2><p class="wp-block-paragraph">بعد از این‌که نسخه پایه کار کرد، وقت آن رسیده که قدم بعدی را برداریم. چند ایده که به نظرم واقعاً ارزش پیاده‌سازی دارند:</p><p class="wp-block-paragraph"><strong>۱. افزودن دکمه‌های تنظیم دما</strong> با دو دکمه ساده می‌توانید امکان افزایش و کاهش دمای هدف را به کاربر بدهید، بدون این‌که نیاز به برنامه‌نویسی مجدد باشد.</p><p class="wp-block-paragraph"><strong>۲. ثبت داده و نمایش نمودار</strong> با اضافه کردن یک ماژول کارت حافظه SD، می‌توانید داده‌های دما را در طول زمان ذخیره کنید و بعداً الگوهای مصرف انرژی خانه را تحلیل کنید. این کار به شما کمک می‌کند بفهمید مثلاً چه ساعاتی از شبانه‌روز بیشترین افت دما رخ می‌دهد.</p><p class="wp-block-paragraph"><strong>۳. اتصال به وای‌فای با ماژول ESP8266 یا ESP32</strong> اگر می‌خواهید سیستم را از راه دور کنترل کنید یا با گوشی همراه ارتباط برقرار کنید، جایگزین کردن آردوینو با یک برد ESP32 گزینه هوشمندانه‌تری است، چون هم وای‌فای داخلی دارد و هم قدرت پردازشی بیشتری برای اجرای وب‌سرور کوچک.</p><p class="wp-block-paragraph"><strong>۴. زمان‌بندی هفتگی</strong> با افزودن یک ماژول ساعت واقعی (RTC) مثل DS3231، می‌توانید برنامه‌های زمانی مختلف برای روزهای هفته یا ساعات مختلف روز تعریف کنید؛ مثلاً کاهش خودکار دما در ساعات کاری که کسی خانه نیست.</p><h2 class="wp-block-heading" id="h-چالش-ها-و-اشتباهات-رایجی-که-بهتر-است-از-قبل-بدانید">چالش‌ها و اشتباهات رایجی که بهتر است از قبل بدانید</h2><p class="wp-block-paragraph">در تجربه شخصی و در بررسی پروژه‌های مشابه، چند مشکل تکرارشونده وجود دارد که بهتر است از قبل به آن‌ها توجه کنید:</p><ul class="wp-block-list"><li><strong>نویز در خواندن سنسور</strong>: اگر کابل سنسور طولانی است، ممکن است داده‌های نادرست بخوانید. استفاده از کابل شیلددار یا کوتاه‌تر کردن مسیر می‌تواند کمک کند.</li>

<li><strong>گرم شدن بیش از حد ماژول رله</strong>: اگر رله مدام در حال قطع و وصل باشد (به‌خصوص بدون هیسترزیس مناسب)، ممکن است دمای ماژول بالا برود. تهویه مناسب محل نصب را فراموش نکنید.</li>

<li><strong>از دست رفتن تنظیمات بعد از قطع برق</strong>: اگر دمای هدف را در حافظه EEPROM ذخیره نکنید، با هر قطعی برق به تنظیمات پیش‌فرض بازمی‌گردد. استفاده از کتابخانه EEPROM.h برای ذخیره دائمی این مقدار توصیه می‌شود.</li>

<li><strong>ایمنی برق</strong>: همان‌طور که قبل‌تر اشاره شد، بخش قدرت مدار همیشه باید کاملاً ایزوله و دور از دسترس باشد.</li></ul><h2 class="wp-block-heading" id="h-مقایسه-با-محصولات-تجاری-آیا-واقعا-ارزشش-را-دارد">مقایسه با محصولات تجاری: آیا واقعاً ارزشش را دارد؟</h2><p class="wp-block-paragraph">خیلی‌ها می‌پرسند چرا باید خودمان دست‌به‌کار شویم وقتی ترموستات‌های هوشمند آماده مثل Nest یا Ecobee در بازار وجود دارند؟ پاسخ من این است که بستگی به هدف شما دارد. اگر فقط دنبال یک راه‌حل سریع و بدون دردسر هستید، محصولات تجاری بی‌شک راحت‌تر هستند. اما اگر:</p><ul class="wp-block-list"><li>می‌خواهید سیستم را دقیقاً مطابق چیدمان خانه خودتان سفارشی کنید،</li>

<li>علاقه به یادگیری الکترونیک و برنامه‌نویسی دارید،</li>

<li>یا صرفاً می‌خواهید هزینه کمتری بپردازید،</li></ul><p class="wp-block-paragraph">ساخت ترموستات با آردوینو انتخاب بهتری است. علاوه بر این، کنترل کامل روی داده‌های خودتان دارید و نیازی نیست اطلاعات دمای خانه‌تان را به سرورهای یک شرکت خارجی ارسال کنید؛ نکته‌ای که برای خیلی از کاربران حساس به حریم خصوصی اهمیت دارد.</p><h2 class="wp-block-heading" id="h-سوالات-متداول">سوالات متداول</h2><div class="schema-faq wp-block-yoast-faq-block"><div class="schema-faq-section" id="faq-question-1787050655231"><strong class="schema-faq-question"><strong>آیا برای این پروژه نیاز به دانش برنامه‌نویسی پیشرفته دارم؟</strong></strong> <p class="schema-faq-answer">نه. کدهای پایه این پروژه نسبتاً ساده هستند و اگر با مفاهیم اولیه آردوینو مثل pinMode و digitalWrite آشنا باشید، به‌راحتی می‌توانید شروع کنید. کتابخانه‌های آماده هم بخش زیادی از پیچیدگی را از دوش شما برمی‌دارند.</p> </div> <div class="schema-faq-section" id="faq-question-1787050669178"><strong class="schema-faq-question"><strong>کدام سنسور دما برای این پروژه بهتر است؟</strong></strong> <p class="schema-faq-answer">اگر فقط دما مهم است، DS18B20 به‌خاطر دقت بالا و مقاومت در برابر نویز گزینه خوبی است. اگر رطوبت هوا هم برایتان اهمیت دارد (مثلاً برای کنترل رطوبت‌ساز)، DHT22 انتخاب بهتری خواهد بود.</p> </div> <div class="schema-faq-section" id="faq-question-1787050678041"><strong class="schema-faq-question"><strong>آیا می‌توان این سیستم را با گوشی موبایل کنترل کرد؟</strong></strong> <p class="schema-faq-answer">بله، با اضافه کردن ماژول وای‌فای مثل ESP8266 یا استفاده از برد ESP32 به‌جای آردوینو معمولی، می‌توانید یک اپلیکیشن ساده یا صفحه وب برای کنترل از راه دور بسازید.</p> </div> <div class="schema-faq-section" id="faq-question-1787050686539"><strong class="schema-faq-question"><strong>آیا این پروژه برای دستگاه‌های گازی هم قابل استفاده است؟</strong></strong> <p class="schema-faq-answer">در بیشتر موارد، ترموستات فقط سیگنال روشن/خاموش به سیستم گرمایشی می‌فرستد، پس در تئوری قابل اتصال به بسیاری از سیستم‌ها هست؛ اما برای دستگاه‌های گازی حتماً باید از استانداردهای ایمنی مربوطه و در صورت نیاز مشورت با متخصص تاسیسات استفاده کنید.</p> </div> </div><h2 class="wp-block-heading" id="h-جمع-بندی">جمع‌بندی</h2><p class="wp-block-paragraph">ساخت یک ترموستات هوشمند با آردوینو یکی از آن پروژه‌هایی است که هم آموزنده است و هم واقعاً کاربردی. از یادگیری مفاهیم پایه الکترونیک و برنامه‌نویسی گرفته تا داشتن سیستمی که دقیقاً مطابق سلیقه و نیاز شماست، این پروژه ارزش وقت گذاشتن را دارد. پیشنهاد من این است که از نسخه ساده شروع کنید، مطمئن شوید مدار پایه به‌درستی کار می‌کند، و بعد قدم‌به‌قدم قابلیت‌های پیشرفته‌تر مثل اتصال اینترنتی یا زمان‌بندی هوشمند را اضافه کنید.</p><p class="wp-block-paragraph">اگر درباره آموزش ساخت پروژه ترموستات با آردوینو Arduino مدار و کد کنترل دما ، سوالی دارید یا در پروژه خود با چالش خاصی روبرو شده‌اید، نظر خود را در بخش دیدگاه‌ها بنویسید تا پاسخگوی شما باشیم. همچنین پیشنهاد می‌کنیم این مقاله را با همکاران و علاقه‌مندان به دنیای الکترونیک به اشتراک بگذارید.</p><p class="wp-block-paragraph"></p><!-- SMART-ILB-BOX-START --><div class="smart-ilb-box smart-ilb-style1" data-smart-ilb="1"><p class="smart-ilb-box-title">مطلب پیشنهادی</p><ul class="smart-ilb-list"><li class="smart-ilb-item" data-smart-ilb-link="666"><a href="https://makingprojec.com/teaching-how-to-make-a-robot-with-arduino-and-ultrasonic-sensor/" data-smart-ilb-target="36786" target="_blank">آموزش ساخت ربات با آردوینو Arduino و سنسور اولتراسونیک</a></li><li class="smart-ilb-item" data-smart-ilb-link="667"><a href="https://makingprojec.com/how-to-make-a-data-logger-with-arduino-record-temperature-humidity-and-light-on-an-sd-card/" data-smart-ilb-target="43467" target="_blank">آموزش ساخت دیتالاگر با آردوینو ثبت دما رطوبت و نور روی کارت SD</a></li><li class="smart-ilb-item" data-smart-ilb-link="668"><a href="https://makingprojec.com/teaching-how-to-make-rtc-module-digital-clock-with-arduino-and-lcd-display/" data-smart-ilb-target="39248" target="_blank">آموزش ساخت ساعت دیجیتال ماژول RTC با اردوینو Arduino و نمایشگر LCD</a></li><li class="smart-ilb-item" data-smart-ilb-link="855"><a href="https://makingprojec.com/arduino-millis-tutorial/" data-smart-ilb-target="58787" target="_blank">آموزش کامل تابع millis در آردوینو ؛ خداحافظی با delay و کدنویسی هم‌زمان</a></li></ul></div><!-- SMART-ILB-BOX-END -->

<div class="kk-star-ratings kksr-auto kksr-align-center kksr-valign-bottom"
    data-payload='{&quot;align&quot;:&quot;center&quot;,&quot;id&quot;:&quot;59187&quot;,&quot;slug&quot;:&quot;default&quot;,&quot;valign&quot;:&quot;bottom&quot;,&quot;ignore&quot;:&quot;&quot;,&quot;reference&quot;:&quot;auto&quot;,&quot;class&quot;:&quot;&quot;,&quot;count&quot;:&quot;1&quot;,&quot;legendonly&quot;:&quot;&quot;,&quot;readonly&quot;:&quot;&quot;,&quot;score&quot;:&quot;5&quot;,&quot;starsonly&quot;:&quot;&quot;,&quot;best&quot;:&quot;5&quot;,&quot;gap&quot;:&quot;5&quot;,&quot;greet&quot;:&quot;امتیاز دادن به مطلب&quot;,&quot;legend&quot;:&quot;5\/5 - (1 امتیاز)&quot;,&quot;size&quot;:&quot;22&quot;,&quot;title&quot;:&quot;آموزش ساخت پروژه ترموستات با آردوینو Arduino مدار و کد کنترل دما&quot;,&quot;width&quot;:&quot;132.5&quot;,&quot;_legend&quot;:&quot;{score}\/{best} - ({count} {votes})&quot;,&quot;font_factor&quot;:&quot;1.25&quot;}'>
            
<div class="kksr-stars">
    
<div class="kksr-stars-inactive">
            <div class="kksr-star" data-star="1" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" data-star="2" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" data-star="3" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" data-star="4" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" data-star="5" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
    </div>
    
<div class="kksr-stars-active" style="width: 132.5px;">
            <div class="kksr-star" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
            <div class="kksr-star" style="padding-left: 5px">
            

<div class="kksr-icon" style="width: 22px; height: 22px;"></div>
        </div>
    </div>
</div>
                

<div class="kksr-legend" style="font-size: 17.6px;">
            5/5 - (1 امتیاز)    </div>
    </div>
<p>نوشته <a href="https://makingprojec.com/arduino-thermostat-dht22/">آموزش ساخت پروژه ترموستات با آردوینو Arduino مدار و کد کنترل دما</a> اولین بار در <a href="https://makingprojec.com">ساخت پروژه الکترونیک</a>. پدیدار شد.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://makingprojec.com/arduino-thermostat-dht22/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
