شِفر (کود) جستجو

شِفر (کود) آردوینو و ویدیو برای یک صفحه‌کلید چهار دکمه‌ای

شِفر (کود) آردوینو و ویدیو برای یک صفحه‌کلید چهار دکمه‌ای

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

4 key flixable keypad

صفحه‌کلید چهار دکمه‌ای فرایند سیم‌کشی را ساده می‌کند، زیرا دارای یک اتصال مشترک است که تعداد کل سیم‌های مورد نیاز را کاهش می‌دهد. هر کلید از طریق پایه‌های مشخص‌شده به آردوینو متصل می‌شود، که امکان تعامل و کنترل آسان را فراهم می‌آورد. این راهنما سیم‌کشی، شِفر (کود) و رفتار مورد انتظار صفحه‌کلید را پوشش خواهد داد تا بتوانید پروژه را با موفقیت بازتولید کنید (در ویدئو در 02:30).

تشریح سخت‌افزار

اجزای اصلی این پروژه شامل یک صفحه‌کلید چهار کلیدی و یک برد آردوینو است. صفحه‌کلید دارای چهار دکمه است و هر دکمه از طریق دو سیم به آردوینو متصل می‌شود — یکی سیم مشترک و یکی سیم اختصاصی برای هر دکمه. این پیکربندی امکان اتصال‌های ساده را فراهم می‌کند و در عین حال شلوغی سیم‌ها را به حداقل می‌رساند.

آردوینو فشرده شدن دکمه‌ها را با استفاده از ورودی‌های دیجیتال تفسیر می‌کند و برای اطمینان از خوانش‌های پایدار به مقاومت‌های Pull-up داخلی متکی است. وقتی دکمه‌ای فشرده می‌شود، آن دکمه پایه متناظر را به زمین متصل می‌کند و این امکان را به آردوینو می‌دهد تا تغییر وضعیت را تشخیص دهد.

جزئیات مشخصات فنی

تولیدکنندهعمومی
شماره قطعهصفحه‌کلید 4-کلیدی
ولتاژ منطق/ورودی-خروجی5 ولت
ولتاژ تغذیه5 ولت
تعداد کلیدها۴
نوع پایه رایجفعال در سطح پایین
مقاومت دکمه1 kΩ (معمولی)
بستهبرد مدار چاپی انعطاف‌پذیر
یادداشت‌ها / انواعدر چندین چیدمان موجود است

  • هر دکمه به دو اتصال نیاز دارد: یکی برای خود دکمه و دیگری برای زمین مشترک.
  • استفاده از مقاومت‌های پول-آپ داخلی، سیم‌کشی را ساده می‌کند و تعداد قطعات را کاهش می‌دهد.
  • برای عملکرد صحیح، از اتصال پایه مشترک به زمین اطمینان حاصل کنید.
  • برای جلوگیری از قرائت‌های نادرست، فشارهای دکمه را در نرم‌افزار حذف جهش (debounce) کنید.
  • برای دریافت بازخورد، عملکرد دکمه را با یک خروجی ساده سریال آزمایش کنید.

دستورالعمل‌های سیم‌کشی

Arduino wiring for 4 key keypad
Arduino wiring for 4 key keypad

برای سیم‌کشی صفحه‌کلید چهار دکمه‌ای به آردوینو، مراحل زیر را دنبال کنید:

  • سیم کلید اول را به پایه وصل کنید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- آزمایش صفحه‌کلید

تصاویر

4 key flixable keypad
4 key flixable keypad
Arduino wiring for 4 key keypad
Arduino wiring for 4 key keypad
50-Arduino Code for 4 key keypad
زبان: C++
++
/*
 * 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);
}

مواردی که ممکن است به آن‌ها نیاز داشته باشید

منابع و مراجع

هنوز هیچ منبعی موجود نیست.

فایل‌ها📁

کتابخانه‌های آردوینو (zip)