این آموزش بخشی است از: صفحه کلیدها
تمام ویدیوهای مربوط به صفحهکلید اینجا فهرست شدهاند.
شِفر (کود) آردوینو و ویدیو برای یک صفحهکلید چهار دکمهای
در این آموزش یاد میگیریم چگونه از یک صفحهکلید چهارکلیدی با آردوینو استفاده کنیم. این پروژه بهویژه برای کاربردهایی مفید است که به چند دکمه نیاز دارند اما میخواهند تعداد سیمها را به حداقل برسانند. با اتصال صفحهکلید بهصورت خاص میتوانیم با تنها 5 سیم بهجای 8 سیم یک پیکربندی کارا بهدست آوریم.

صفحهکلید چهار دکمهای فرایند سیمکشی را ساده میکند، زیرا دارای یک اتصال مشترک است که تعداد کل سیمهای مورد نیاز را کاهش میدهد. هر کلید از طریق پایههای مشخصشده به آردوینو متصل میشود، که امکان تعامل و کنترل آسان را فراهم میآورد. این راهنما سیمکشی، شِفر (کود) و رفتار مورد انتظار صفحهکلید را پوشش خواهد داد تا بتوانید پروژه را با موفقیت بازتولید کنید (در ویدئو در 02:30).
تشریح سختافزار
اجزای اصلی این پروژه شامل یک صفحهکلید چهار کلیدی و یک برد آردوینو است. صفحهکلید دارای چهار دکمه است و هر دکمه از طریق دو سیم به آردوینو متصل میشود — یکی سیم مشترک و یکی سیم اختصاصی برای هر دکمه. این پیکربندی امکان اتصالهای ساده را فراهم میکند و در عین حال شلوغی سیمها را به حداقل میرساند.
آردوینو فشرده شدن دکمهها را با استفاده از ورودیهای دیجیتال تفسیر میکند و برای اطمینان از خوانشهای پایدار به مقاومتهای Pull-up داخلی متکی است. وقتی دکمهای فشرده میشود، آن دکمه پایه متناظر را به زمین متصل میکند و این امکان را به آردوینو میدهد تا تغییر وضعیت را تشخیص دهد.
جزئیات مشخصات فنی
| تولیدکننده | عمومی |
|---|---|
| شماره قطعه | صفحهکلید 4-کلیدی |
| ولتاژ منطق/ورودی-خروجی | 5 ولت |
| ولتاژ تغذیه | 5 ولت |
| تعداد کلیدها | ۴ |
| نوع پایه رایج | فعال در سطح پایین |
| مقاومت دکمه | 1 kΩ (معمولی) |
| بسته | برد مدار چاپی انعطافپذیر |
| یادداشتها / انواع | در چندین چیدمان موجود است |
- هر دکمه به دو اتصال نیاز دارد: یکی برای خود دکمه و دیگری برای زمین مشترک.
- استفاده از مقاومتهای پول-آپ داخلی، سیمکشی را ساده میکند و تعداد قطعات را کاهش میدهد.
- برای عملکرد صحیح، از اتصال پایه مشترک به زمین اطمینان حاصل کنید.
- برای جلوگیری از قرائتهای نادرست، فشارهای دکمه را در نرمافزار حذف جهش (debounce) کنید.
- برای دریافت بازخورد، عملکرد دکمه را با یک خروجی ساده سریال آزمایش کنید.
دستورالعملهای سیمکشی

