جلسه اول آموزش آردوینو | آشنایی با برد Arduino و پروژه LED

متا دیسکریپشن

در اولین جلسه آموزش آردوینو، با برد محبوب Arduino Uno، کاربردهای آن در هوشمندسازی و رباتیک، پین‌های دیجیتال، آنالوگ و PWM آشنا شوید. آموزش گام به گام پروژه‌های روشن/خاموش کردن و کنترل شدت نور LED را با کدهای کامل و توضیحات ساده فرا بگیرید.


مقدمه

به دنیای هیجان‌انگیز الکترونیک و برنامه‌نویسی خوش آمدید! اگر به دنبال راهی برای ورود به دنیای هوشمندسازی، رباتیک و ساخت پروژه‌های خلاقانه هستید، آموزش آردوینو بهترین نقطه شروع است. در جلسه اول آموزش آردوینو، قصد داریم تا شما را با قلب تپنده این دنیای جذاب، یعنی برد آردوینو، به خصوص مدل محبوب Arduino Uno، آشنا کنیم.

در این مقاله، با زبانی ساده و کاربردی، از چیستی آردوینو و کاربردهای بی‌نظیر آن گرفته تا معرفی اجزا و پین‌های کلیدی برد، به طور کامل صحبت خواهیم کرد. همچنین، دو پروژه پایه و اساسی را با هم انجام خواهیم داد: روشن و خاموش کردن یک LED ساده و سپس کنترل شدت نور آن با استفاده از تکنیک PWM. آماده‌اید تا اولین گام‌ها را در مسیر تبدیل ایده‌هایتان به واقعیت بردارید؟ پس با ما همراه باشید!


فهرست مطالب


برد آردوینو چیست و چه کاربردهایی دارد؟

آردوینو یک پلتفرم متن‌باز (Open-Source) مبتنی بر سخت‌افزار و نرم‌افزار است که به افراد امکان می‌دهد تا به سادگی پروژه‌های تعاملی بسازند. این پلتفرم از یک برد الکترونیکی (میکروکنترلر) و یک محیط توسعه یکپارچه (IDE) برای نوشتن و آپلود کد روی برد تشکیل شده است. سادگی، انعطاف‌پذیری و قیمت مناسب، آردوینو را به ابزاری محبوب برای دانشجویان، علاقه‌مندان به الکترونیک، هنرمندان، طراحان و حتی متخصصان تبدیل کرده است.

آردوینو در هوشمندسازی

کاربرد آردوینو در هوشمندسازی بسیار گسترده است. با استفاده از سنسورهای مختلف (مانند سنسور دما، رطوبت، نور، حرکت) و ماژول‌های ارتباطی، می‌توان سیستم‌های هوشمندی را طراحی کرد که به صورت خودکار یا با دخالت انسان، محیط اطراف را کنترل و مدیریت کنند. نمونه‌هایی از پروژه‌های هوشمندسازی با آردوینو شامل:

  • سیستم‌های خانه هوشمند (کنترل روشنایی، دما، پرده‌ها)
  • سیستم‌های آبیاری هوشمند گلخانه‌ها
  • مانیتورینگ محیطی (اندازه‌گیری کیفیت هوا، تشخیص نشت گاز)
  • سیستم‌های هشدار امنیتی

آردوینو در رباتیک

رباتیک یکی از جذاب‌ترین حوزه‌هایی است که آردوینو در آن نقش کلیدی ایفا می‌کند. برد آردوینو می‌تواند مغز متفکر ربات‌های ساده تا پیچیده باشد. با اتصال موتورها، سنسورها و ماژول‌های حرکتی، می‌توان ربات‌هایی ساخت که قادر به حرکت، تشخیص موانع، دنبال کردن خط، یا انجام وظایف خاص باشند.

  • ربات‌های مسیریاب
  • ربات‌های انسان‌نما
  • بازوهای رباتیک
  • خودروهای خودران کوچک
