কোড অনুসন্ধান

পাঠ ১৩/৩১: আরডুইনোর সাথে XY জয়স্টিক ব্যবহার এবং জয়স্টিক গতির সাথে বুজার চালু করা | Robojax

পাঠ ১৩/৩১: আরডুইনোর সাথে XY জয়স্টিক ব্যবহার এবং জয়স্টিক গতির সাথে বুজার চালু করা | Robojax

এই পাঠে, আমরা XY জয়স্টিক মডিউল এবং এটি কীভাবে একটি Arduino-এর সাথে সংযোগ করে দিকনির্দেশক গতি এবং বোতাম চাপ শনাক্ত করা যায় তা অন্বেষণ করি। এই বহুমুখী ইনপুট ডিভাইসটিতে দুটি পটেনশিওমিটার (একটি X-অক্ষের জন্য এবং একটি Y-অক্ষের জন্য) এবং একটি পুশ বোতাম রয়েছে, যা আপনাকে একটি ক্লিক অ্যাকশনের সাথে 360-ডিগ্রি পূর্ণ গতির পরিসর ক্যাপচার করতে দেয়। শুধু কাঁচা মান পড়ার বাইরে, আমরা দেখাব কীভাবে নির্দিষ্ট অবস্থানে জয়স্টিক সরানো হলে অ্যাকশন ট্রিগার করা যায়—যেমন একটি বুজার চালু করা। এই নীতিটি অসংখ্য ইন্টারেক্টিভ প্রকল্পের ভিত্তি তৈরি করে।

sunfounder-13-JoyStick-2

এই গাইডটি তৈরির জন্য উপযুক্ত:

  • একটি রোবোটিক গাড়ি বা প্যান-টিল্ট ক্যামেরা মাউন্টের জন্য একটি দ্বি-অক্ষ রিমোট কন্ট্রোল।
  • একটি পিসি বা মোবাইল ডিভাইসের জন্য একটি কাস্টম গেম কন্ট্রোলার।
  • একটি LCD বা OLED ডিসপ্লের জন্য একটি মেনু নেভিগেশন সিস্টেম।
  • শিল্প বা শখের অ্যাপ্লিকেশনের জন্য একটি নির্ভুল মোটর গতি এবং দিক নিয়ন্ত্রক।
  • একটি ইন্টারেক্টিভ অ্যালার্ম সিস্টেম যেখানে একটি নির্দিষ্ট জয়স্টিক অবস্থান সাইরেন বা সতর্কতা সক্রিয় করে।

হার্ডওয়্যার এবং উপাদান

এই প্রকল্পটি অনুসরণ করতে, আপনার নিম্নলিখিত উপাদানগুলির প্রয়োজন হবে। ভিডিওতে ব্যবহৃত নির্দিষ্ট কিটটি হল SunFounder 3-in-1 Arduino কিট, তবে এই অংশগুলি পৃথকভাবে ব্যাপকভাবে পাওয়া যায়।

  • Arduino Uno (বা যেকোনো সামঞ্জস্যপূর্ণ বোর্ড)
  • XY জয়স্টিক মডিউল
  • প্যাসিভ বুজার
  • জাম্পার তার
  • প্রোগ্রামিং এবং পাওয়ারের জন্য USB কেবল
LB-LR0001_Dual-axis_XY_Joystick_Module

XY জয়স্টিক মডিউল বোঝা

XY জয়স্টিক একটি স্বয়ংসম্পূর্ণ ইনপুট ডিভাইস। ভিডিওতে ব্যাখ্যা করা হয়েছে (ভিডিওতে 01:20 এ), এটি দুটি 10k ওহম পটেনশিওমিটারকে লম্বভাবে সাজিয়ে একত্রিত করে। X-অক্ষ বরাবর স্টিক সরানো একটি পটেনশিওমিটার ঘোরায়, যখন Y-অক্ষ বরাবর সরানো অন্যটি ঘোরায়। এটি Arduino-কে প্রতিটি অক্ষের জন্য একটি অ্যানালগ ভোল্টেজ পড়তে দেয়, যা স্টিকের সঠিক অবস্থান উপস্থাপন করে। মডিউলটিতে একটি মোমেন্টারি পুশ বোতামও রয়েছে যা স্টিকটি সোজা নিচে চাপলে সক্রিয় হয়।

Joystick-Module-Internal-Structure

এর পিনগুলির একটি বিবরণ এখানে দেওয়া হল:

  • GND: Arduino-এর গ্রাউন্ডের (0V) সাথে সংযোগ করে।
  • VCC: Arduino-এর 5V পাওয়ার সাপ্লাইয়ের সাথে সংযোগ করে।
  • VRX: X-অক্ষ অবস্থানের জন্য অ্যানালগ আউটপুট।
  • VRY: Y-অক্ষ অবস্থানের জন্য অ্যানালগ আউটপুট।
  • SW: পুশ বোতামের জন্য ডিজিটাল আউটপুট (সক্রিয় নিম্ন)।

