🕹️ ماژول جوی‌استیک (Joystick Module (KY-023))

اسم انگلیسیJoystick Module (KY-023)
در ووکوی (Wokwi)wokwi-analog-joystick
دسته🎛️ کلید، دکمه و ورودی
در شبیه‌ساز فارسیمود ساده (بدون کد) و مود آردوینو · رایگان

ماژول جوی‌استیک (Joystick Module، مدل رایج KY-023) دو پتانسیومتر عمود بر هم و یک دکمه را زیر یک دسته جمع کرده است: یکی چپ و راست را می‌خواند، یکی بالا و پایین را، و فشار دادن خود دسته دکمه را می‌زند. با آن ماشین رباتیک، بازوی سروو، بازی مار روی ماتریس LED یا منوی یک نمایشگر را کنترل می‌کنی.

جوی‌استیک در ووکوی (Wokwi)

شناسه‌ی این قطعه در ووکوی wokwi-analog-joystick است و پنج پایه دارد: VCC، VERT، HORZ، SEL و GND. هنگام اجرای شبیه‌سازی دسته را با موس جابه‌جا می‌کنی و عددها را در سریال مانیتور می‌بینی.

{
  "version": 1,
  "parts": [
    { "type": "wokwi-arduino-uno", "id": "uno", "top": 0, "left": 0 },
    { "type": "wokwi-analog-joystick", "id": "joy1", "top": -150, "left": 120 }
  ],
  "connections": [
    [ "joy1:VCC", "uno:5V", "red", [] ],
    [ "joy1:GND", "uno:GND.1", "black", [] ],
    [ "joy1:HORZ", "uno:A0", "green", [] ],
    [ "joy1:VERT", "uno:A1", "blue", [] ],
    [ "joy1:SEL", "uno:2", "orange", [] ]
  ]
}
پایه در ووکویاسم روی ماژول واقعیکار
VCC+5Vتغذیه
GNDGNDزمین
HORZVRxچپ و راست، ۰ تا ۱۰۲۳
VERTVRyبالا و پایین، ۰ تا ۱۰۲۳
SELSWدکمه؛ با فشار، LOW

در تینکرکد فارسی هم جوی‌استیک با پایه‌های GND، VCC، VRX، VRY و SW هست، ولی جزو قطعه‌های حرفه‌ای اشتراک Plus است؛ مثال آماده‌اش کنترل سروو با جوی‌استیک است.

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

پایه‌ی قطعهوصل به
GNDGND
+5V5V
VRxA0
VRyA1
SWپین 2 (INPUT_PULLUP)

خروجی هر محور ولتاژی بین ۰ تا ۵ ولت است که analogRead آن را به عدد ۰ تا ۱۰۲۳ تبدیل می‌کند؛ پس دو پین آنالوگ لازم داری. دکمه‌ی SW با فشار به زمین وصل می‌شود و روی بیشتر ماژول‌ها مقاومت بالاکش ندارد، پس INPUT_PULLUP را فراموش نکن.

کد نمونه

این کد جهت دسته را به کلمه تبدیل می‌کند؛ همان چیزی که برای بازی یا منو لازم داری. منطقه‌ی مرده (DEAD) لرزش‌های کوچک دور وسط را نادیده می‌گیرد:

// Joystick to direction words, with a dead zone around the centre.
// Wiring: VRx/HORZ -> A0, VRy/VERT -> A1, SW/SEL -> pin 2, VCC -> 5V, GND -> GND
const int PIN_X = A0;
const int PIN_Y = A1;
const int PIN_SW = 2;
const int CENTER = 512;
const int DEAD = 120;            // ignore small moves around the middle

String lastDir = "";

void setup() {
  pinMode(PIN_SW, INPUT_PULLUP);
  pinMode(LED_BUILTIN, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  int dx = analogRead(PIN_X) - CENTER;
  int dy = analogRead(PIN_Y) - CENTER;

  String dir = "CENTER";
  if (abs(dx) > DEAD || abs(dy) > DEAD) {
    if (abs(dx) > abs(dy)) dir = (dx > 0) ? "RIGHT" : "LEFT";
    else dir = (dy > 0) ? "UP" : "DOWN";
  }

  if (dir != lastDir) {          // print only when the direction changes
    lastDir = dir;
    Serial.println(dir);
  }

  digitalWrite(LED_BUILTIN, digitalRead(PIN_SW) == LOW);   // LED while pressed
  delay(30);
}

اگر در ووکوی یا روی ماژول خودت بالا و پایین (یا چپ و راست) برعکس بود، فقط علامت مقایسه را در همان خط عوض کن؛ جهت محورها در ماژول‌های مختلف یکی نیست.

اگر به‌جای چهار جهت، مقدار پیوسته می‌خواهی (مثلاً زاویه‌ی سروو یا سرعت موتور)، عدد محور را مستقیم با map(analogRead(A0), 0, 1023, 0, 180) به بازه‌ی دلخواه ببر. برای این‌که دسته‌ی رها هم دقیقاً وسط بازه بماند، همان منطقه‌ی مرده را قبل از map اعمال کن و مقدارهای نزدیک ۵۱۲ را خود ۵۱۲ بگیر.

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

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

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

وقتی جوی‌استیک رها است چه عددی می‌خوانم؟

حدود ۵۱۲ روی هر دو محور، چون هر محور یک پتانسیومتر است که در وسط ایستاده. در قطعه‌ی واقعی این عدد کمی بالا و پایین می‌رود، برای همین در کد یک منطقه‌ی مرده دور وسط می‌گذاریم.

پایه‌های VERT و HORZ ووکوی همان VRx و VRy ماژول واقعی‌اند؟

بله. HORZ محور چپ و راست است (همان VRx)، VERT محور بالا و پایین (VRy) و SEL همان دکمه‌ی SW است که با فشار دادن دسته زده می‌شود.

جوی‌استیک در تینکرکد فارسی رایگان است؟

در ووکوی رایگان است. در تینکرکد فارسی جوی‌استیک جزو قطعه‌های حرفه‌ای اشتراک Plus است.

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

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

🎛️

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

DIP Switch (4-position)

🔢

کی‌پد ۴×۴

4x4 Matrix Keypad

🪛

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

Trimmer Potentiometer (Trimpot)

🎚️

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

Slide Potentiometer

🔘

دکمه فشاری

Push Button

🔛

کلید کشویی

Slide Switch

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

ماژول جوی‌استیک را در شبیه‌ساز امتحان کن 🚀