در این بخش در مورد تعدادی از توابع ورودی/خروجی پیشرفته آردوینو صحبت میکنیم.در ادامه با ما همراه باشید.
تابع analogReference
این تابع ولتاژ مرجع مورد استفاده برای ورودی را تنظیم میکند (منظور از ولتاژ مرجع حداکثر ولتاژی است که به عنوان ولتاژ ورودی پایه آنالوگ در نظر گرفته میشود). تنظیمات این تابع عبارت اند از:
- DEFAULT : ولتاژ مرجع پیش فرض که برابر 5V میباشد (در بردهای آردوینو با تغذیه 5V) و یا 3V (در بردهای آردوینو با تغذیه 3.3V)
- INTERNAL : ولتاژ مرجع داخلی، برای بردهای دارای میکروهای ATmega168 و ATmega328 برابر 1V و برای بردهای دارای میکروی ATmega8 برابر 2.56V ( در بردهای Arduino Mega غیرفعال است)
- INTERNAL1V1 : ولتاژ مرجع داخلی 1V (فقط در بردهای Arduino Mega)
- INTERNAL2V56 : ولتاژ مرجع داخلی 56V (فقط در بردهای Arduino Mega)
- EXTERNAL : ولتاژ اعمال شده به پایه AREF (فقط 0V تا 5V) به عنوان ولتاژ مرجع در نظر گرفته میشود.
دستور نگارش تابع analogReference():
analogReference (type);
type : فقط میتواند یکی از موارد زیر باشد:
DEFAULT, INTERNAL, INTERNAL1V1, INTERNAL2V56, EXTERNAL
توجه شود هرگز ولتاژی کمتر از 0V یا ولتاژی بیشتر از 5V به پایه AREF اعمال نکنید. اگر از ولتاژ خارجی به عنوان ولتاژ مرجع بر روی پایه AREF استفاده میکنید، باید قبل از فراخوانی تابع analogRead ولتاژ مرجع را بر روی حالت EXTERNAL تنظیم کنید. در غیر اینصورت فراخوانی این تابع موجب اتصال کوتاه شدن ولتاژ مرجع داخلی و پایه AREF می شود و ممکن است موجب سوختن میکروکنترلر موجود بر روی برد آردوینو شود.
به عنوان یک روش دیگر میتوانید ولتاژ مرجع خارجی مورد نظر را توسط یک مقاومت 5 کیلو اهم به پایه AREF متصل نمایید، در اینصورت میتوانید بین ولتاژ مرجع خارجی و ولتاژ مرجع داخلی تغییر حالت دهید.
البته در این حالت توجه کنید که ولتاژ اعمال شده به عنوان ولتاژ مرجع تغییر خواهد کرد زیرا به صورت داخلی یک مقاومت 32 کیلواهم بر روی پایه AREF وجود دارد و مقاومت خارجی که متصل میکنیم به همراه این مقاومت یک تقسیم کننده ولتاژ را تشکیل میدهند. به عنوان مثال، اگر 2.5V به پایه AREF اعمال نمایید، ولتاژ مرجع برابر است با:
2.5 * 32 / (32 + 5) = ~2.2V
مثال:
int analogPin = 3;// potentiometer wiper (middle terminal) connected to analog pin 3 int val = 0; // variable to store the read value void setup() { Serial.begin(9600); // setup serial analogReference(EXTERNAL); // the voltage applied to the AREF pin (0 to 5V only) // is used as the reference. } void loop() { val = analogRead(analogPin); // read the input pin Serial.println(val); // debug value }
پایان جلسه، امیدوارم این نوشته برایتان مفید باشد.
منبع: میکرودیزاینرالکترونیک