ورودی و خروجی دیجیتال

 

 

 

 

pinMode()

این دستور عملکرد پین ها به صورت ورودی وخروجی را مشخص می کند. نگارش این دستور مانند زیر است:

 

pinMode(pin,mode);

که در آن pin بیانگر شماره پین مورد نظر است و mode از بین 3 حالت INPUT ,OUTPUT, INPUT_PULLUP انتخاب می شود که به ترتیب به معنی ورودی پول آپ شده ، خروجی و ورودی است. تفاوت ورودی پول آپ و ورودی معمولی در این است که در ورودی پول آپ اگر پین را به چیزی وصل نکنیم به طور پیش فرض مقدار آن HIGH در نظر گرفته می شود اما در ورودی معمولی هیچ مقدار پیش فرضی وجود ندارد که در برخی موارد ممکن است باعث ایجاد خطا شود که معمولا با ساختن پول آپ به کمک مقاومت قابل برطرف شدن است.

 

digitalWrite()

این دستور مقادیر HIGH و LOW  را به پینی که در دستور pinMode به صورت  OUTPUTانتخاب شد اختصاص می دهد. برای بردهای 5ولتی HIGH بیانگر 5 ولت است و برای بردهای 3.3 ولتی بیانگر 3.3 ولت است و LOW بیانگر 0 ولت یا GND است.

 

digitalWrite(pin, value)

pin بیانگر شماره پین که در pinMode انتخاب شد و value یکی از مقادیر HIGH یا LOW می باشد.

اگر پین را به صورت OUTPUT مشخص نکنید و یک LED به آن متصل کنید و آن را HIGH کنید نور آن بسیار کم خواهد بود چون در این حالت digitalWrite() به طور پیش فرض مقاومت پول آپ داخلی را فعال می کند که معمولا مقدار بزرگی است و مانع رسیدن مقدار کافی جریان به لامپ می شود.

برنامه زیر یک مثال ساده برای استفاده از این دو دستور است: (مثال Blink در آردوینو)

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

 
void setup()

{

  pinMode(ledPin, OUTPUT);      // sets the digital pin as output

}

 
void loop()

{

  digitalWrite(ledPin, HIGH);   // sets the LED on

  delay(1000);                  // waits for a second

  digitalWrite(ledPin, LOW);    // sets the LED off

  delay(1000);                  // waits for a second

}

 

 

در ضمن می توانید از پین های ورودی آنالوگ نیز به عنوان پین دیجیتال استفاده کنید کافیست در قسمت pin نام آنها یعنی A0,A1… را وارد کنید.

 

digitalRead()

این دستور مقدار ولتاژ اعمال شده به پین را به صورت HIGH برای 5 یا 3.3 ولت(بستگی به نوع برد دارد) و LOW برای 0 یا GND می خواند.

 

digitalRead(pin)

برای آشنایی با عملکرد این دستور برنامه زیر را وارد کنید و پین شماره 7 را با سیم یک بار به GND و یک بار به 5ولت متصل کنید. میبینید که LED متصل به پایه 13 (که معمولا روی تمام بردهای آردوینو وجود دارد) از ولتاژ اعمال شده به پایه 7 پیروی می کند.

 
int ledPin = 13; // LED connected to digital pin 13
int inPin = 7;   // pushbutton connected to digital pin 7
int val = 0;     // variable to store the read value

void setup()
{
  pinMode(ledPin, OUTPUT);      // sets the digital pin 13 as output
  pinMode(inPin, INPUT);      // sets the digital pin 7 as input
}

void loop()
{
  val = digitalRead(inPin);   // read the input pin
  digitalWrite(ledPin, val);    // sets the LED to the button's value
}

 

 

توجه کنید که اگر پین 7 را به هیچ ولتاژی متصل نکنید به طور تصادفی و متناوب مقدار آن بین HIGH و LOW تغییر می کند و برای جلوگیری از بروز این مشکل یا باید یک مقاومت پول آپ در مدار قرار دهید و یا در قسمت pinMode پارامتر INPUT_PULLUP را وارد نمایید.

Top