ভিডিওটি আরও দেখায় যে দুটি অভ্যন্তরীণ পটেনশিওমিটার VCC এবং GND-এর মধ্যে সমান্তরালে সংযুক্ত, যার ফলে মোট প্রতিরোধ প্রায় 5k ওহম হয়, যা এই মডিউলের জন্য একটি স্বাভাবিক রিডিং (ভিডিওতে 04:30 এ)।

ওয়্যারিং গাইড

sunfounder-13_xy_joystick_wiring_bb

এই প্রকল্পের ওয়্যারিং সহজবোধ্য। ভিডিওটি SunFounder ডকুমেন্টেশন থেকে একটি ওয়্যারিং ডায়াগ্রাম দেখায়, তবে আমরা জয়স্টিকটি সরাসরি বর্ণিত Arduino পিনের সাথে সংযুক্ত করব। প্রকল্পের অ্যাকশন অংশের জন্য বুজার যোগ করা হয়েছে।

ভিডিওতে প্রতিষ্ঠিত সংযোগগুলি এখানে দেওয়া হল (ভিডিওতে 06:24 এ):

  • জয়স্টিক GNDArduino GND (কালো তার)
  • জয়স্টিক VCCArduino 5V (লাল তার)
  • জয়স্টিক VRXArduino A0 (হলুদ তার)
  • জয়স্টিক VRYArduino A1 (সবুজ তার)
  • জয়স্টিক SWArduino পিন 8 (নীল তার)
  • বুজার পজিটিভ (লম্বা পিন)Arduino পিন 2
  • বুজার নেগেটিভ (ছোট পিন)Arduino GND

কোড ব্যাখ্যা

প্রদত্ত কোডটি জয়স্টিকের অবস্থান পড়তে এবং একটি নির্দিষ্ট শর্ত পূরণ হলে বুজার সক্রিয় করার জন্য ডিজাইন করা হয়েছে। আপনি স্কেচের শীর্ষে যে মূল অংশগুলি কনফিগার করতে পারেন তা এখানে দেওয়া হল।

প্রথমে, পিন সংজ্ঞা সেট করা হয়। আপনার নির্দিষ্ট ওয়্যারিংয়ের সাথে মেলাতে আপনি এগুলি পরিবর্তন করতে পারেন:

const int xPin = A0;  //the VRX attach to
const int yPin = A1;  //the VRY attach to
const int swPin = 8;  //the SW attach to
const int alarmPin=2;//to buzzer

এরপর, জয়স্টিকের অবস্থা সংরক্ষণের জন্য গ্লোবাল ভেরিয়েবল ঘোষণা করা হয়। readJoystick() ফাংশন প্রতিবার কল করার সময় এগুলি আপডেট হয়।

int xValue;//to store xValue
int yValue;//to store yValue
int swValue;//to store value of the switch

setup() ফাংশনে, সুইচ পিনটি একটি অভ্যন্তরীণ পুল-আপ রেজিস্টর দিয়ে কনফিগার করা হয়। এটি একটি গুরুত্বপূর্ণ পদক্ষেপ কারণ এটি বাহ্যিক রেজিস্টরের প্রয়োজনীয়তা দূর করে। এটিকে INPUT_PULLUP এ সেট করার মাধ্যমে, পিনটি ডিফল্টভাবে HIGH পড়বে এবং বোতাম চাপলে LOW হবে।

pinMode(swPin, INPUT_PULLUP);  //set the SW pin to INPUT

মূল লজিকটি loop() ফাংশনে রয়েছে। এটি কাস্টম readJoystick() ফাংশনকে কল করে নতুন ডেটা পেতে। তারপর, এটি একটি শর্ত পরীক্ষা করে: যদি X-অক্ষের মান 600-এর বেশি হয় এবং Y-অক্ষের মান 300-এর কম হয়, তাহলে বুজার চালু হয়। আপনি এই থ্রেশহোল্ড মানগুলো পরিবর্তন করে জয়স্টিকের জন্য একটি ভিন্ন "সক্রিয় অঞ্চল" নির্ধারণ করতে পারেন। alarmPin কে HIGH সেট করা হয় বুজার সক্রিয় করতে এবং সিরিয়াল মনিটরে একটি বার্তা প্রিন্ট করা হয়।

