🔵 Arduino · درس ۳

AnalogRead، PWM و Serial Monitor

داده پیوسته‌تر از سنسور را می‌خوانی و خروجی را با Serial Monitor مشاهده می‌کنی.

⏱ ۱۶ دقیقه 🌱 آسان ⭐ +۳۰ XP 🧠 کوئیز الزامی
🎯
بعد از این درس

قراره چی یاد بگیری؟

  • analogRead و محدوده پیش‌فرض Uno را درک کنی.
  • PWM/analogWrite را از خروجی آنالوگ واقعی جدا کنی.
  • با Serial Monitor داده سنسور را مشاهده و Scale کنی.

خواندن مقدار آنالوگ

در Arduino Uno، analogRead(A0) به طور پیش‌فرض خروجی ADC ده‌بیتی می‌دهد؛ یعنی عددی تقریبا بین ۰ تا ۱۰۲۳ متناسب با ولتاژ ورودی بین GND و مرجع ADC.

int raw = analogRead(A0);
Serial.println(raw);

قبل از تبدیل این عدد به دما یا فاصله باید رابطه سنسور را بدانیم. 512 به خودی خود «۵۱۲ درجه» یا «۵۱۲ ولت» نیست؛ فقط کد ADC است.

Serial Monitor را از روز اول استفاده کن

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

Baud Rate پنجره Serial باید با کد سازگار باشد. چاپ بیش از حد سریع هم می‌تواند Log را شلوغ کند و روی زمان‌بندی اثر بگذارد؛ برای تمرین می‌توان هر ۱۰۰ms یک نمونه چاپ کرد.

analogWrite و PWM

روی Uno، analogWrite(pin, value) روی پایه‌های PWM سیگنال پالس تولید می‌کند. مقدار معمول ۰ تا ۲۵۵ است:

  • 0 ≈ همیشه LOW
  • 127 ≈ حدود 50% Duty Cycle
  • 255 ≈ همیشه HIGH

این خروجی DAC واقعی نیست. LED آن را به صورت روشنایی متوسط می‌بیند و Driver موتور می‌تواند از آن برای کنترل توان متوسط استفاده کند.

Scale کردن محدوده‌ها

اگر سنسور ۰..۱۰۲۳ است و PWM ۰..۲۵۵، باید Scale کنیم. تابع map() برای عدد صحیح مفید است:

int pwm = map(raw, 0, 1023, 0, 255);
analogWrite(ledPin, pwm);

قبل از استفاده از map مطمئن شو محدوده واقعی سنسور چیست؛ ممکن است سنسور در عمل فقط ۲۲۰ تا ۸۰۰ تولید کند و Scale کردن آن محدوده نتیجه بهتری بدهد.

تمرین

یک پتانسیومتر را به A0 و LED را به پایه PWM وصل کن. raw و pwm را همزمان روی Serial چاپ کن. سه نقطه کم/وسط/زیاد را ثبت کن و ببین آیا روشنایی تقریبا مطابق انتظار تغییر می‌کند. اگر مقدار خام می‌پرد، قبل از فیلتر نرم‌افزاری اتصالات و GND را بررسی کن.

🃏
مرور سریع

فلش کارت‌ها

۱ / ۳
🧠
برای تکمیل درس لازمه

آزمون کوتاه همین درس

حد نصاب ۷۰٪

برای عبور از درس، مفهوم را روی یک موقعیت واقعی به کار ببر؛ جواب‌ها از حفظ یک جمله نیستند.

۱

analogRead روی Uno با ADC ده‌بیتی معمولا چه بازه‌ای می‌دهد؟

۲ امتیاز
۲

analogWrite روی Uno لزوما یک ولتاژ DC آنالوگ پیوسته تولید می‌کند.

۱ امتیاز
۳

برای دیدن مقدار خام سنسور هنگام اجرا چه ابزاری ساده و مناسب است؟

۲ امتیاز
۳ سوال هنوز جواب نداره.
🔗
برای عمیق‌تر شدن

منابع تکمیلی