تصویر شماتیک برد آردوینو مدل اونو
تصویر شماتیک برد آردوینو مدل uno با ذکر کلیه اجزائ مربوطه

معرفی اجزا و پین‌های برد Arduino Uno

برد Arduino Uno یکی از محبوب‌ترین و پرکاربردترین بردهای آردوینو است. شناخت اجزای این برد به شما کمک می‌کند تا بهتر بتوانید از آن استفاده کنید.

![تصویر برد Arduino Uno با مشخص شدن اجزا]

(تصویر شماتیک برد Arduino Uno با لیبل‌گذاری اجزای اصلی)

بخش تغذیه

  • کانکتور تغذیه DC (جک آداپتور): برای تغذیه برد با ولتاژ خارجی (معمولاً 7 تا 12 ولت).
  • رگولاتور ولتاژ (LM7805): ولتاژ ورودی را به 5 ولت پایدار برای تغذیه میکروکنترلر و سایر قطعات برد تبدیل می‌کند.
  • پین‌های 5V و GND: خروجی تغذیه 5 ولت و زمین برای تغذیه قطعات جانبی.
  • پین VIN: ورودی ولتاژ خارجی (قبل از رگولاتور).

میکروکنترلر

  • ATmega328P: قلب تپنده برد آردوینو UNO. این ریزپردازنده مسئول اجرای کدهایی است که شما می‌نویسید.

پورت USB

  • پورت USB Type-B: برای اتصال برد به کامپیوتر جهت برنامه‌ریزی (آپلود کد) و همچنین تغذیه برد.

پین‌های ورودی/خروجی (I/O Pins)

این پین‌ها مهمترین قسمت برد برای تعامل با دنیای بیرون هستند. در آردوینو UNO، این پین‌ها به سه دسته اصلی تقسیم می‌شوند:

پین‌های دیجیتال (Digital Pins)

  • شماره‌گذاری: از 0 تا 13.
  • کاربرد: این پین‌ها می‌توانند دو حالت منطقی داشته باشند: HIGH (1) یا LOW (0). به عبارتی، برای ارسال یا دریافت سیگنال‌های روشن/خاموش، یا خواندن وضعیت کلیدها و دکمه‌ها استفاده می‌شوند.
  • قابلیت‌ها:
    • Digital Input: برای خواندن وضعیت کلیدها، دکمه‌ها و سنسورهای دیجیتال.
    • Digital Output: برای روشن/خاموش کردن LEDها، فعال کردن رله‌ها و درایو کردن موتورها.
    • پین‌های 0 (RX) و 1 (TX): این پین‌ها برای ارتباط سریال (ارتباط با کامپیوتر از طریق USB یا ارتباط با ماژول‌های دیگر مانند بلوتوث) استفاده می‌شوند. هنگام استفاده از این پین‌ها برای اهداف دیگر، باید دقت کرد که با ارتباط سریال تداخل ایجاد نشود.

پین‌های آنالوگ (Analog Pins)

  • شماره‌گذاری: از A0 تا A5.
  • کاربرد: این پین‌ها برای خواندن ولتاژهای متغیر استفاده می‌شوند. برخلاف پین‌های دیجیتال که فقط دو وضعیت دارند، پین‌های آنالوگ می‌توانند طیف وسیعی از ولتاژها را به اعداد دیجیتالی تبدیل کنند (با استفاده از مبدل آنالوگ به دیجیتال یا ADC).
  • قابلیت‌ها:
    • Analog Input: ایده‌آل برای خواندن مقادیر سنسورهایی که خروجی آنالوگ دارند، مانند پتانسیومتر، سنسورهای نور (فتورزیستور)، سنسورهای دما و رطوبت.

