🎚️ کلید چرخشی (سلکتوری) (Rotary Switch)

اسم انگلیسیRotary Switch
در ووکوی (Wokwi)نسخه‌ی آماده‌ای سراغ نداریم
دسته🎛️ کلید، دکمه و ورودی
در شبیه‌ساز فارسیمود ساده (بدون کد) و مود آردوینو · رایگان

کلید چرخشی یا سلکتور (Rotary Switch) یک پایه‌ی مشترک (COM) و چند خروجی دارد و با چرخاندن دسته، COM را هر بار فقط به یکی از خروجی‌ها می‌رساند؛ مثل کلید دور پنکه یا انتخاب حالت مولتی‌متر. کنار آردوینو بهترین ابزار برای «انتخاب حالت» است: سرعت ربات، نوع آژیر، یا این‌که کدام بخش برنامه اجرا شود.

کلید چرخشی در ووکوی (Wokwi)

تا جایی که می‌دانیم ووکوی نسخه‌ی آماده‌ی این قطعه را ندارد. قطعه‌ی چرخان ووکوی، انکودر wokwi-ky-040، چیز دیگری است: بی‌انتها می‌چرخد و پالس می‌دهد، نه حالت ثابت. برای تمرین همین کد در ووکوی از wokwi-dip-switch-8 استفاده کن: چهار کلید اولش را جای چهار حالت بگذار، یک سمت هر کلید را به پین‌های ۲ تا ۵ و سمت روبه‌رو را به GND ببر و هر بار فقط یک کلید را روشن نگه دار.

خود کلید چرخشی با پایه‌های COM، P1، P2، P3 و P4 در تینکرکد فارسی هم در حالت ساده (2D) و هم در حالت آردوینو (3D) رایگان شبیه‌سازی می‌شود.

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

COM به زمین می‌رود و هر خروجی به یک پین دیجیتال با مقاومت بالاکش داخلی. حالتی که انتخاب شده، تنها پینی است که LOW خوانده می‌شود. LED نمایش حالت همان LED خود برد روی پین ۱۳ است و سیم نمی‌خواهد.

پایه‌ی کلیدوصل به
COMGND آردوینو
P1پین 2
P2پین 3
P3پین 4
P4پین 5

کد نمونه

حالت ۱ خاموش، حالت ۲ چشمک آرام، حالت ۳ چشمک تند و حالت ۴ روشن دائم:

// 4-position rotary switch picks how the on-board LED behaves.
// Wiring: COM -> GND, P1..P4 -> pins 2..5 (INPUT_PULLUP)
const int POS_PINS[4] = {2, 3, 4, 5};
int mode = 1;                          // last valid position

int readPosition() {
  for (int i = 0; i < 4; i++) {
    if (digitalRead(POS_PINS[i]) == LOW) return i + 1;
  }
  return 0;                            // between two positions
}

void setup() {
  for (int i = 0; i < 4; i++) pinMode(POS_PINS[i], INPUT_PULLUP);
  pinMode(LED_BUILTIN, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  int pos = readPosition();
  if (pos != 0 && pos != mode) {       // ignore the gap while turning
    mode = pos;
    Serial.print("Mode ");
    Serial.println(mode);
  }

  unsigned long t = millis();
  if (mode == 1) digitalWrite(LED_BUILTIN, LOW);
  else if (mode == 2) digitalWrite(LED_BUILTIN, (t / 800) % 2);
  else if (mode == 3) digitalWrite(LED_BUILTIN, (t / 150) % 2);
  else digitalWrite(LED_BUILTIN, HIGH);
}

نکته‌ی اصلی در تابع readPosition است: وقتی دسته بین دو حالت است، صفر برمی‌گرداند و برنامه حالت قبلی را نگه می‌دارد؛ پس LED موقع چرخاندن یک لحظه خاموش نمی‌شود.

اشتباه‌های رایج

آموزش‌های مرتبط

سؤال‌های رایج

کلید چرخشی با انکودر چرخشی (Rotary Encoder) چه فرقی دارد؟

کلید چرخشی چند حالت ثابت دارد و در هر حالت یک پایه‌ی مشخص به COM وصل است؛ آردوینو با یک نگاه می‌فهمد روی کدام حالت است. انکودر مثل KY-040 بی‌انتها می‌چرخد و فقط پالس «یک قدم به چپ» یا «یک قدم به راست» می‌دهد و برنامه باید شمارش کند.

ووکوی کلید سلکتوری دارد؟

تا جایی که می‌دانیم نه. برای تمرین کد می‌توانی چهار کلید از دیپ سوییچ ووکوی را جای چهار حالت بگذاری و هر بار فقط یکی را روشن کنی. خود کلید چرخشی در تینکرکد فارسی رایگان شبیه‌سازی می‌شود.

چرا وقتی کلید را می‌چرخانم یک لحظه هیچ حالتی خوانده نمی‌شود؟

بیشتر کلیدهای چرخشی «قطع قبل از وصل» هستند: موقع چرخیدن، اول اتصال قبلی قطع می‌شود و بعد اتصال بعدی وصل. برنامه باید این لحظه را نادیده بگیرد و آخرین حالت معتبر را نگه دارد.

📖 طرز کار، مشخصات فنی و نکته‌های خرید این قطعه در دانشنامه‌ی تینکرکد فارسی: کلید چرخشی (سلکتوری) آمده است.

قطعه‌های دیگرِ کلید، دکمه و ورودی

🔲

کلید تکتایل (تک سوییچ)

Tactile Switch

🕹️

ماژول جوی‌استیک

Joystick Module (KY-023)

🎛️

دیپ سوییچ چهارتایی

DIP Switch (4-position)

🔢

کی‌پد ۴×۴

4x4 Matrix Keypad

🪛

تریمر (پتانسیومتر تنظیمی)

Trimmer Potentiometer (Trimpot)

🎚️

پتانسیومتر کشویی (اسلایدی)

Slide Potentiometer

همه‌ی ۱۰۵ قطعه ← · آموزش مدار

کلید چرخشی (سلکتوری) را در شبیه‌ساز امتحان کن 🚀