Momentary & ON/OFF KEYx MODULE
ماژول کلید لحظه ای و خاموش و روشن
ورودی / خروجی
کلید
کلید
کلید
کلید
کلید
کلید چیست؟
کلید یک قطعه است که باز و بسته بودن یک مدار الکتریکی را کنترل میکند. آنها اجازه جاری شدن جریان در یک مدار را میدهند . کلیدها قطعات حیاتی هر مدار هستند که نیاز به تعامل و کنترل توسط کاربر دارند.
یک کلید تنها میتواند در یک از دو حالت وجود داشته باشد: باز (خاموش) یا بسته (روشن)
در حالت خاموش، یک کلید شبیه یک شکاف در مدار به نظر میآید. در واقع به نظر میرسد یک مدار باز است که از جاری شدن جریان جلوگیری میکند.
در حالت روشن، کلید درست مانند یک سیم کاملا رسانا ( اتصال کوتاه) است. مدار را میبندد، سیستم را روشن کرده و اجازه میدهد جریان از بقیه سیستم عبور کند .به مدار زیر دقت کنید متوجه مفهوم جملات بالا می شوید.
دیاگرام یک مدار با LED، مقاومت و یک کلید. وقتی کلید بسته است، جریان جاری است و LED بدرخشد. در غیر این صورت، جریان جاری نیست و به LED توانی نمیرسد.
انواع مختلفی از کلیدها وجود دارد: تاگل، چرخشی، DIP، دکمه فشاری، راکر، غشایی و… هرکدام از انواع کلیدها مجموعه ای از خصوصیات منحصر به فرد دارند که از بقیه متفاوت است. خصوصیاتی مانند چگونگی تغییر وضعیت کلید، یا اینکه کلید چند مدار را میتواند کنترل کند. در ادامه، به برخی از ویژگیهای اساسی کلید ها اشاره میکنیم.
چگونگی عملکرد کلید ها
برای تغییر از یک حالت به حالت دیگر کلید، باید نوعی اقدام فیزیکی برای تغییر وضعیت کلید انجام شود. چگونگی عملکرد کلید ، یکی از از خصوصیات مشخص کننده آن است.
نمونههایی از انواع کلید. کلید فشاری، راکر، کشویی و مغناطیسی
عملکرد کلید میتواند فشار دادن، جابجا کردن کشویی، تکان دادن، چرخاندن، پرتاب، کشیدن، چرخش کلید، گرما، مغناطیسی کردن، ضربه زدن، زبان زدن (licking) و هر عمل فیزیکی که باعث اتصال مکانیکی در داخل کلید برای اتصال یا جدا کردن میشود.
لحظهای در برابر دائمی
تمام کلیدها به یکی از دو دسته لحظه ای و دائمی تقسیم میشوند.
کلیدهای دائمی : مانند کلیدهای روشنایی روی دیوار- در یک وضعیت میمانند تا زمانی که در حالت جدید قرار گیرند و در حالت جدید میمانند تا به روی حالت دیگر قرار گیرند. همچنین ممکن است این کلیدها، کلید تاگل یا روشن/خاموش نامگذاری شوند.
کلیدهای لحظه ای : خیلی ساده بگیم تا زمانی که فشار داده شوند باعث عبور جریان و یا روشن شدن لامپ میشوند و وقتی رستتون را برداید خاموش میشن. مثل کلید بوق ماشین در نظر بگیرید. بصورت علمی تر تنها در زمانی که فعال هستند (مثلا فشار داده شوند.) عمل میکنند، اگر فعال نباشند، در حالت خاموش باقی میمانند. صفحه کلید یا کی بود کامپیوتر !
هشدار مفهومی! بیشتر کلیدهایی که به عنوان دکمه نام میبریم، در دسته لحظه ای هستند. فعال کردن دکمه معمولا به معنی فشار آوردن روی آن به نحوی است که فقط یک کنترل لحظه ای (یک عمل لحظه ای مثل بوق زدن ماشین) به نظر آید. در این آموزش وقتی درباره دکمهها صحبت میکنیم، منظور کلید فشاری لحظه ای است.
نحوه نصب به مدار
همانند بسیاری از قطعات، پایههای کلید به صورت نصب سطحی (SMD) یا حالت پایه دار است. کلیدهای پایهدار معمولا سایز بزرگتری دارند. برخی ممکن است برای قرار گرفتن روی برد بورد برای نمونه سازی آسان طراحی شده باشند.
این دکمه های تکتایل پایهدار هستند و به خوبی روی برد بورد قرار میگیرند. مناسب برای نمونه سازی.
کلیدهای SMD کوچکتر از PTHها هستند و روی PCB قرار میگیرند. معمولا کلیدهای SMD برای تحمل نیروی وارد بر کلیدهای پایهدار ساخته نشدهاند. پس با آرامش با این نوع کلید ها رفتار کنید.
پلها و حالتها، باز و بسته
کلید باید حداقل دو پایانه داشته باشد، یکی برای وارد شدن جریان (به طور بالقوه) و یکی برای خارج شدن (به طور بالقوه). این سادهترین نسخه یک کلید را توصیف میکند. در اغلب اوقات، کلید بیش از دو پایه دارد. این جایی است که دانستن تعداد پل و حالت، ضروری است.
تعداد پلها در کلید تعیین میکند کلید چند مدار جداگانه را میتواند کنترل کند. بنابراین کلید تک پل تنها یک مدار را کنترل میکند. یک کلید 4 پل میتواند 4 مدار متفاوت را به طور جداگانه کنترل کند.
تعداد حالات بیان میکند که یک کلید میتواند چند وضعیت داشته باشد. به عنوان مثال به کلید بعضی سشوارها دقت کنید سه حالت دارند: خاموش، سرعت کم و سرعت خیلی زیاد.
با دانستن اینکه هر کلید چند پل و اتصال دارد، میتوان به طور خاص طبقهبندی انجام داد. معمولا کلیدها یا به صورت تک پل، تک حالت” یا “تک پل، دوحالت” و یا “دو پل، دو حالت” هستند که به اختصار به ترتیب SPST، DPST و DPDT شناخته میشوند.
کلید تک پل تک حالت SPST
یک کلید تک پل تک حالت (SPST) سادهترین حالت کلید است. یک ورودی و یک خروجی دارد. SPSTها برای کلیدهای روشن-خاموش بهترین انتخابند. همچنین آنها یک شکل بسیار معمول از کلیدهای دائمی هستند. کلیدهای SPST تنها نیاز به دو پایانه دارند.
نکته: کلید تک پل تک حالت SPST مخفف single pole single throw است.
نماد مداری کلید SPST در حالت خاموش، یک کلید راکر دائمی SPST پایهدار با زاویه راست.
کلید SPDT
یکی دیگر از کلیدهای معمول، کلید نوع SPDT است. SPDTها سه پایانه دارند. یک پایه مشترک و دو پایه که برای اتصال به پایه مشترک هستند. SPDTها برای انتخاب بین دو منبع توان و هر جایی که لازم است از یک ورودی به دوجا با انتخاب ما بره مناسب هستند. اکثر کلیدهای کشویی ساده از انواع SPDT هستند. کلید SPDTهای معمولا باید سه پایه باشند.
نکته: بسته به موقعیت، SPDT میتواند با متصل کردن یک حالت کلید به صورت SPST نیز عمل کند.
کلید DPDT
افزودن یک پل به SPDT، کلید دو پل دو حالته (DPDT) را میسازد. اساسا دو کلید SPDT میتواند دو مدار جدا را کنترل کند. DPDTها باید 6 پایانه داشته باشند.
کلید XPYT
کلیدهای بیش از دو پل و دو حالت خیلی معمول نیستند، اما وجود دارند. (همه آنها شکل عجیب با اتصالات پیچیده دارند). در حالات قبل وقتی یک یا دو پل/حالت داشتیم، تعداد را به صورت اختصار در ابتدا میگفتیم. در اینجا به طور مثال کلید 4PDT است. کلید 4PDT میتواند 4 مدار جداگانه را کنترل کند. برای هر مدار دو موقعیت.
نماد مداری یک 4PDT بزرگ و یک کلید تاگل 4PDT با حجم بزرگ.
نرمال باز/بسته
وقتی یک کلید در حالت عادی یا اولیه باعث عبور جریان الکتریکی بشه بهش میگن نورمالی کلوز یا نرمان بسته یا NC و اگر در حالت اولیه بدون دست زدن به کلید در حالت خاموش یا اتصال باز باشه و مسیر جریان را ببنده بهش میگن نرمالی اپن یا NO یا در شما بگین نرمال باز.
کلید لحظهای
کلیدهای لحظه ای کلیدهایی هستند که تا زمانی فعالند که در حالت عمل (فشرده شدن، نگه داشته شده، مغناطیسی شده و غیره) قرار دارند . اغلب کلیدهای لحظهای بهترین انتخاب برای موارد ورودی توسط کاربر هستند. کلید های صفحه کلید کامپیوتر بهرین مثال میتونه باشه.
نمونههایی از کلید های لحظهای:
دکمه فشاری
کلید های دکمه فشاری، کلید های لحظهای کلاسیک هستند. در همه مدل موجودند: بزرگ، کوچک، رنگی، درخشان (زمانی که یک LED درون دکمه میدرخشد). ممکن است به صورت پایهدار، نصب سطحی یا حتی نصب روی قاب باشند.
صفحه کلید ماتریسی
آرایه بزرگی از دکمههای لحظه ای، مانند کیبوردتان یا دستههای کوچکتر مانند کیپدها، معمولا همه کلیدها به صورت یک ماتریس بزرگ مرتب شدهاند. هر دکمه روی پد یک سطر و ستون دارد. این نیازمند پردازش زیاد در میکروکنترلر هنگام فشرده شدن دکمهها است، اما بخش بزرگی از پایههای I/O را آزاد میکند
کلید های مغناطیسی
کلید های مغناطیسی وقتی در معرض حضور میدان مغناطیسی قرار میگیرند، باز یا بسته میشوند.
یک جفت کلید مغناطیسی. بدون ایزولاسیون و با ایزولاسیون
کلیدهای دائمی
کلیدهای دائمی در حالت خود باقی میمانند تا در حالت دیگری قرار گیرند. کافی است به نزدیکترین دیوار نگاه کنید تا یک کلید دائمی ببینید. چراغهای شما را کنترل میکنند. کلیدهای دائمی برای تنظیم و حفظ حالت مناسب هستند، مانند روشن و خاموش کردن توان.
مثالهای کلید دائمی
اگر نیاز به یک کلید روشن/خاموش ساده بدون مشکل و یا به دنبال کلید سلکتور هستید، کلیدهای کشویی میتوانند مناسب باشند. این کلیدها یک برآمدگی کوچک دارند که از کلید خارج شده است و به صورت کشویی در طول بدنه کلید حرکت میکند و میتواند دو یا چند وضعیت داشته باشد. شما معمولا کلیدهای کشویی را در حالت SPDT با DPDT میبینید. ترمینال مشترک معمولا در وسط قرار دارد و میتواند دو وضعیت
داشته باشد.
چند مثال از کلیدهای کشویی: یک کلید کشویی کوچک، یک کلید کشویی SMD و یک کلید کشویی DPDT به صورت SMD
کلید تاگل
کلیدهای تاگل دارای یک اهرم بلند هستند که جابجا میشوند. با حرکت آنها به موقعیت جدید، کلیدهای تاگل تغییر حالت میدهند.
یک نمونه کلید تاگل
کلید DIP یا دیپ سوئیچ
کلیدهای DIP، کلیدهای پایهدار هستند که در الگوی یکسان تراشه DIP پایهدار طراحی شدهاند و میتوانند روی برد بورد، در وسط بردبورد، قرار گیرند.
کلید هشت حالته DIP، برای تنظیم دستی هشت چیز.
این کلیدها معمولا آرایهای هشت تایی یا بیشتر از کلیدهای SPST، با اهرمهای کوچک کشویی، هستند. در قدیم برای محاسبات زیاد استفاده میشدند. ولی هنوز هم قابل استفاده برای تنظیم دستگاه از طریق سختافزار هستند.
شستی های فشاری وضعیت (Latch)
تمام دکمههای فشاری لحظهای نیستند. برخی دکمههای فشاری وضعیت خود را تا زمانی که دوباره فشرده شوند حفظ میکنند. به عنوان مثال، این دکمهها را در کلیدهای STOP/START موتورهای بزرگ در کارخانه ها میتوان یافت.
سایر کلیدها
ما تعداد زیادی از انواع کلیدهای دائمی را پوشش دادیم. سوئیچهای شبه کلید، برای زمانی اسا که نمیخواهید کسی روبات قاتل شما را روشن کند. در پشت تلفن های قدیمی از این نوع کلید میتونید ببینید. کلیدهای چرخشی شبیه کلیدهای روی مولتیمتر، یک ورودی منحصر به فرد برای دستگاه ایجاد میکنند، به ویژه زمانی که نیاز به تعداد حالات زیادی داریم.
لیست المان های NSE-KEYx
Quantity | Code | Symbol |
---|---|---|
1 | KEY1 : Push Button 6x6 KEY2 : Push Button 12x12 KEY3 : Micro Limit Switch KEY4 : Open Roller Switch KEY5 : Mini Push Switch 8×8 Ext… | S |
3pin | 1x3 SIL Right-Angle Male | Pin Header |
3cm x 2cm | Single Side with Solder Mask and Helper | PCB |
/**
Arduino Digital Alarm Clock
bY: Farhad Nikkhah
https://www.NikiSite.com
https://www.nikisite.com/product/nse-7sa4/
https://www.nikisite.com/product/nse-rmds/
https://www.nikisite.com/product/nse-keyx/
*/
//==========================================================================================
#include
#include "Button.h"
#include "AlarmTone.h"
#include "Clock.h"
#include "config.h"
const int COLON_PIN = 13;
const int SPEAKER_PIN = A3;
Button hourButton(A0);
Button minuteButton(A1);
Button alarmButton(A2);
AlarmTone alarmTone;
Clock clock;
SevSeg sevseg;
enum DisplayState {
DisplayClock,
DisplayAlarmStatus,
DisplayAlarmTime,
DisplayAlarmActive,
DisplaySnooze,
};
DisplayState displayState = DisplayClock;
long lastStateChange = 0;
void changeDisplayState(DisplayState newValue) {
displayState = newValue;
lastStateChange = millis();
}
long millisSinceStateChange() {
return millis() - lastStateChange;
}
void setColon(bool value) {
digitalWrite(COLON_PIN, value ? LOW : HIGH);
}
//==========================================================================================
void displayTime() {
DateTime now = clock.now();
bool blinkState = now.second() % 2 == 0;
sevseg.setNumber(now.hour() * 100 + now.minute());
setColon(blinkState);
}
//==========================================================================================
void clockState() {
displayTime();
if (alarmButton.read() == Button::RELEASED && clock.alarmActive()) {
// Read alarmButton has_changed() to clear its state
alarmButton.has_changed();
changeDisplayState(DisplayAlarmActive);
return;
}
if (hourButton.pressed()) {
clock.incrementHour();
}
if (minuteButton.pressed()) {
clock.incrementMinute();
}
if (alarmButton.pressed()) {
clock.toggleAlarm();
changeDisplayState(DisplayAlarmStatus);
}
}
//==========================================================================================
void alarmStatusState() {
setColon(false);
sevseg.setChars(clock.alarmEnabled() ? " on" : " off");
if (millisSinceStateChange() > ALARM_STATUS_DISPLAY_TIME) {
changeDisplayState(clock.alarmEnabled() ? DisplayAlarmTime : DisplayClock);
return;
}
}
//==========================================================================================
void alarmTimeState() {
DateTime alarm = clock.alarmTime();
sevseg.setNumber(alarm.hour() * 100 + alarm.minute(), -1);
if (millisSinceStateChange() > ALARM_HOUR_DISPLAY_TIME || alarmButton.pressed()) {
changeDisplayState(DisplayClock);
return;
}
if (hourButton.pressed()) {
clock.incrementAlarmHour();
lastStateChange = millis();
}
if (minuteButton.pressed()) {
clock.incrementAlarmMinute();
lastStateChange = millis();
}
if (alarmButton.pressed()) {
changeDisplayState(DisplayClock);
}
}
//==========================================================================================
void alarmState() {
displayTime();
if (alarmButton.read() == Button::RELEASED) {
alarmTone.play();
}
if (alarmButton.pressed()) {
alarmTone.stop();
}
if (alarmButton.released()) {
alarmTone.stop();
bool longPress = alarmButton.repeat_count() > 0;
if (longPress) {
clock.stopAlarm();
changeDisplayState(DisplayClock);
} else {
clock.snooze();
changeDisplayState(DisplaySnooze);
}
}
}
//==========================================================================================
void snoozeState() {
sevseg.setChars("****");
if (millisSinceStateChange() > SNOOZE_DISPLAY_TIME) {
changeDisplayState(DisplayClock);
return;
}
}
//==========================================================================================
void setup() {
Serial.begin(115200);
clock.begin();
hourButton.begin();
hourButton.set_repeat(500, 200);
minuteButton.begin();
minuteButton.set_repeat(500, 200);
alarmButton.begin();
alarmButton.set_repeat(1000, -1);
alarmTone.begin(SPEAKER_PIN);
pinMode(COLON_PIN, OUTPUT);
byte digits = 4;
byte digitPins[] = { 2, 3, 4, 5 };
byte segmentPins[] = { 6, 7, 8, 9, 10, 11, 12 };
bool resistorsOnSegments = false;
bool updateWithDelays = false;
bool leadingZeros = true;
bool disableDecPoint = true;
sevseg.begin(DISPLAY_TYPE, digits, digitPins, segmentPins, resistorsOnSegments,
updateWithDelays, leadingZeros, disableDecPoint);
sevseg.setBrightness(90);
}
//==========================================================================================
void loop() {
sevseg.refreshDisplay();
switch (displayState) {
case DisplayClock:
clockState();
break;
case DisplayAlarmStatus:
alarmStatusState();
break;
case DisplayAlarmTime:
alarmTimeState();
break;
case DisplayAlarmActive:
alarmState();
break;
case DisplaySnooze:
snoozeState();
break;
}
}
دیدگاهها
پاکسازی فیلترهیچ دیدگاهی برای این محصول نوشته نشده است.