توابع IO پیشرفته

توابع I/O پیشرفته

در این جلسه برخی توابع ورودی و خروجی پیشرفته را یاد خواهیم گرفت.

تابع ()analogReference :

ولتاژ مرجع ، ولتاژ مورد استفاده برای ورودی آنالوگ را تنظیم می کند (یعنی مقدار استفاده شده به عنوان رنج بالایی دامنه ورودی قرار می گیرد). ویژگی ها :

  • DEFAULT : مرجع آنالوگ پیش فرض 5 ولت (روی برد های 5 ولت آردوینو) یا 3.3 ولت (در برد های 3.3 ولت آردوینو)
  • INTERNAL : یک مرجع داخلی ولتاژ ، برابر با 1.1 ولت در ATmega168 یا ATmega328 و 2.56 ولت در ATmega8 (در Arduino Mega موجود نیست)
  • INTERNAL1V1 : یک مرجع داخلی ولتاژ 1.1 ولت (فقط در آردوینو مگا)
  • INTERNAL2V56 : یک مرجع داخلی ولتاژ 2.56 ولت (فقط در آردوینو مگا)
  • EXTERNAL : ولتاژ اعمال شده به پین AREF (فقط 0 تا 5 ولت) به عنوان مرجع استفاده می شود.

فرم دستوری ()analogReference :

analogReference (type);

type : می تواند از هر نوع رو به رو استفاده کند (DEFAULT، INTERNAL، INTERNAL1V1، INTERNAL2V56، EXTERNAL)

برای ولتاژ مرجع خارجی در پین AREF از مقداری کمتر از 0 ولت یا بیشتر از 5 ولت استفاده نکنید. اگر از یک مرجع خارجی در پین AREF استفاده می کنید ، باید مرجع آنالوگ را بر روی EXTERNAL قبل از فراخوانی تابع ()analogRead قرار دهید. در غیر این صورت ، شما ولتاژ مرجع فعال (داخلی تولید شده) و پین AREF را اتصال کوتاه می کنید ، احتمالاً به میکروکنترلر موجود در برد آردوینو شما آسیب می رساند.

microcontroller

از طرف دیگر ، می توانید ولتاژ مرجع خارجی را از طریق یک مقاومت 5K به پین AREF متصل کنید ، به شما این امکان را می دهد که بین ولتاژ های مرجع خارجی و داخلی جا به جا شوید.

توجه داشته باشید که مقاومت ، ولتاژ مورد استفاده را به عنوان مرجع تغییر می دهد زیرا یک مقاومت داخلی 32K در پین AREF وجود دارد. این دو به عنوان تقسیم ولتاژ عمل می کنند. به عنوان مثال ، 2.5 ولت اعمال شده از طریق مقاومت مقاومت 2.5 * 32 / (32 + 5) = 2.2  ولت در پین AREF خواهد داشت.

مثال :

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
}

منبع : https://b2n.ir/374403

مطالعه بیشتر