- ابزارآلات و آهنربا
-
ابزارآلات
- ابزار اندازه گیری (مولتیمتر، کولیس و . . .)
- ابزار سوراخکاری (مته، سه نظام، چهار نظام، پنج نظام و . . .)
- ابزار و تجهیزات کار (پیچ گوشتی، انبردست، سیمچین، پنس و . . .)
- برد بورد، فیبر خام و سوراخدار (فیبر مدار چاپی و PCB)
- پیچ و اسپیسر (پیچ و مهره رباتیک و اسپیسر پلاستیکی و فلزی)
- سیم و کابل (سیم افشان، فلت، باندی، کابل شارژ، پرینتر، و . . .)
- لحیمکاری (هویه، نوک هویه، پایه هویه، سیم لحیم، روغن لحیم و . . . )
- منبع تغذیه، باتری و جاباتری (باتری قلمی، نیم قلمی، کتابی و . . . )
-
ابزارآلات
- برد هوشمند
- پرینتر سه بعدی
- رباتیک و پروازی
- ماژول
- قطعات الکترونیک
- کیت الکترونیکی و انواع جعبه
- موتور
- اصناف مختلف
اتصال کلید فشاری به آردوینو
در این مطلب از بلاگ بهنام رباتیک با نحوه اتصال کلید فشاری به آردوینو آشنا خواهید شد؛ پس با ما همراه باشید
فهرست مطالب
لوازم مورد نیاز برای پروژه اتصال کلید فشاری به آردوینو
سیمکشی مدار پروژه اتصال کلید فشاری به آردوینو
در تصویر زیر نحوه سیمکشی مدار این پروژه آردوینو را میبینید.
نکاتی که حین سیمکشی باید مدنظر قرار دهید عبارتند از:
- اطمینان حاصل کنید که آردوینو به منبع نیرویی متصل نیست.
- دکمه فشاری را مانند تصویر، به وسط برد بورد بزنید.
- به یکی از پایههای دکمه، یک سیم وصل کنید (در صورت امکان مشکی) و آن را به پین اتصال به زمین (GND) آردوینو بزنید.
- پایههای بالا و پایین سمت چپ به یکدیگر و پایههای بالا و پایین سمت راست به یکدیگر وصل میشوند. اگر سیم اتصال به زمین را به سمت چپ زدهاید، سیم دیگر را به سمت راست بزنید. توجه نمایید که این سیمها نباید به هم وصل باشند. یک سیم دیگر هم به پین دیجیتالی وصل خواهد شد.
کدهای لازم برای پروژه اتصال کلید فشاری به آردوینو
کدهایی که در ادامه آمدهاند را کپی کرده و در نرمافزار Arduino IDE قرار دهید تا وضعیت دکمه فشاری در هر ثانیه به میزان 10 بار ثبت شود.
#define BUTTON_PIN 4
void setup()
{
Serial.begin(9600);
pinMode(BUTTON_PIN, INPUT_PULLUP);
}
void loop()
{
Serial.println(digitalRead(BUTTON_PIN));
delay(100);
}
توضیحات کد پروژه اتصال کلید فشاری به آردوینو
در خط اول کدهای این پروژه، برای پین دکمه از دستور #define استفاده میکنیم تا نیازی نباشد هر بار که میخواهیم از این پین بهره ببریم، عدد 4 را بنویسیم. با این کار فقط باید یک خط از کدها را ویرایش کنید.
#define BUTTON_PIN 4
در بخش Setup، کاری که انجام دادهایم این است که ارتباط سریال را برقرار کردهایم تا بتوانیم دادههای به دست آمده از دکمه را مشاهده کنیم.
void setup()
{
Serial.begin(9600);
با این روش، نحوه استفاده از پوش باتن در کدها تعریف میشود. لازم به ذکر است که در بخش void setup()، از تابع pinMode() با دو سلسله استفاده کردهایم؛ 1) عدد 4 جایگزین BUTTON_PIN شده و سپس حالت مدنظر ما برای پین ایجاد میشود.
pinMode(BUTTON_PIN, INPUT_PULLUP);
}
همزمانی که میخواهیم دادهها را از دکمه بگیریم، یک حالت ورودی را انتخاب میکنیم. سپس دو گزینه در اختیار خواهیم داشت؛ INPUT یا INPUT_PULLUP. از آن جایی که در مدار طراحی شده مقاومت نداریم، از INPUT_PULLUP بهره میبریم تا از مقاومت داخلی برد آردوینو استفاده کنیم.
حالا که دکمه به عنوان ورودی انتخاب شده، وارد تابع void loop() میشویم. در واقع این تابع چندین و چند مرتبه و به صورت نامحدود فعال خواهد شد.
void loop()
{
Serial.println(digitalRead(BUTTON_PIN));
برای دریافت دادههای دکمه، از تابع digitalRead() استفاده میکنیم که سلسله در آن پین دکمه میباشد. نتیجه این تابع یا HIGH و یا LOW خواهد بود. در اینجا به خاطر اینکه وضعیت مقاومت ما پولآپ است، وقتی دکمه فشار داده نشده، وضعیت HIGH خواهد بود و وقتی فشار داده شده، وضعیت آن LOW است.
در ادامه نتیجه تابع digitalRead() را در تابع Serial.printIn() میگذاریم تا به سادگی دادهها در سریال مانیتور نمایش داده شوند.
delay(100);
}
درست پس از چاپ شدن نتایج وضعیت دکمه، تابع delay() با تأخیر 100 میلیثانیهای را اضافه میکنیم. این یعنی در هر ثانیه 10 بار این فعالیت تکرار خواهد شد. سپس وقتی از void loop() بیرون میآییم، این تابع بارها و بارها اجرا میشود.
1
1
1
1
0
0
0
0
1
1
1
1
اینک میتوانید کدها را با وارد و آپلود کردن در نرمافزار Arduino IDE تست کنید.
در پایان سریال مانیتور را اجرا کنید و دکمه فشاری را چندین و چند بار بزنید تا خروجی کار مانند زیر شود.
#define BUTTON_PIN 4
void setup()
{
Serial.begin(9600);
pinMode(BUTTON_PIN, INPUT_PULLUP);
}
void loop()
{
byte buttonState = digitalRead(BUTTON_PIN);
if (buttonState == LOW) {
Serial.println("Button is pressed");
}
else {
Serial.println("Button is not pressed");
}
delay(100);
}
هر 100 میلیثانیه، یک خط با داده 0 یا 1 خواهید داشت.
همانطور که پیشتر توضیح دادیم، مقادیری که از تابع digitalRead() به دست میآید، یا HIGH و یا LOW است ولی وقتی آن را از طریق سریال مانیتور میفرستید، به 1 (HIGH) و 0 (LOW) تبدیل میشود.
بر این اساس، وقتی دکمه فشار داده نشده، عدد 1 و وقتی دکمه فشار داده شده، عدد 0 را خواهید دید.
Button is not pressed
Button is not pressed
Button is not pressed
Button is not pressed
Button is pressed
Button is pressed
Button is pressed
Button is not pressed
Button is not pressed