برای سیمکشی صفحهکلید چهار دکمهای به آردوینو، مراحل زیر را دنبال کنید:
- سیم کلید اول را به پایه وصل کنید
2روی آردوینو. - سیم کلید دوم را به پایه متصل کنید
3. - سیم سوم کلید را به پایه متصل کنید.
4. - سیم کلید چهارم را به پایه وصل کنید
5. - سیم مشترک صفحهکلید را به پایه زمین (GND) آردوینو وصل کنید.
اطمینان حاصل کنید هر سیم را محکم وصل کنید تا از هرگونه اتصال شل جلوگیری شود. اگر با مشکلی مواجه شدید، هر اتصال را با چینش پایهها که در ویدئو نشان داده شده مقایسه کنید (در ویدئو در 04:15).
نمونههای شِفر (کود) و راهنمای گامبهگام
قطعه شِفر (کود) زیر پایههای کیپد را مقداردهی اولیه میکند و آنها را بهعنوان ورودی تنظیم میکند:
#define key1 2 //connect wire 1 to pin 2
#define key2 3 //connect wire 2 to pin 3
#define key3 4 //connect wire 3 to pin 4
#define key4 5 //connect wire 4 to pin 5
void setup() {
Serial.begin(9600);
pinMode(key1, INPUT_PULLUP); // set pin as input
pinMode(key2, INPUT_PULLUP); // set pin as input
pinMode(key3, INPUT_PULLUP); // set pin as input
pinMode(key4, INPUT_PULLUP); // set pin as input
}
در شِفر (کود) بالا، هر کلید با شماره پایه متناظر تعریف شده است. اینINPUT_PULLUPاین حالت تضمین میکند که پایهها زمانی که فشرده نشدهاند مقدار high را خوانده و تشخیص فشردن دکمه را سادهتر میکند.
تابع loop وضعیت هر کلید را میخواند و هنگام فشرده شدن پیام متناظر را چاپ میکند:
void loop() {
int key1S = digitalRead(key1); // read if key1 is pressed
int key2S = digitalRead(key2); // read if key2 is pressed
int key3S = digitalRead(key3); // read if key3 is pressed
int key4S = digitalRead(key4); // read if key4 is pressed
if(!key1S) {
Serial.println("key 1 is pressed");
}
if(!key2S) {
Serial.println("key 2 is pressed");
}
// Additional code for key3 and key4...
delay(100);
}
این بخش از شِفر (کود) وضعیت هر کلید را بررسی میکند و هنگامی که کلیدی فشرده شود، پیامی را در نمایشگر مسلسل چاپ میکند. اینdelay(100)امکان ایجاد مکانیسم ضدنوسان (debounce) را فراهم میکند تا فشارهای متعدد در فواصل زمانی کوتاه ثبت نشوند.
نمایش / چه انتظاری داشته باشید
پس از سیمکشی صحیح و آپلود شِفر (کود) روی آردوینو، باید انتظار داشته باشید که نمایشگر مسلسل پیامهایی را نمایش دهد که نشان میدهند کدام کلید فشرده شده است. با فشردن کلید 1 عبارت کلید 1 فشرده شده است نمایش داده میشود و برای سایر کلیدها نیز به همین صورت خواهد بود. اگر پیامها نمایش داده نمیشوند، سیمکشی را بررسی کنید و مطمئن شوید سیم مشترک به زمین متصل است.
مراقب اتصالات معکوس باشید، زیرا این میتواند به رفتار غیرمنتظره منجر شود. مطمئن شوید پایههای استفادهشده با آنهایی که در شِفر (کود) شما تعریف شدهاند مطابقت دارند (در ویدیو در 06:45).
برچسبهای زمانی ویدئو
- 00:00- مقدمه
- ۰۲:30- توضیح سیمکشی
- 04:15- تخصیص پایهها
- 06:45- آزمایش صفحهکلید
این آموزش بخشی از: صفحه کلیدها
- استفاده از کیپد 4x3 با آردوینو
- شِفر (کود) آردوینو و ویدئو: کیپد مشکی ماتریسی 4x4
- Build a Simple Electronic Lock with Keypad and LCD Using Arduino
- Controlling an 8-channel relay with a 4x3 keypad
- نحوه استفاده از صفحهکلید نرمافزاری ۴×۴ با آردوینو
- How to Use a 5x4 20-Key Keypad with Arduino to Detect Strings
- Lesson 67: Controlling an 8-Channel Relay with a Keypad Using Arduino
- شیلد صفحۀ کلیدها LCD 1602: شِفر (کود) اساسی
++
/*
* This is the Arduino code for a 4-key keypad.
* Watch the video for details and demo: https://youtu.be/BiOh_Z2N7kk
*
* Written by Ahmad Shamshiri for the Robojax Video channel,
get code, wiring diagram and resources at www.Robojax.com/RJT37
* Date: December 28, 2017, in Ajax, Ontario, Canada
* Permission granted to share this code, given that this
* note is kept with the code.
* Disclaimer: This code is "AS IS" and for educational purposes only.
* This code has been downloaded from https://robojax.com
// Recorded December 28, 2017 for Robojax.com
#define key1 2 //connect wire 1 to pin 2
#define key2 3 //connect wire 2 to pin 3
#define key3 4 //connect wire 3 to pin 4
#define key4 5 //connect wire 4 to pin 5
void setup() {
Serial.begin(9600);
pinMode(key1, INPUT_PULLUP);// set pin as input
pinMode(key2, INPUT_PULLUP);// set pin as input
pinMode(key3, INPUT_PULLUP);// set pin as input
pinMode(key4, INPUT_PULLUP);// set pin as input
}
void loop() {
int key1S = digitalRead(key1);// read if key1 is pressed
int key2S = digitalRead(key2);// read if key2 is pressed
int key3S = digitalRead(key3);// read if key3 is pressed
int key4S = digitalRead(key4);// read if key4 is pressed
// Code written for Robojax.com video tutorial
if(!key1S){
Serial.println("key 1 is pressed");
}
if(!key2S){
Serial.println("key 2 is pressed");
}
if(!key3S){
Serial.println("key 3 is pressed");
}
if(!key4S){
Serial.println("key 4 is pressed");
}
delay(100);
}
مواردی که ممکن است به آنها نیاز داشته باشید
-
آمازون
-
علیاکسپرسکیفیت نرم را از علیاکسپرس خریداری کنیدs.click.aliexpress.com
منابع و مراجع
هنوز هیچ منبعی موجود نیست.