Digital Read Serial

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

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

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

مدار

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

سه عدد سیم را به برد آردوینو وصل کنید. دو سیم اول یعنی سیم قرمز و مشکی را به دو ردیف بلند عمودی در کناره ی برد بورد وصل کنید تا دسترسی به 5 ولت و زمین را تأمین کنند. سومین سیم از پین دیجیتال 2 به یکی از پایه های کلید فشاری وصل می شود. همان پایه کلید را از طریق یک مقاومت pull down (در اینجا 10 کیلو اهمی) به زمین وصل کنید. پایه ی دیگر کلید را به ولتاژ 5 ولت وصل کنید.

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

اگر شما پین ورودی/خروجی دیجیتال را از همه چیز قطع کنید، LED ممکن است به صورت بی نظم چشمک بزند. این مسئله به این دلیل است که ورودی شناور است. LED یک ارتباط ثابت با Vcc یا زمین ندارد و بصورت تصادفی مقدار آن HIGH یا LOW می شود. به همین دلیل است که شما نیاز به اتصاب مقاومت pull down به زمین دارید.

شماتیک

کد

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

Serial.begin(9600);

بعد پین دیجیتال 2 را به عنوان ورودی تنظیم می کنید، این پین، خروجی را از کلید خواهد خواند:

pinMode(2,INPUT);

الان setup شما کامل شده است، وارد تابع loop() برنامه ی خود شوید. وقتی کلید فشار داده می شود، 5 ولت آزادانه وارد مدار شما می شود و زمانی که فشار داده نشده است، پین ورودی با یک مقاومت 10 کیلو اهمی به زمین وصل خواهد شد. این یک ورودی دیجیتال است، به این معنی که کلید فقط می تواند یک وضعیت روشن (توسط آردوینو به عنوان HIGH یا یک در نظر گرفته شده) یا یک وضعیت خاموش (توسط آردوینو به عنوان LOW یا صفر در نظر گرفته شده) داشته باشد.

اولین چیزی که شما در تابعloop() برنامه لازم است انجام دهید این است که متغیری را جهت نگهداری اطلاعاتی که از سوییچ می آید، تعریف کنید. زمانی که اطلاعات به سمت کلید می آید یا صفر است یا یک. شما می توانید از نوع int استفاده کنید. این متغیر راsensorValue بنامید، و برابر با آنچه که از پین دیجیتال 2 خوانده می شود، قرار دهید. شما همه ی اینها را فقط با یک دستور می توانید انجام دهید:

int sensorValue = digitalRead(2);

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

Serial.println(sensorValue);

اکنون وقتی شما سریال مانیتور را در محیط آردوینو باز می کنید، اگر کلید شما باز باشد رشته ای از صفر را، و اگر کلید شما بسته باشد رشته ای از یک را خواهید دید.

/*
  DigitalReadSerial
 Reads a digital input on pin 2, prints the result to the serial monitor
 
 This example code is in the public domain.
 */


// digital pin 2 has a pushbutton attached to it. Give it a name:
int pushButton = 2;

// the setup routine runs once when you press reset:
void setup() {
  // initialize serial communication at 9600 bits per second:
  Serial.begin(9600);
  // make the pushbutton's pin an input:
  pinMode(pushButton, INPUT);
}

// the loop routine runs over and over again forever:
void loop() {
  // read the input pin:
  int buttonState = digitalRead(pushButton);
  // print out the state of the button:
  Serial.println(buttonState);
  delay(1);        // delay in between reads for stability
}