شِفر (کود) آردوینو و ویدیو: جوی‌استیک دو محوره

شِفر (کود) آردوینو و ویدیو: جوی‌استیک دو محوره

در این آموزش، نحوهٔ استفاده از یک جویستیک XY دو محوره با آردوینو را بررسی خواهیم کرد. از این جویستیک می‌توان به‌عنوان کنترل‌کننده بازی یا برای کنترل بازوهای رباتیک و سایر کاربردها استفاده کرد. تمرکز اصلی بر تشخیص موقعیت جویستیک و وضعیت کلید فشاری آن خواهد بود که می‌توان آن را روی نمایشگر مسلسل مشاهده کرد.

XY-Dual access joystick

در طول این آموزش، یک برنامهٔ ساده پیاده‌سازی خواهیم کرد که موقعیت‌های X و Y جوی‌استیک را می‌خواند و آن‌ها را در Serial Monitor آردوینو نمایش می‌دهد. وقتی جوی‌استیک فشرده شود، وضعیت کلید نیز تشخیص داده می‌شود. برای توضیح دقیق‌تر شِفر (کود)، حتماً ویدیو را در بازه‌های زمانی مشخص‌شده (در ویدیو در 00:00) تماشا کنید.

توضیح سخت‌افزار

اجزای اصلی این پروژه شامل ماجیول جوی‌استیک دو‌محوره و برد آردوینو است. ماجیول جوی‌استیک از دو مقاومت متغیر (پتانسیومتر) تشکیل شده است؛ یکی برای محور X و دیگری برای محور Y که بر اساس موقعیت جوی‌استیک مقادیر آنالوگ را فراهم می‌کنند. کلید فشاری روی جوی‌استیک برای تشخیص زمان فشرده شدن آن استفاده می‌شود.

وقتی جوی‌استیک را حرکت می‌دهید، پتانسیومترها مقاومت خود را تغییر می‌دهند که به مقادیری بین 0 تا 1023 تبدیل می‌شود. این به ما اجازه می‌دهد موقعیت جوی‌استیک را با دقت تعیین کنیم. کلید فشاری به یک پایه ورودی دیجیتال روی آردوینو متصل است و با استفاده از ویژگی مقاومت داخلی pull-up می‌توانیم وضعیت آن را بدون نیاز به مقاومت خارجی بخوانیم.

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

تولیدکنندهعمومی
شماره قطعهماجیول جوی‌استیک دو محوره
ولتاژ منطقی/ورودی-خروجی5 ولت
ولتاژ تغذیه5 V
دامنه ولتاژ خروجی0 - 5 ولت
رزولوشنآنالوگ 10 بیتی (0-1023)
نوع سوئیچدکمه فشاری
بستهماجیول استاندارد

  • اطمینان حاصل کنید که ماجیول جوی‌استیک تغذیه مناسب (5 ولت) دارد.
  • خروجی‌های X و Y جوی‌استیک را به ترتیب به پایه‌های آنالوگ A0 و A1 متصل کنید.
  • از پایه دیجیتال 6 برای کلید جوی‌استیک استفاده کنید.
  • برای پایه سوئیچ از پیکربندی مقاومت پول-آپ استفاده کنید.
  • مقادیر خروجی را پایش کنید تا مطمئن شوید که در بازه 0 تا 1023 قرار دارند.

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

Arduino wiring for XY-Dual access joystick
Arduino wiring for XY-Dual access joystick
Arduino X-Y-Joystick wiring
Arduino X-Y-Joystick wiring

برای سیم‌کشی جوی‌استیک دو محوره به آردوینو، با اتصال پایه زمین جوی‌استیک به ریل زمین روی بردبورد خود شروع کنید. سپس پایه 5V جوی‌استیک را به ریل مثبت روی بردبورد متصل کنید. دو پایه متغیر جوی‌استیک که با X و Y برچسب‌گذاری شده‌اند باید به پایه‌های آنالوگA0وA1روی آردوینو، به‌ترتیب.

