به نام خدا

آموزش مثال ها | اطلاعات پایه | فوت وفن ها | پیوندها

Examples > Digital

Input Pullup Serial

این مثال استفاده از پارامتر INPUT_PULLUP را با دستور  pinMode() شرح می دهد. این پارامتر با برقرار کردن یک ارتباط سریال بین آردوینو و کامپیوتر شما از طریق USB وضعیت یک سوییچ را بررسی می کند.

به علاوه، زمانی که ورودی HIGH است، LED متصل به پین 13 که بر روی برد موجود است، روشن خواهد شد؛ وقتی ورودی LOW است، LED خاموش خواهد شد.

سخت افزار مورد نیاز

  • برد آردوینو
  • سوییچ دو وضعیتی، کلید یا سوییچ چند وضعیتی
  • بردبورد
  • سیم بردبوردی

مدار

این تصویر با استفاده از نرم افزار Fritzing ایجاد شده است. برای مثال های بیشتر مدار به صفحه پروژه های Fritzing مراجعه نمایید.

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

کلیدهای فشاری یا سوییچ ها، زمانی که آنها را می فشارید، دو نقطه را در مدار به یکدیگر وصل می کنند. زمانی که کلید فشاری باز(فشرده نشده) است، هیچ اتصالی بین دو پایه کلید فشاری وجود ندارد. چون pull-up داخلی روی پین 2 فعال است و به 5 ولت متصل است، زمانی که کلید باز است، ورودی HIGH را می خوانیم. وقتی کلید بسته شد، آردوینو LOW را می خواند، چون اتصال کامل به زمین برقرار است.

شماتیک

کد

در برنامه زیر، اولین کاری که باید انجام دهید، شروع یک ارتباط سریال بین آردوینو و کامپیوترتان، با سرعت 9600 بیت در ثانیه، در تابع Setup خواهد بود. این عمل با دستور زیر انجام می پذیرد:

Serial.begin(9600);

سپس پین 2 را به عنوان ورودی همراه با مقاومت pull-up داخلی تعریف می کنید.

pinMode(2,INPUT_PULLUP);

خط زیر، پین 13 را که به LED موجود روی برد متصل است، به عنوان خروجی تعریف می کند.

pinMode(13, OUTPUT);

اکنون که تابع Setup شما کامل شد، به تابع Loop برنامه بروید. زمانی که کلید شما فشرده نیست، مقاومت pull-up داخلی، به 5 ولت متصل می گردد. این موجب می شود که آردوینو "1" یا HIGH را گزارش کند. زمانی که کلید فشرده شده است، پین آردوینو به زمین متصل می شود و این مسئله موجب می شود که آردوینو یک "0" یا LOW را گزارش کند.

اولین کاری که باید در تابع Loop برنامه خود انجام دهید، تعریف یک متغیر جهت نگهداری اطلاعاتی است که از سوییچ می آید. زمانی که اطلاعات سوییچ "1" یا "0" باشد، می توانید از نوع داده ای int استفاده کنید. این متغیر را sensorValue بنامید و آن را برابر آنچه که از پین 2 دیجیتال می خوانید قرار دهید. شما می توانید کلی این عملیات را تنها با یک خط کد زیر انجام دهید.

int sensorValue = digitalRead(2);

زمانی که آردوینو ورودی را می خواند، آن را به عنوان یک مقدار دهدهی در کامپیوتر چاپ می کند. شما می توانید این کار را در خط آخر کد، با دستور Serial.println() انجام دهید:

Serial.println(sensorValue, DEC);

حال، زمانی که در محیط برنامه نویسی آردوینو، Serial Monitor را باز می کنید، رشته ای از "0" ها را در زمان بسته بود سوییچ، و یا رشته ای از "1" ها را در زمان باز بودن سوییچ خواهید دید.

LED متصل به پین 13 زمانی که سوییچ HIGH است روشن و زمانی که سوییچ LOW است، خاموش می شود.

/*
 Input Pullup Serial
 
 This example demonstrates the use of pinMode(INPUT_PULLUP). It reads a
 digital input on pin 2 and prints the results to the serial monitor.
 
 The circuit:
 * Momentary switch attached from pin 2 to ground
 * Built-in LED on pin 13
 
 Unlike pinMode(INPUT), there is no pull-down resistor necessary. An internal
 20K-ohm resistor is pulled to 5V. This configuration causes the input to
 read HIGH when the switch is open, and LOW when it is closed.
 
 created 14 March 2012
 by Scott Fitzgerald
 
 http://www.arduino.ir/Tutorial/InputPullupSerial
 
 This example code is in the public domain
 
 */


void setup(){
  //start serial connection
  Serial.begin(9600);
  //configure pin2 as an input and enable the internal pull-up resistor
  pinMode(2, INPUT_PULLUP);
  pinMode(13, OUTPUT);

}

void loop(){
  //read the pushbutton value into a variable
  int sensorVal = digitalRead(2);
  //print out the value of the pushbutton
  Serial.println(sensorVal);
 
  // Keep in mind the pullup means the pushbutton's
  // logic is inverted. It goes HIGH when it's open,
  // and LOW when it's pressed. Turn on pin 13 when the
  // button's pressed, and off when it's not:
  if (sensorVal == HIGH) {
    digitalWrite(13, LOW);
  }
  else {
    digitalWrite(13, HIGH);
  }
}


به لینک های زیر مراجعه کنید:

  • setup()
  • loop()
  • pinMode()
  • digitalRead()
  • delay()
  • int()
  • serial()
  • DigitalPins()

  • Blink Without Delay: چشمک زدن یک چراغ بدون استفاده از تابع delay() .
  • Button: استفاده از یک دکمه فشاری جهت کنترل یک چراغ.
  • Debounce: وضعیت یک دکمه فشاری که نویزگیری شده را بخوانید.
  • Button State Change: شمارش تعداد فشرده شدن یک دکمه.
  • Input Pullup Serial: استفاده از INPUT_PULLUP را در فرمان pinMode() نشان می دهد.
  • Tone: یک موسیقی را با بلندگوی Piezo پخش کنید.
  • Pitch follower: یک صدا را روی بلندگوی piezo و براساس مقدار ورودی آنالوگ، پخش کنید.
  • Simple Keyboard: یک صفحه کلید موزیکال 3 کلیده با استفاده از سنسورهای Force و یک بلندگوی Piezo.
  • Tone4: آهنگها را روی چند بلندگو با استفاده مکرر از فرمان tone() پخش کنید.