Analog Read Serial

این مثال به شما نشان می دهد که چطور با استفاده از پتانسیومتر، ورودی آنالوگ را از محیط فیزیکی بخوانید. پتانسیومتر یک وسیله مکانیکی ساده است که زمانی که محور آن می چرخد، مقدارهای مختلف مقاومت را ایجاد می کند. با عبور ولتاژ از میان پتانسیومتر و به سمت ورودی آنالوگ از روی برد آردوینو، می توانید مقدار مقاومت تولید شده توسط پتانسیومتر را به عنوان یک مقدار آنالوگ اندازه گیری کنید. در این مثال شما می توانید وضعیت پتانسیومترتان را بعد از برقرار کردن ارتباط سریال بین برد آردوینو و کامپیوتر کنترل کنید.

سخت افزار مورد نیاز

  • برد آردوینو
  • پتانسیومتر 10 کیلو اهمی

مدار

3 عدد سیم را از پتانسیومتر به برد آردوینو وصل کنید. اولین سیم، از یکی از پین های خارجی پتانسیومتر به زمین، دومی از 5 ولت به یکی از پین های خارجی دیگر پتانسیومتر و سومی از ورودی صفر آنالوگ به پین وسطی پتانسیومتر می رود.

برای بزرگ شدن تصویر روی آن کلیک کنید.

این تصویر با استفاده از نرم افرار Fritzingایجاد شده است. برای مثال های بیشتر مدار به صفحه پروژه های Fritzing مراجعه کنید.

شما با چرخاندن محور پتانسیومتر، مقدار مقاومت روی یک طرف wiper را که به پین مرکزی پتانسیومتر وصل شده است، تغییر می دهید. این عمل، ولتاژ پین مرکزی را تغییر می دهد. زمانی که مقاومت بین مرکز و کناره ای که به 5 ولت متصل است به صفر نزدیک می شود (و مقاومت سمت دیگر به 10 کیلو اهم نزدیک می شود) ولتاژ در پین مرکزی به 5 ولت نزدیک می شود. زمانی که مقاومت معکوس می شود، ولتاژدر پین مرکزی به سمت صفر ولت یا زمین می رود. این ولتاژی که شما به عنوان ورودی می خوانید، آنالوگ است.

آردوینو یک مدار داخلی به نام analog-to-digital converter دارد که ولتاژ متغیر را می خواند و آن را به عددی بین 0 تا 1023 تبدیل می کند. زمانی که محور در یک جهت می چرخد، ولتاژ صفر به سمت پین می رود و مقدار ورودی، صفر می شود. زمانی که محور به سمت مخالف می چرخد، ولتاژ پنج به سمت پین می رود و مقدار ورودی 1023 می شود. در این بین analogRead() یک عدد بین صفر تا 1023 را بر می گرداند که با مقدار ولتاژ اعمال شده روی پین متناسب است.

شماتیک

برای بزرگ شدن تصویر اینجا را کلیک کنید.

کد

در کد زیر، تنها کاری که شما باید در تابع setup انجام دهید، شروع ارتباط سریال، با سرعت 9600 بیت داده بر هر ثانیه، بین برد آردوینو و کامپیوتر می باشد. این عمل توسط دستور زیر انجام می شود:

Serial.begin(9600);

بعد در تابع Loop() برنامه، لازم است متغیری را برای ذخیره مقدار مقاومتی که از پتانسیومتر می آید (و عددی بین صفر تا 1023 می باشد و محدوده ای مناسب برای نوع int خواهد بود)، تعریف کنید.

int sensorValue = analogRead(A0);

در انتها، لازم است که این اطلاعات را روی پنجره سریالتان به عنوان مقدار دهدهی (DEC) چاپ کنید. شما می توانید این کار را با دستور Serial.println() در آخرین خط کدتان انجام دهید:

Serial.println(sensorValue, DEC)

اکنون، وقتی Serial Monitor را (با مستقیم کلیک کردن روی دکمه ای که سمت راست دکمه آپلود در بالای برنامه است)، در محیط برنامه نویسی آردوینو باز می کنید، باید رشته ای ثابت از اعداد را در محدوده ی 1023 - 0 بینید، این اعداد مرتبط با موقعیت پتانسیومتر هستند. هنگامی که شما پتانسیومترتان را می چرخانید، اعداد به سرعت تغییر می کنند.

/*
  AnalogReadSerial
  Reads an analog input on pin 0, prints the result to the serial monitor.
  Attach the center pin of a potentiometer to pin A0, and the outside pins to +5V and ground.
 
 This example code is in the public domain.
 */


// the setup routine runs once when you press reset:
void setup() {
  // initialize serial communication at 9600 bits per second:
  Serial.begin(9600);
}

// the loop routine runs over and over again forever:
void loop() {
  // read the input on analog pin 0:
  int sensorValue = analogRead(A0);
  // print out the value you read:
  Serial.println(sensorValue);
  delay(1);        // delay in between reads for stability
}