🔀 کلید SPDT (تبدیل سهپایه) (SPDT Switch)
| اسم انگلیسی | SPDT Switch |
|---|---|
| در ووکوی (Wokwi) | نسخهی آمادهای سراغ نداریم |
| دسته | 🎛️ کلید، دکمه و ورودی |
| در شبیهساز فارسی | مود ساده (بدون کد) و مود آردوینو · رایگان |
کلید SPDT یا کلید تبدیل سهپایه (SPDT Switch) یعنی «یک مسیر، دو انتخاب» (Single Pole, Double Throw): پایهی وسط یا به پایهی چپ وصل است یا به راست. کلید اهرمی کوچک، خیلی از کلیدهای کشویی و کلید معروف «تبدیل» راهپله همه از این نوعاند. در کار با آردوینو یک مزیت پنهان دارد: چون پایهی وسط همیشه به جایی وصل است، میشود آن را بدون مقاومت پولآپ خواند. و دو تایش با هم، مدار چراغ راهپله (Two-way Switching) را میسازند.
کلید SPDT در ووکوی (Wokwi)
تا جایی که میدانیم ووکوی نسخهی آمادهی این قطعه را ندارد؛ یعنی کلید اهرمی یا راکر SPDT جدایی در فهرست قطعههایش نیست. نزدیکترین جایگزین wokwi-slide-switch است که خودش یک کلید SPDT است: پایهی 2 وسط و مشترک است و 1 و 3 دو کنار. برای سیمکشی این صفحه در ووکوی، 1 را به uno:5V، 3 را به uno:GND.1 و 2 را به پین ورودی بده. کلید SPDT در تینکرکد فارسی، در مود ساده و مود آردوینو، رایگان شبیهسازی میشود؛ پروژههای چراغ راهپله و کلید بین دو چراغ در مود ساده آمادهاند.
سیمکشی با آردوینو
دو کلید داریم، یکی پایین و یکی بالای پلهها، و یک LED بهجای لامپ.
| پایهی قطعه | وصل به |
|---|---|
| کلید پایین: پایهی وسط | پین 4 |
| کلید بالا: پایهی وسط | پین 5 |
| پایهی کناری اول هر دو کلید | 5V |
| پایهی کناری دوم هر دو کلید | GND |
| LED با مقاومت ۲۲۰ اهم | پین 13 به GND |
کد نمونه
// Two-way (staircase) light with two SPDT switches.
// Each switch: middle pin -> Arduino input, one side -> 5V, other side -> GND.
const int SW_DOWNSTAIRS = 4;
const int SW_UPSTAIRS = 5;
const int LAMP = 13;
bool lastLamp = false;
void setup() {
pinMode(SW_DOWNSTAIRS, INPUT); // no pull-up needed: the middle pin is always driven
pinMode(SW_UPSTAIRS, INPUT);
pinMode(LAMP, OUTPUT);
Serial.begin(9600);
}
void loop() {
bool a = digitalRead(SW_DOWNSTAIRS);
bool b = digitalRead(SW_UPSTAIRS);
bool lampOn = a ^ b; // XOR: flipping either switch flips the lamp
digitalWrite(LAMP, lampOn ? HIGH : LOW);
if (lampOn != lastLamp) {
Serial.println(lampOn ? "Lamp ON" : "Lamp OFF");
lastLamp = lampOn;
}
delay(20);
}
عملگر ^ یعنی XOR: وقتی دو ورودی متفاوتاند، نتیجه یک است. هر کلید را که عوض کنی، یکی از ورودیها برعکس میشود و چراغ هم برعکس. این همان منطقی است که در سیمکشی برق راهپله با دو سیم رابط بین کلیدها ساخته میشود؛ گیت XOR را در مدار منطقی و شبیهسازی گیتها ببین.
اشتباههای رایج
- ورودی روی پایهی کناری: اگر پین آردوینو را به یک کنار بزنی، نصف وقت شناور است. ورودی همیشه پایهی وسط است.
- لحظهی جابهجایی: بیشتر کلیدهای کوچک «اول قطع، بعد وصل» (Break-before-make) کار میکنند و پایهی وسط چند میلیثانیه آزاد میماند. اگر پرش دیدی، یک مقاومت ۱۰ کیلواهم از پین به GND بگذار یا چند میلیثانیه صبر کن.
- کلید ناشناخته بین 5V و GND: اگر مطمئن نیستی کلیدت هنگام جابهجایی دو کنار را لحظهای به هم وصل نمیکند، بهجای این روش پایهی وسط را به پین و یک کنار را به GND بزن و
INPUT_PULLUPبگذار؛ مثل صفحهی کلید کشویی. - اشتباه گرفتن با DPDT: کلید ششپایه DPDT است؛ یعنی دو SPDT جدا که با یک دسته حرکت میکنند.
آموزشهای مرتبط
- کلید کشویی در ووکوی
- کلید DPDT و چرخاندن موتور در دو جهت
- گیت XOR و مدار منطقی
- مقاومت بالاکش و پایینکش
سؤالهای رایج
کلید SPDT را بدون مقاومت پولآپ به آردوینو وصل کنم؟
بله، اگر یک کنار را به 5V و کنار دیگر را به GND بزنی، پایهی وسط همیشه به یکی از آنها وصل است و ورودی شناور نمیماند. فقط در لحظهی جابهجایی چند میلیثانیه آزاد است.
ووکوی کلید SPDT دارد؟
قطعهای به اسم کلید SPDT اهرمی یا راکر در ووکوی نمیشناسیم، ولی wokwi-slide-switch خودش یک کلید SPDT است و با پایههای 1، 2 و 3 همین کار را میکند.
مدار چراغ راهپله با دو کلید چطور کار میکند؟
دو کلید SPDT طوری سیمکشی میشوند که با تغییر هر کدام، وضعیت چراغ برعکس شود. بسته به سیمکشی، چراغ وقتی روشن است که دو کلید همجهت یا ناهمجهت باشند؛ در منطق دیجیتال این همان XOR (یا وارونهاش XNOR) است.