پین‌های PWM (Pulse Width Modulation)

  • علامت: با یک علامت موج (~) مشخص شده‌اند.
  • شماره‌گذاری: 3، 5، 6، 9، 10، 11.
  • کاربرد: این پین‌ها قابلیت تولید سیگنال‌های PWM را دارند. PWM روشی است که با تغییر نسبت عرض پالس‌های روشن به خاموش، می‌توان ولتاژ موثر را کنترل کرد. این قابلیت برای کنترل شدت نور LED، کنترل سرعت موتور و تولید صداهای مختلف کاربرد دارد.

ماژول‌ها و سنسورهای رایج آردوینو

برای گسترش قابلیت‌های آردوینو، از طیف وسیعی از ماژول‌ها و سنسورها استفاده می‌شود. برخی از مهمترین آن‌ها عبارتند از:

  • سنسورهای دما و رطوبت: مانند DHT11، DHT22، LM35.
  • سنسورهای نور: فتورزیستور (LDR)، فتودیود.
  • سنسورهای حرکت: PIR (Passive Infrared) برای تشخیص حرکت انسان.
  • سنسورهای فاصله‌سنج: اولتراسونیک (HC-SR04)، مادون قرمز.
  • ماژول‌های نمایشگر: LCD کاراکتری، OLED، نمایشگرهای ۷ سگمنت.
  • ماژول‌های ارتباطی: بلوتوث (HC-05/06)، وای‌فای (ESP8266)، ماژول‌های رادیویی.
  • ماژول‌های درایور موتور: L298N برای کنترل موتورهای DC و استپر.
  • سنسورهای صوتی: میکروفون.
  • کلیدها، دکمه‌ها و پتانسیومترها: برای ورودی کاربر.

پروژه اول: روشن و خاموش کردن LED با برد آردوینو

این ساده‌ترین پروژه آردوینو است که به شما نحوه کنترل خروجی‌های دیجیتال برد را نشان می‌دهد.

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

  • برد Arduino Uno
  • سیم برد (Breadboard)
  • LED (هر رنگی)
  • مقاومت 100 تا 330 اهم
  • سیم‌های جامپر (Jumper Wires)

مدار پروژه

  1. یک سر LED (پایه بلندتر که آند است) را به یک پین دیجیتال آردوینو (مثلاً پین 13) وصل کنید.
  2. سر دیگر LED (پایه کوتاه‌تر که کاتد است) را به یک سر مقاومت وصل کنید.
  3. سر دیگر مقاومت را به پین GND (زمین) آردوینو وصل کنید.

![شماتیک مدار روشن و خاموش کردن LED]

تصویر شماتیک اتصال برد آردوینو به led
تصویر شماتیک اتصال برد آردوینو به led با ذکر جزئیات مربوطه

(تصویر شماتیک مدار اتصال LED به آردوینو و مقاومت)

توضیح مدار: مقاومت برای محدود کردن جریان عبوری از LED و جلوگیری از سوختن آن استفاده می‌شود. پین دیجیتال برد آردوینو را می‌توان به عنوان خروجی در نظر گرفت که یا ولتاژ 5 ولت (HIGH) و یا 0 ولت (LOW) را اعمال می‌کند. وقتی HIGH باشد، LED روشن می‌شود و وقتی LOW باشد، خاموش.

کد آردوینو

کد زیر را در Arduino IDE نوشته و روی برد آپلود کنید.

توضیح اینکه هر جا با // شروع شود و به فارسی نوشته شود صرفا توضیحی برای آن سطر از کد نویسی بوده و تاثیری در کل برنامه نداشته و در برنامه نویسی نیاز به نوشتن آنها نیست .

// تعریف پین LED
const int ledPin = 13;

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

void loop() {
  // روشن کردن LED (اعمال ولتاژ HIGH)
  digitalWrite(ledPin, HIGH);
  // انتظار به مدت 1 ثانیه (1000 میلی‌ثانیه)
  delay(1000);
  // خاموش کردن LED (اعمال ولتاژ LOW)
  digitalWrite(ledPin, LOW);
  // انتظار به مدت 1 ثانیه
  delay(1000);
}

