دستور analogRead در آردوینو (تبدیل ADC)

این دستور مقدار ولتاژ را در پین های آنالوگ ورودی میخواند و آنها را به عدد تبدیل میکند.
این دستور برای تبدیل آنالوگ به دیجیتال در برد آردوینو استفاده میشود. برد های آردوینو دارای مبدل های آنالوگ به دیجیتال (ADC) چند کاناله هستند. اکثر برد های آردوینو دارای مبدل 10 بیتی هستند و ولتاژ عملیاتی آنها 5 ولت است. این بدان معنا است که ولتاژ 0 تا 5 را به عددی بین 0 تا 1023 تبدیل میکنند.
دامنه ورودی را می توان با استفاده از دستور analogReference() تغییر داد و وضوح را می توان با استفاده از analogReadResolution() (فقط برای برد های Zero ، Due و MKR) تغییر داد.
در برد های مبتنی بر ATmega مثل UNO ، Nano ، Mini ، Mega برای خواندن ورودی آنالوگ حدود 100 میکروثانیه (0.0001 ثانیه) زمان لازم است، بنابراین حداکثر میزان خواندن حدود 10 هزار بار در ثانیه است.
برد | ولتاژ کاری | پین های ورودی آنالوگ | حداکثر وضوح |
---|---|---|---|
Uno | 5 ولت | A0 تا A5 | 10 بیت |
Mini, Nano | 5 ولت | A0 تا A7 | 10 بیت |
Mega, Mega2560, MegaADK | 5 ولت | A0 تا A14 اگر در مورد این مطلب سوالی دارید در قسمت نظرات بپرسید | 10 بیت |
Micro | 5 ولت | A0 تا A11* | 10 بیت |
Leonardo | 5 ولت | A0 تا A11* | 10 بیت |
Zero | 3.3 ولت | A0 تا A5 | 12 بیت** |
Due | 3.3 ولت | A0 تا A11 | 12 بیت** |
MKR Family boards | 3.3 ولت | A0 تا A6 | 12 بیت** |
- * A0 تا A5 روی برد برچسب گذاری شده اند ، A6 تا A11 به ترتیب در پایه های 4 ، 6 ، 8 ، 9 ، 10 و 12 هستند.
- ** وضوح پیش فرض analogRead () برای این برد ها 10 بیت است. برای تغییر دادن آن به 12 بیت باید از analogReadResolution() استفاده کنید.
دستور analogRead
analogRead(pin)
- pin: به جای pin باید نام پین که میخواهید تبدیل آنالوگ به دیجیتال در آن انجام شود را بنویسید.
به طور مثال اگر میخواهید بفهمید در پین A1 چه مقدار ولتاژ وجود دارد (ولتاژ یعنی مقدار آنالوگ را به مقدار دیجیتالی تبدیل کنید) باید دستور را به صورت analogRead(A1)
بنویسید.
چه چیزی را بر میگرداند؟
مقدار دیجیتالی را به صورت عدد صحیح برمیگرداند. برای برد های دارای آنالوگ به دیجیتال 10 بیتی این مقدار بین 0 تا 1023 است و برای برد های دارای آنالوگ به دیجیتال 12 بیتی، این مقدار بین 0 تا 4095 است.
نمونه کد با دستور analogRead
در این نمونه کد، ما یک پتانسیومتر را به آردوینو متصل میکنیم و تبدیل را انجام میدهیم. پایه های کناری پتانسیومتر را به GND و VCC متصل کنید.
int analogPin = A3; // پایه میانی پتانسیومتر به این پین متصل میشود. int val = 0; // ایجاد متغیر برای قرار دادن مقدار تبدیل شده void setup() { Serial.begin(9600); // شروع ارتباط سریال } void loop() { val = analogRead(analogPin); // خواندن مقدار در پین ورودی آنالوگ Serial.println(val); // نمایش مقدار بدست آمده در سریال مانیتور }
نکات:
- اگر پین های ورودی آنالوگ به جایی متصل نباشند، مقادیر بازگشت داده شده تصادفی خواهند بود.
دستورات مرتبط: