نخستین برنامه — چشمکزن
اولین اسکچ آردوینو را مینویسید؛ با setup و loop، خروجی دیجیتال و توابع pinMode و digitalWrite و delay، LED داخلی برد را چشمکزن میکنید.
آنچه در این درس میآموزید
- ساختار اسکچ و چرخهٔ اجرای setup و loop را توضیح دهید
- خروجی دیجیتال و مفهوم HIGH و LOW را بشناسید
- اسکچ Blink را کامپایل و آپلود کنید و نتیجهٔ فیزیکی آن را ببینید
- زمان چشمکزن را با تغییر کد تنظیم کنید
فهرست مطالب
به اولین خط کدِ سختافزار رسیدید. در این درس برنامهای مینویسید که LED کوچک روی خود برد را هر ثانیه یک بار روشن و خاموش کند؛ همان «چشمکزن» (Blink) که «سلام دنیا» دنیای آردوینو است. نه سیم لازم است، نه قطعه — فقط برد وصلشده به رایانه و IDE نصبشده از درس قبل.
اسکچ چیست و چطور اجرا میشود؟
به برنامهٔ آردوینو «اسکچ» (Sketch) میگویند؛ فایلی با پسوند .ino. هر اسکچ دو تابع اجباری دارد:
setup()— درست پس از روشنشدن یا ریست برد، فقط یک بار اجرا میشود؛ جایی برای تنظیمات اولیه.loop()— بلافاصله بعد ازsetup()شروع میشود و بینهایت بار پشتسرهم اجرا میشود؛ بدنهٔ اصلی برنامه.
یعنی آردوینو هیچوقت «میایستد»: یک بار آماده میشود و بعد یک حلقهٔ تمامنشدن را اجرا میکند. برنامه روی فلش هم میماند؛ کابل را بکشید و فردا دوباره وصل کنید، همان برنامه از اول اجرا میشود.
خروجی دیجیتال یعنی چه؟
پین دیجیتال آردوینو فقط دو حالت دارد:
- HIGH — پین به ۵ ولت وصل میشود؛ LED روشن.
- LOW — پین به صفر ولت (زمین) وصل میشود؛ LED خاموش.
سه تابع پایه که در این درس بهکار میروند:
pinMode(pin, mode)— تعیین میکند پین ورودی باشد یا خروجی؛ این کار درsetup()انجام میشود. برای خروجی، mode راOUTPUTمیگذاریم.digitalWrite(pin, value)— پین را HIGH یا LOW میکند؛ یعنی روشن و خاموش.delay(ms)— برنامه را به اندازهٔmsمیلیثانیه نگه میدارد؛ ۱۰۰۰ میلیثانیه یعنی یک ثانیه.
سه تابع، کل برنامهٔ چشمکزن.
نوشتن اسکچ Blink
IDE 2 را باز کنید و این کد را تایپ کنید (منوی File > Examples > 01.Basics > Blink هم همان را باز میکند):
void setup() {
pinMode(LED_BUILTIN, OUTPUT); // Set the built-in LED pin as output
}
void loop() {
digitalWrite(LED_BUILTIN, HIGH); // Turn the LED on (5 volts)
delay(1000); // Wait one second
digitalWrite(LED_BUILTIN, LOW); // Turn the LED off (0 volts)
delay(1000); // Wait one second
}توضیح خطبهخط:
void setup()— تابع تنظیمات؛ در هر روشنشدن برد یک بار اجرا میشود.pinMode(LED_BUILTIN, OUTPUT)— پین LED داخلی را خروجی معرفی میکند. ثابتLED_BUILTINاسم پین ۱۳ است؛ استفاده از آن بهجای عدد، کد را روی هر بردی درست نگه میدارد.void loop()— حلقهٔ اصلی؛ تا وقتی برد روشن است بینهایت بار تکرار میشود.digitalWrite(LED_BUILTIN, HIGH)— پین ۱۳ را به ۵ ولت میبرد و LED روشن میشود.delay(1000)— یک ثانیه صبر میکند؛ در این مدت LED روشن میماند.digitalWrite(LED_BUILTIN, LOW)— پین را صفر ولت میکند و LED خاموش میشود.delay(1000)— یک ثانیهٔ دوم؛ LED خاموش میماند. بعد از این خط،loop()از اول اجرا میشود و چرخه ادامه پیدا میکند.
کامپایل و آپلود
۱. با دکمهٔ Verify (تیک) کد را کامپایل کنید؛ اگر ارور نوشت، تایپیها را با کد بالا مقایسه کنید — زبان C به بزرگی و کوچکی حروف حساس است و هر ; لازم است.
۲. مطمئن شوید در Tools، برد Arduino Uno و پورت درست انتخاب است (درس قبل).
۳. دکمهٔ Upload (فلش) را بزنید. LEDهای TX و RX روی برد چشمک میزنند و کنسول پیام Done uploading میدهد.
۴. چند ثانیه صبر کنید: LED با حرف L کنار پورت USB، هر ثانیه یک بار روشن و خاموش میشود.
اگر همین حالا کابل را بکشید و برد را به شارژر موبایل بزنید، چشمکزن همانجا هم کار میکند؛ چون برنامه روی فلش برد ذخیره شده است.
خطاهای رایج آپلود
اگر آپلود موفق نشد، پیام کنسول را بخوانید؛ تقریباً همیشه یکی از این سه مورد است:
| خطا یا نشانه | علت رایج | راهحل |
|---|---|---|
| Board not found / پورتی در Tools > Port نیست | درایور نصب نیست یا کابل فقط شارژی است | درایور CH340 را نصب کنید؛ کابل USB واقعی (نه شارژ-فقط) بزنید |
| پیام آپلود timeout / not in sync | پورت یا برد اشتباه انتخاب شده، یا برنامهٔ دیگری پورت را گرفته | Tools > Port را چک کنید؛ سریال مانیتور و پنجرههای دیگر IDE را ببندید و دوباره آپلود کنید |
| کامپایل با خطای قرمز متوقف میشود | غلط تایپی در کد؛ مثلاً digitalwrite بهجای digitalWrite یا نبود ; |
شمارهٔ خطِ خطا در کنسول را ببینید و همان خط را با کد بالا مقایسه کنید |
تمرینها
تمرین
تمرین ۱ — چشمکزن سریع و کوتاه
کد Blink را طوری تغییر دهید که LED در هر دوره فقط ۲۰۰ میلیثانیه روشن بماند و ۸۰۰ میلیثانیه خاموش بماند؛ یعنی یک فلاش کوتاه و مکث بلندتر، شبیه چراغ راهنما.
نمایش راهحل
فقط دو مقدار delay را عوض کنید؛ مکث بعد از HIGH طول روشنشدن و مکث بعد از LOW طول خاموشی را تعیین میکند:
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
digitalWrite(LED_BUILTIN, HIGH);
delay(200);
digitalWrite(LED_BUILTIN, LOW);
delay(800);
}پس از آپلود، LED باید ۰٫۲ ثانیه روشن و ۰٫۸ ثانیه خاموش بماند و این چرخه هر ثانیه یک بار تکرار شود.
:::
خلاصه
- اسکچ فایل
.inoبا دو تابع است:setup()یک بار وloop()بینهایت بار. - خروجی دیجیتال دو حالت دارد: HIGH یعنی ۵ ولت و LOW یعنی صفر ولت.
pinModeپین را خروجی میکند،digitalWriteروشن و خاموش میکند وdelayمکث میسازد.- ثابت
LED_BUILTINهمان پین ۱۳ و LED داخلی برد است؛ چشمکزن بدون هیچ سیمی کار میکند. - آپلود موفق با چشمک TX و RX و پیام Done uploading معلوم میشود؛ برنامه روی فلش میماند.
LED داخلی را چشمکزن کردید؛ در درس بعدی همین کار را با LED و مدار خودتان روی برد سرهمبندی تکرار میکنید و با ورودیها هم آشنا میشوید.