توضیح کد

  • const int ledPin = 13;: در این خط، یک متغیر از نوع عدد صحیح (integer) به نام ledPin تعریف کرده و مقدار 13 را به آن نسبت می‌دهیم. این باعث می‌شود که به جای نوشتن عدد 13 در سراسر کد، از نام ledPin استفاده کنیم که خوانایی کد را افزایش می‌دهد.
  • void setup(): این تابع یک بار در ابتدای اجرای برنامه و پس از ریست شدن برد اجرا می‌شود.
    • pinMode(ledPin, OUTPUT);: دستور pinMode وضعیت یک پین را مشخص می‌کند. در اینجا، پین 13 (که به LED وصل است) را به عنوان خروجی (OUTPUT) تعریف می‌کنیم.
  • void loop(): این تابع به طور مداوم پس از اتمام تابع setup تکرار می‌شود.
    • digitalWrite(ledPin, HIGH);: این دستور پین مشخص شده (ledPin) را در وضعیت HIGH قرار می‌دهد، که معادل اعمال ولتاژ 5 ولت است و باعث روشن شدن LED می‌شود.
    • delay(1000);: تابع delay باعث می‌شود برنامه برای مدت زمان مشخصی (بر حسب میلی‌ثانیه) متوقف شود. در اینجا، برنامه به مدت 1000 میلی‌ثانیه (1 ثانیه) صبر می‌کند.
    • digitalWrite(ledPin, LOW);: این دستور پین مشخص شده را در وضعیت LOW قرار می‌دهد، که معادل اعمال ولتاژ 0 ولت است و باعث خاموش شدن LED می‌شود.
    • delay(1000);: مجدداً برنامه به مدت 1 ثانیه صبر می‌کند.
    • پس از اتمام تابع loop، دوباره به ابتدای آن بازگشته و دستورات تکرار می‌شوند، که منجر به چشمک زدن LED می‌شود.

پروژه دوم: کنترل شدت نور LED با PWM

در این پروژه آردوینو، یاد می‌گیریم چگونه با استفاده از پین‌های PWM، شدت نور یک LED را کنترل کنیم. این پروژه به درک بهتر قابلیت PWM آردوینو کمک می‌کند.

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

  • برد Arduino Uno
  • سیم برد (Breadboard)
  • LED (هر رنگی)
  • مقاومت 220 اهم (برای LED)
  • پتانسیومتر (Potentiometer) 10 کیلواهم (KΩ)
  • سیم‌های جامپر (Jumper Wires)

مدار پروژه

  1. اتصال LED:
    • پایه بلندتر (آند) LED را به یکی از پین‌های PWM آردوینو (مثلاً پین 9) وصل کنید.
    • پایه کوتاه‌تر (کاتد) LED را به یک سر مقاومت 220 اهم وصل کنید.
    • سر دیگر مقاومت را به پین GND آردوینو وصل کنید.
  2. اتصال پتانسیومتر:
    • یکی از پایه‌های خارجی پتانسیومتر را به پین 5V آردوینو وصل کنید.
    • پایه دیگر خارجی پتانسیومتر را به پین GND آردوینو وصل کنید.
    • پایه وسطی پتانسیومتر (که خروجی متغیر است) را به یکی از پین‌های آنالوگ آردوینو (مثلاً پین A0) وصل کنید.

![شماتیک مدار کنترل شدت نور LED با PWM]

تصویر شماتیک برد آردوینو و اتصال پین های pwm
تصویر شماتیک برد آردوینو و اتصال پین های pwm با Led

(تصویر شماتیک مدار اتصال LED، مقاومت به آردوینو)

توضیح مدار: مدار تعیین شدت روشنائی LED با استفاده از برنامه نویسی در آردوینو یکی از جذاب ترین قسمتهای برنامه نویسی می باشد . در این مرحله دقیقا مانند مرحله قبا led را روی برد بورد متصل و پایه مثبت آنرا با مقاومت به یکی از پین های pwm که کنار آن علامت مد ~ قرار داده شده وصل و پایه منفی led را به یکی از پایه های Gnd وصل میکنیم سپس از طریق برنامه زیر شدت نور را تنظیم و کم و زیاد می کنیم .

