ورودی و خروجی آنالوگ

 

 

 

 

analogReference()

 

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

analogReference(type)

 

که پارامتر type یکی از موارد زیر است:

  • DEFAULT در این حالت ولتاژ مرجع در حالت پیش فرض که 5 یا 3.3 ولت (بر اساس نوع برد) است تنظیم می شود.
  • INTERNAL این مورد ولتاژ مرجع در آردوینوهای برپایه Atmega328 را 1.1 ولت در نظر می گیرد و در دیگر بردها این دستور کاربردی ندارد.
  • INTERNAL1V1 این مورد مخصوص بورد Arduino Mega می باشد و ولتاژ مرجع را 1.1 ولت در نظر میگیرد.
  • INTERNAL2V56 این مورد مخصوص بورد Arduino Mega می باشد و ولتاژ مرجع را2.56 ولت در نظر میگیرد.
  • EXTERNAL این حالت در تمامی بردها کاربرد دارد و باید ولتاژی بین 0 تا 5 ولت را به پایه AREF اعمال کنید (در بردهای 3.3 ولتی حداکثر 3.3 ولت)

هشدار:

هرگز ولتاژ کمتر از 0 و بیشتر از 5 یا 3.3 به AREF اعمال نکنید و وقتی اعمال کردید حتما پارامتر EXTERNAL  را در کد وارد کنید. در غیر اینصورت ولتاژ ورودی با ولتاژ داخلی پایه AREF اتصال کوتاه می شود و چیپ را می سوزاند!

 

analogRead()

مقدار ولتاژ آنالوگ را از پین مشخص شده می خواند

 

analogRead(pin);

پارامتر pin شماره پایه آنالوگ را مشخص می کند (A0,A1,…). پایه های آنالوگ ورودی در آردوینو 10 بیتی هستند به این معنی که ولتاژ از 0 تا حداکثر(5 یا 3.3ولت) را تبدیل به 0 تا 1023 می کنند. که دقت این تبدیل برابر 4.9میلی ولت در هر واحد بین 0 تا 1023 می باشد. حداکثر ولتاژ وردی برای پایه های آنالوگ ورودی توسط دستور analogReference() مشخص می گردد.

سرعت نمونه برداری آنالوگ حدود 100 میکرو ثانیه می باشد به این معنی که در هر ثانیه حدودا 10000 مرتبه مقدار ورودی خوانده می شود.

مدار زیر را ببندید و کد ارایه شده را روی اردوینو بریزید. با چرخاندن پتانسیومتر می توانید مقادیر ولتاژ خوانده شده را از 0 تا 1023 در سریال مانیتور مشاهده کنید:

 

 

 

 

int val = 0;           // variable to store the value read 
void setup()
 
{
 
  Serial.begin(9600);          //  setup serial
 
}

void loop()
 
{
 
  val = analogRead(A0);    // read the input pin
 
  Serial.println(val);             // debug value
 
}

 

 

analogWrite()

این دستور برای ساختن ولتاژ آنالوگ در پین مشخص شده به کار می رود. این ولتاژ آنالوگ توسط موج های مربعی PWM ساخته می شوند و می توانید از مقدار 0 تا 255 را به آن اختصاص دهید. فرکانس پین های PWM معمولا حدود 490 هرتز است در بردهای UNO و مدل های مشابه پین های شماره 5 و 6 فرکانس 980هرتز دارند.

در بردهای آردوینو معمولا پین هایی که علامت ~ در کنرشان باشد قابلیت PWM دارند.

در برد آردوینو Due پین های DAC1 و DAC2 نیز قابلیت آنالوگ دارند با این تفاوت که در این پین ها ولتاژ آنالوگ واقعی تولید می شود.

برای فراخوانی analogWrite() نیازی به استفاده از دستور pinMode() نیست.

در مدار شکل قبل یک LED به پایه 9 وصل کنید و برنامه زیر را روی آردوینو بریزید:

 

int ledPin = 9;      // LED connected to digital pin 9

 
int val = 0;         // variable to store the read value

 
void setup()
{
  
}

 
void loop()
{
  val = analogRead(A0);   // read the input pin
  analogWrite(ledPin, val / 4);  // analogRead values go from 0 to 1023, analogWrite values from 0 to 255
}
 

 

دستور analogRead() مقدار عددی بین 0 تا 1023 باز می گرداند و دستور analogWrite مقادیر بین 0 تا 255 را قبول می کند به همین دلیل یک تقسیم بر 4 به کار رفته است.

Top