🤖 روبومیکرآموزش آردوینوشبیه‌ساز آنلاین
روبومیکرآموزش آردوینوخواندن حسگر آنالوگ (analogRead)

خواندن حسگر آنالوگ (analogRead)

تا حالا فقط ورودی‌های دیجیتال (روشن/خاموش) خواندیم. اما خیلی از حسگرها مقدارهای «بینابینی» دارند؛ مثلاً یک پتانسیومتر که می‌چرخد یا یک حسگر نور (LDR) که شدت روشنایی را اندازه می‌گیرد. برای این کارها از تابع analogRead استفاده می‌کنیم.

مقدار ۰ تا ۱۰۲۳

تابع analogRead یک عدد بین ۰ تا ۱۰۲۳ برمی‌گرداند. عدد ۰ یعنی ولتاژ صفر و عدد ۱۰۲۳ یعنی بیشترین ولتاژ (۵ ولت). پایه‌های آنالوگ آردوینو با حرف A شروع می‌شوند، مثل A0.

int value = analogRead(A0);

تبدیل با تابع map

می‌خواهیم با چرخاندن پتانسیومتر، روشنایی یک LED را کم و زیاد کنیم. اما analogWrite فقط مقدار ۰ تا ۲۵۵ را قبول می‌کند، در حالی که حسگر ما ۰ تا ۱۰۲۳ می‌دهد. تابع map این بازه را برای ما تبدیل می‌کند.

کد کامل

int sensorPin = A0;
int ledPin = 9;

void setup() {
  Serial.begin(9600);
  pinMode(ledPin, OUTPUT);
}

void loop() {
  int value = analogRead(sensorPin);

  int brightness = map(value, 0, 1023, 0, 255);

  analogWrite(ledPin, brightness);

  Serial.println(value);
  delay(50);
}

ابتدا با analogRead مقدار حسگر را می‌خوانیم. سپس map(value, 0, 1023, 0, 255) این عدد را از بازه ۰ تا ۱۰۲۳ به بازه ۰ تا ۲۵۵ تبدیل می‌کند. حالا با analogWrite(ledPin, brightness) روشنایی LED را تنظیم می‌کنیم؛ هرچه پتانسیومتر را بیشتر بچرخانی، LED پرنورتر می‌شود.

نکته: برای استفاده از analogWrite حتماً از پایه‌هایی استفاده کن که علامت ~ دارند (مثل ۳، ۵، ۶، ۹، ۱۰، ۱۱)؛ فقط این پایه‌ها قابلیت کنترل روشنایی دارند.

این کد را همین حالا در حالت کدنویسی شبیه‌ساز روبومیکر بنویس و اجرا کن.

🔌 همین حالا توی شبیه‌ساز آنلاین روبومیکر امتحان کن — رایگان و بدون نصب