کد آردوینو


    P

    // پروژه تغییر شدت نور LED با PWM
    // بدون پتانسیومتر و با استفاده از بردبورد
    
    const int ledPin = 9; // پین PWM متصل به LED
    
    void setup() {
      pinMode(ledPin, OUTPUT); // تنظیم پین به عنوان خروجی
    }
    
    void loop() {
    
      // افزایش تدریجی نور LED
      for (int brightness = 0; brightness <= 255; brightness += 5) {
    
        analogWrite(ledPin, brightness); // ارسال مقدار PWM
        delay(30);
    
      }
    
      // کاهش تدریجی نور LED
      for (int brightness = 255; brightness >= 0; brightness -= 5) {
    
        analogWrite(ledPin, brightness); // کاهش نور LED
        delay(30);
    
      }
    
    }
    

    اتصالات روی بردبورد:

    • پایه مثبت LED → مقاومت 220 اهم → پین 9 آردوینو
    • پایه منفی LED → GND آردوینو
    • همه اتصالات روی Breadboard انجام شود.

    پین‌های PWM در آردوینو Uno:

    • 3
    • 5
    • 6
    • 9
    • 10
    • 11

    هر پینی که کنار آن علامت ~ وجود دارد، PWM است و می‌تواند شدت نور LED را کنترل کند.

    pwmآردوینو به زبان ساده

    PWM مخفف Pulse Width Modulation به معنی مدولاسیون پهنای پالس است. تصور کنید می‌خواهید شدت نور یک لامپ را کنترل کنید. دو راه ساده وجود دارد: یا لامپ روشن باشد یا خاموش (مثل حالت دیجیتال). اما اگر بخواهید نور آن را کم و زیاد کنید، چه؟

    PWM یک روش هوشمندانه برای شبیه‌سازی این کار با لامپ‌های LED یا کنترل سرعت موتورها است. به جای اینکه ولتاژ را به طور مداوم تغییر دهیم (که در بردهای دیجیتال ساده مانند آردوینو امکان‌پذیر نیست)، ما پالس‌های ولتاژ را با فرکانس بالا روشن و خاموش می‌کنیم.

    فرض کنید یک پالس با دوره زمانی مشخص داریم. PWM به ما اجازه می‌دهد تا نسبت زمانی که پالس در حالت HIGH (روشن) است را نسبت به کل دوره، تنظیم کنیم.

    • اگر پالس بیشتر زمان در حالت HIGH باشد: ما احساس می‌کنیم که لامپ پرنورتر است.
    • اگر پالس بیشتر زمان در حالت LOW باشد: ما احساس می‌کنیم که لامپ کم‌نورتر است.

    این تغییرات سریع و پشت سر هم، باعث می‌شود چشم ما نتواند تشخیص دهد که لامپ خاموش و روشن می‌شود و در عوض، شدت نور متغیری را حس می‌کند.

    در آردوینو، پین‌های PWM با علامت موج (~) مشخص شده‌اند و تابع analogWrite() از 0 تا 255 را می‌گیرد. مقدار 0 یعنی 0% زمان HIGH (خاموش)، مقدار 255 یعنی 100% زمان HIGH (روشن با حداکثر شدت)، و مقادیری مانند 127 یعنی تقریباً 50% زمان HIGH (نور متوسط).


    نکات مهم در برنامه نویسی در Arduino IDE

    برای اینکه بتوانید برنامه‌های حرفه‌ای و بدون خطایی با آردوینو بنویسید، به نکات زیر توجه کنید:

    1. استفاده از const برای مقادیر ثابت: برای پین‌ها یا مقادیری که در طول برنامه تغییر نمی‌کنند، از const استفاده کنید. این کار خوانایی کد را بالا برده و از تغییر ناخواسته جلوگیری می‌کند.
    2. انتخاب نام‌های معنی‌دار برای متغیرها و توابع: از نام‌های گویا و قابل فهم استفاده کنید (مانند ledPin به جای p1 یا potentiometerValue به جای val).
    3. افزودن کامنت (توضیحات): از کامنت‌ها برای توضیح بخش‌های پیچیده کد یا هدف از نوشتن یک قسمت خاص استفاده کنید. این کار به شما و دیگران کمک می‌کند تا کد را راحت‌تر درک کنید. کامنت‌ها با // برای یک خط یا /* ... */ برای چند خط نوشته می‌شوند.
    4. تفکیک منطقی کد: سعی کنید بخش‌های مختلف برنامه را در توابع مجزا قرار دهید (مثل setup و loop). برای کارهای تکراری، توابع جدید بسازید.
    5. استفاده از delay() با احتیاط: تابع delay() کل برنامه را متوقف می‌کند. در پروژه‌های پیچیده‌تر که نیاز به انجام همزمان چند کار است، بهتر است از روش‌های بدون delay (مانند استفاده از millis()) استفاده کنید.
    6. انتخاب مقاومت مناسب برای LED: همیشه از یک مقاومت در سری LED استفاده کنید تا از آسیب دیدن LED و برد جلوگیری شود. مقدار مقاومت معمولاً بین 100 تا 330 اهم برای LEDهای استاندارد و ولتاژ 5 ولت کافی است.
    7. بررسی اتصالات: قبل از آپلود کد، حتماً اتصالات سیم‌ها و قطعات را چند بار چک کنید. بسیاری از مشکلات به دلیل اتصالات نادرست رخ می‌دهند.
    8. استفاده از Serial Monitor: برای دیباگ کردن کد و مشاهده مقادیر متغیرها، از Serial Monitor در Arduino IDE استفاده کنید. این ابزار بسیار قدرتمند است.

    سوالات متداول (FAQ)

    س: آیا برد آردوینو به کامپیوتر نیاز دارد تا کار کند؟
    ج: برد آردوینو پس از برنامه‌ریزی، می‌تواند به صورت مستقل کار کند و نیازی به اتصال دائمی به کامپیوتر ندارد. کامپیوتر فقط برای برنامه‌ریزی اولیه و تغذیه در برخی موارد لازم است.

    س: چه تفاوتی بین پین‌های دیجیتال و آنالوگ وجود دارد؟
    ج: پین‌های دیجیتال فقط دو وضعیت HIGH (روشن) و LOW (خاموش) را درک می‌کنند، در حالی که پین‌های آنالوگ می‌توانند طیف وسیعی از ولتاژها را خوانده و به مقادیر عددی تبدیل کنند.

    س: چرا باید از مقاومت در کنار LED استفاده کنم؟
    ج: LEDها جریان زیادی مصرف می‌کنند و اگر مستقیماً به پین خروجی آردوینو وصل شوند، ممکن است هم LED بسوزد و هم به پین خروجی برد آسیب برسد. مقاومت، جریان عبوری از LED را محدود می‌کند.

    س: برد آردوینو من روشن نمی‌شود، مشکل از کجاست؟
    ج: دلایل مختلفی می‌تواند داشته باشد: 1. بررسی کنید که تغذیه برد به درستی انجام شده باشد (از طریق USB یا آداپتور). 2. اتصالات سیم‌ها را چک کنید. 3. برد ممکن است معیوب باشد.

    س: تفاوت بین digitalWrite() و analogWrite() چیست؟
    ج: digitalWrite() فقط می‌تواند پین را در وضعیت HIGH (5 ولت) یا LOW (0 ولت) قرار دهد. analogWrite() از پین‌های PWM برای شبیه‌سازی ولتاژهای میانی استفاده می‌کند و برای کنترل شدت نور یا سرعت موتور کاربرد دارد.

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

    دیدگاه شما
    محصول با موفقیت به سبد خرید اضافه شد.