در آموزش قبل در خصوص توابع ورودی و خروجی آردوینو صحبت کردیم. در این آموزش برخی از توابع ورودی و خروجی پیشرفته را مورد بررسی قرار می دهیم.
تابع analogReference
این تابع ولتاژ مرجع برای ورودی آنالوگ را تنظیم می کند. به عنوان نمونه مقداری که به عنوان حداکثر رنج ورودی استفاده می شود. مقادیر پارمتر این تابع عبارتند از :
- DEFAULT : مقدار پیشفرض ولتاژ مرجع مورد استفاده در بردهای ۵ ولتی ۵V و در بردهای ۳٫۳ ولتی ۳٫۳V است.
- INTERNAL : یک مرجع داخی، برابر با ۱.۱ ولت در ATmega168 و ATmega328 و ۲.۵۶ ولت در ATmega8 ( در آردوینو Mega قابل استفاده نیست )
- INTERNAL1V1 : یک مرجع داخلی از قبل تعیین شده برابر ۱.۱ ولت (فقط در بردهای آردوینو مگا )
- INTERNAL2V56: یک مرجع داخلی از قبل تعیین شده برابر ۲.۵۶ ولت (فقط در بردهای آردوینو مگا )
- EXTERNAL : ولتاژ اعمال شده به پین AREF ( فقط بین بازه ۰ تا ۵ ولت ) به عنوان مرجع در نظر گرفته می شود.
ساختار تابع analogRefrence آردوینو
1 | analogReference (type); |
مقدار type می توانید یکی از مقادیر DEFAULT, INTERNAL, INTERNAL1V1, INTERNAL2V56, EXTERNAL باشد.
در صورت استفاده از مرجع EXTERNAL مقداری کمتر از ۰ ولت یا بیشتر از ۵ ولت در پین AREF استفاده کنید. اگر از منبع external پین AREF استفاده می کنید، می بایست قبل فراخوانی تابع analogRead مقدار مرجع آنالوگ را تنظیم کنید. در غیر این صورت ممکن به میکروکنترلر برد آردوینو شما آسیب برسد.
علاوه بر این، شما می توانید مرجع ولتاژ external را با یک مقاومت ۵K به پین AREF متصل کنید. در اینصورت امکان سوییچ بین مرجع خارجی و داخلی وجود دارد.
در نظر داشته باشید که مقاومت ولتاژ استفاده شده به عنوان مرجع را تغییر میدهد، چرا که یک مقاومت ۳۲K در پین AREF وجود دارد. دو مقاومت به عنوان مقسم ولتاژ عمل خواهد کرد. به عنوان نمونه ولتاژ ۲.۵ ولت اعمال شده با مقاومت در پین AREF محدود به ۲٫۵ * ۳۲ / (۳۲ + ۵) = ~۲٫۲V خواهد شد.
مثال
1 2 3 4 5 6 7 8 9 10 11 12 13 | 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 } |