برای کلید فشاری روی جوی‌استیک، آن را به پایه دیجیتال متصل کنید6روی آردوینو. این اتصال از ویژگی مقاومت pull-up داخلی استفاده می‌کند، بنابراین نیازی به مقاومت خارجی ندارید. در نهایت، اگر می‌خواهید وضعیت کلید را با یک LED پایش کنید، پایه بلندتر LED را به پایه دیجیتال متصل کنید13و پایهٔ کوتاه‌تر را از طریق یک مقاومت 680 اهم به زمین متصل کنید.

نمونه‌های شِفر (کود) و راهنمای گام‌به‌گام

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

void setup() {
  Serial.begin(9600); // initialize serial communication
  pinMode(sw, INPUT_PULLUP); // setting pin sw as input
  pinMode(13, OUTPUT); // LED pin
}

در تابع loop، مقادیر آنالوگ مربوط به موقعیت‌های X و Y را می‌خوانیم و آن‌ها را به ابعاد تعریف‌شدهٔ صفحه‌نمایش نگاشت می‌کنیم. وضعیت کلید نیز خوانده شده و در نمایشگر مسلسل چاپ می‌شود.

void loop() {
  int x = analogRead(A0); // read analog value for X
  int y = analogRead(A1); // read analog value for Y
  int sStat = digitalRead(sw); // read switch state
  // Print values to Serial Monitor
  Serial.print("X: ");
  Serial.print(xPos);
  Serial.print(" Y: ");
  Serial.println(yPos);
}

در نهایت، شِفر (کود) بررسی می‌کند که آیا سوییچ فشرده شده است یا نه و بر اساس وضعیت سوییچ، LED را روشن یا خاموش می‌کند. این هنگام فعال شدن دکمه جوی‌استیک بازخورد بصری فراهم می‌کند.

if(sStat == LOW) {
    Serial.println("Switch pressed");
    digitalWrite(13, HIGH); // Turn LED ON
  } else {
    digitalWrite(13, LOW); // Turn LED OFF
  }

برای دیدن اینکه مقادیر جوی‌استیک چگونه در زمان واقعی تغییر می‌کنند، شِفر (کود) را به آردوینو خود آپلود کرده و نمایشگر مسلسل را باز کنید. مقادیر هر نیم‌ثانیه به‌روزرسانی می‌شوند و موقعیت‌های فعلی X و Y را همراه با وضعیت سوئیچ نشان می‌دهند (در ویدیو در 01:30).

نمایش / چه انتظاری داشته باشید

وقتی جوی‌استیک را حرکت می‌دهید، مقادیر X و Y باید متناسباً تغییر کنند و در بازهٔ 0 تا 1023 قرار بگیرند. اگر دکمهٔ جوی‌استیک را فشار دهید، LED متصل به پایهٔ 13 روشن می‌شود که نشان می‌دهد سوئیچ فعال است. اگر جوی‌استیک در مرکز قرار داشته باشد، بسته به کالیبراسیون آن باید مقادیری حدود 512 برای هر دو محور ببینید.

برچسب‌های زمانی ویدئو

  • 00:00- معرفی جوی‌استیک دو محوره
  • 01:30- توضیح شِفر (کود) و عملکرد
  • 02:45- دستورالعمل‌های سیم‌کشی
  • ۰۳:15- خروجی مورد انتظار و آزمایش

تصاویر

Arduino wiring for XY-Dual access joystick
Arduino wiring for XY-Dual access joystick
XY-Dual access joystick
XY-Dual access joystick
XY-Dual access joystick
XY-Dual access joystick
XY-Dual access joystick
XY-Dual access joystick
XY-Dual access joystick
XY-Dual access joystick
XY-Dual access joystick
XY-Dual access joystick
Arduino X-Y-Joystick wiring
Arduino X-Y-Joystick wiring
58-This is the Arduino code for a dual-axis joystick.
زبان: C++
کپی شد!

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

منابع و مراجع

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

فایل‌ها📁

هیچ فایلی موجود نیست.