if(xValue >600 && yValue <300)
{
  digitalWrite(alarmPin, HIGH);
  Serial.print("Alarm X:");
  Serial.print(xValue);
  Serial.print(" Y:");
  Serial.println(yValue);
}else{
  digitalWrite(alarmPin, LOW);
  // ... অ্যালার্ম বন্ধ থাকলে মান প্রিন্ট করার কোড
}

অবশেষে, কাস্টম ফাংশন readJoystick() সংজ্ঞায়িত করা হয়েছে। এই ফাংশনটি X এবং Y পিন থেকে অ্যানালগ মান এবং সুইচের ডিজিটাল অবস্থা পড়ে, সেগুলো গ্লোবাল ভেরিয়েবলে সংরক্ষণ করে। এই মডুলার পদ্ধতি মূল লুপটি পরিষ্কার এবং সংগঠিত রাখে।

void readJoystick()
{
  xValue =analogRead(xPin);//xPin মান পড়ুন
  yValue =analogRead(yPin);//yPin মান পড়ুন
  swValue =digitalRead(swPin);//সুইচ পড়ুন 
}

লাইভ প্রজেক্ট এবং প্রদর্শন

কোড আপলোড হয়ে গেলে, সিরিয়াল মনিটর খুলে কাঁচা মানগুলো পর্যবেক্ষণ করা যায়। প্রাথমিকভাবে, জয়স্টিক কেন্দ্রে থাকলে, X এবং Y মান প্রায় 512 হবে, যা 0-1023 পরিসরের মধ্যবিন্দু। জয়স্টিকটি নিচে চাপলে সুইচের মান 1 থেকে 0-তে পরিবর্তিত হবে (ভিডিওতে 10:15-এ)।

জয়স্টিকটি চরম প্রান্তে সরালে সম্পূর্ণ পরিসর দেখা যাবে: এটি সম্পূর্ণ ডানে সরালে X মান 1023 দেখাবে, এবং সম্পূর্ণ বামে সরালে 0 দেখাবে। একইভাবে, উপরে এবং নিচে সরালে Y মান 0 এবং 1023-এর মধ্যে পরিবর্তিত হবে (ভিডিওতে 10:37-এ)।

প্রদর্শনটি তারপর প্রজেক্টের কর্ম অংশ দেখায়। যখন জয়স্টিকটি উপরের-ডান কোণে সরানো হয় (যেখানে X > 600 এবং Y < 300), বুজার বেজে উঠবে, এবং সিরিয়াল মনিটর একটি "Alarm" বার্তা প্রিন্ট করবে। সেই অঞ্চল থেকে দূরে সরালে বুজার বন্ধ হয়ে যাবে। এটি প্রমাণ করে যে আপনি জয়স্টিকের অবস্থান ব্যবহার করে একটি আউটপুট ডিভাইস নিয়ন্ত্রণ করতে পারেন, যা বিভিন্ন অ্যাপ্লিকেশনের জন্য রিলে, LED বা মোটর নিয়ন্ত্রণে প্রসারিত করা যেতে পারে।

অধ্যায়সমূহ

  • [00:00] XY জয়স্টিক প্রজেক্টের ভূমিকা
  • [01:20] হার্ডওয়্যার এবং অভ্যন্তরীণ উপাদান বোঝা
  • [03:33] মডিউল সার্কিট ডায়াগ্রাম এবং প্রতিরোধ পরিমাপ
  • [05:51] আরডুইনোতে জয়স্টিক সংযোগ করা
  • [07:00] কোড সেটআপ এবং পুল-আপ রেজিস্টর সক্রিয় করা
  • [09:23] কোড আপলোড এবং কাঁচা মান পরীক্ষা
  • [12:21] কর্ম গ্রহণ: জয়স্টিক অবস্থান দিয়ে বুজার নিয়ন্ত্রণ
  • [16:02] অ্যালার্ম সিস্টেমের লাইভ প্রদর্শন

ছবি

Sunfounder car assembled
Sunfounder car assembled
LB-LR0001_Dual-axis_XY_Joystick_Module
LB-LR0001_Dual-axis_XY_Joystick_Module
sunfounder-13-JoyStick-1
sunfounder-13-JoyStick-1
sunfounder-13-JoyStick-2
sunfounder-13-JoyStick-2
Joystick-Module-Internal-Structure
Joystick-Module-Internal-Structure
sunfounder-13_xy_joystick_wiring_bb
sunfounder-13_xy_joystick_wiring_bb
922-Lesson 13/31: How to read position and values of X-Y Joystick
ভাষা: C++
This code has not been parsed yet. Please return to the admin panel to parse it.

আপনাকে যা প্রয়োজন হতে পারে

সম্পদ ও রেফারেন্সসমূহ

ফাইলসমূহ📁

আর্ডুইনো লাইব্রেরি (জিপ)

ব্যবহারকারীর ম্যানুয়াল