সুচিপত্র:
ভিডিও: একটি অঙ্গভঙ্গি সেন্সর দিয়ে একটি নিওপিক্সেল LED রিং নিয়ন্ত্রণ করা: 3 টি ধাপ (ছবি সহ)
2024 লেখক: John Day | [email protected]. সর্বশেষ পরিবর্তিত: 2024-01-30 08:01
এই টিউটোরিয়ালে আমরা একটি অঙ্গভঙ্গি সেন্সর (APDS-9960) এবং একটি নিওপিক্সেল রিং দিয়ে খেলতে যাচ্ছি কিভাবে একটি Arduino UNO ব্যবহার করে উভয়কে একত্রিত করতে হয়।
শেষ পণ্যটি বাম -ডান অঙ্গভঙ্গিতে সাড়া দেবে নেতৃত্বাধীন আন্দোলনকে ডান বা বামে, এবং এলইডি রঙ পরিবর্তন করে আপ -ডাউন অঙ্গভঙ্গিগুলি।
পরবর্তী ধাপে, আপনি সংক্ষিপ্তভাবে অংশের তালিকা এবং উপাদানগুলি কীভাবে সংযুক্ত করবেন তা পর্যালোচনা করবেন। এবং তারপর আমরা ধাপে ধাপে কোডটি পর্যালোচনা করব কিভাবে এটি কাজ করে তা জানতে।
ধাপ 1: উপাদান
1. আরডুইনো ইউএনও
2. ইউএসবি কেবল
3. APDS9960 অঙ্গভঙ্গি সেন্সর (https://www.sparkfun.com/products/12787)
4. 24 নেতৃত্বাধীন neopixel নেতৃত্বে রিং (https://www.adafruit.com/product/1586)
5. পুরুষ-মহিলা, পুরুষ-পুরুষ রুটিবোর্ড ক্যাবল
6. ব্রেডবোর্ড
7. নেতৃত্বাধীন রিংয়ের জন্য 5 ভি পাওয়ার সাপ্লাই (আমি একটি 4 ব্যাটারি ব্যাক ব্যবহার করছি)
8. রুটিবোর্ডে নিওপিক্সেল রিং সংযুক্ত করার জন্য আপনাকে তিনটি পুরুষ পিন সোল্ডার করতে হবে: GND, PWR এবং কন্ট্রোল পিন। এই জন্য আপনি একটি সোল্ডারিং লোহা এবং প্রবাহ প্রয়োজন হবে
এখানে প্রধান উপাদান হল APDS-9960 অঙ্গভঙ্গি সেন্সর এবং 24 টি নিওপিক্সেল রিং। আপনি বিভিন্ন arduinos, ইউএসবি তারের পাওয়ার সাপ্লাই এবং ব্রেডবোর্ড আপনার ইচ্ছামতো পরিবর্তন করতে পারেন।
ধাপ 2: সমাবেশ এবং আপলোড
সমাবেশ
আপনি শুরু করার আগে নিশ্চিত করুন যে আপনার টেবিলে সমস্ত উপাদান রয়েছে। আমাদের অনুসরণ করার জন্য কিছু সুন্দর পদক্ষেপ থাকবে:)। আমি ফ্রিজিং স্কিম্যাটিককে ছবি হিসেবে এবং ফ্রিজিং ফরম্যাটেও সংযুক্ত করেছি।
1. নিওপিক্সেল রিং (GND, PWR, কন্ট্রোল পিন) এ 3 টি পুরুষ পিন বিক্রি করুন
2. রুটিবোর্ডে নিওপিক্সেল রিং সংযুক্ত করুন
3. ব্রেডবোর্ডে APDS9960 সেন্সর সংযুক্ত করুন
4. গ্রাউন্ডগুলি সংযুক্ত করুন: ব্যাটারি প্যাক, আরডুইনো ইউএনও, এপিডিএস 9960 এবং রুটিবোর্ড গ্রাউন্ডে নিওপিক্সেল
5. পাওয়ার সংযোগ করুন: arduino UNO 3V থেকে APDS9960 পাওয়ার পিন, নিওপিক্সেল থেকে ব্যাটারি প্যাক পাওয়ার
6. আরডুইনো ডি 6 পিনের সাথে নিওপিক্সেল কন্ট্রোল পিন সংযুক্ত করুন
7. APDS9960 এর SDA এবং SC কে যথাক্রমে A4 এবং A5 এর সাথে সংযুক্ত করুন
8. APDS9960 ইন্টারাপ্ট পিনকে arduino D2 এর সাথে সংযুক্ত করুন
কোড আপলোড
প্রথমে আপনাকে প্রয়োজনীয় আরডুইনো লাইব্রেরি ডাউনলোড এবং ইনস্টল করতে হবে:
1. Neopixel রিং লাইব্রেরি:
2. অঙ্গভঙ্গি সেন্সর লাইব্রেরি:
আপনি যদি আরডুইনো লাইব্রেরি কিভাবে ইনস্টল করতে জানেন না এই টিউটোরিয়ালটি দেখুন।
আপনি উপরের লাইব্রেরিগুলি ডাউনলোড এবং ইনস্টল করার পরে, আপনি এখানে অবস্থিত আমার arduino সংগ্রহস্থলটি ক্লোন বা ডাউনলোড করতে পারেন: https://github.com/danionescu0/arduino, এবং আমরা এই স্কেচটি ব্যবহার করব: https://github.com/danionescu0 /arduino/tree/master/projects/neopixel_ring_gestures
পরের অংশে আমি এই টিউটোরিয়ালে সরাসরি কোডটি এম্বেড করব, তাই আপনি যদি চান তবে আপনি সেখান থেকে কপি এবং পেস্ট করতে পারেন।
অবশেষে ইউএসবি কেবল ব্যবহার করে আরডুইনো কম্পিউটারের সাথে সংযুক্ত করুন, ব্যাটারি প্যাকের মধ্যে 1.5 ভি ব্যাটারি রাখুন এবং আরডুইনোতে স্কেচ আপলোড করুন।
ধাপ 3: এটি কিভাবে কাজ করে?
এই শেষ অংশে আমরা শিখব কিভাবে এই উপাদানগুলো একত্রিত হয়, কিভাবে তাদের লাইব্রেরি ব্যবহার করতে হয় এবং কিভাবে আমি আমার কোড গঠন করেছি:
প্রথমে আসুন সেন্সর এবং নিওপিক্সেল লাইব্রেরি এপিআই পদ্ধতি যা আমরা ব্যবহার করব তার মাধ্যমে দ্রুত নজর দেওয়া যাক
1. Adafruit থেকে Neopixel API
এই লাইব্রেরি থেকে আমরা এমন পদ্ধতি ব্যবহার করব যা পৃথক নেতৃত্বের রঙ নিয়ন্ত্রণ করে এবং সেগুলি প্রয়োগ করে
- লাইব্রেরি অন্তর্ভুক্ত করুন:
#অন্তর্ভুক্ত
- লাইব্রেরি ঘোষণা করুন
#NEOPIXED_CONTROL_PIN 6 নির্ধারণ করুন
#নির্ধারণ করুন NUM_LEDS 24 Adafruit_NeoPixel স্ট্রিপ = Adafruit_NeoPixel (NUM_LEDS, NEOPIXED_CONTROL_PIN, NEO_RBG + NEO_KHZ800);
- আরম্ভ করা
#সাধারণত সেটআপ ব্লকের ভিতরে
অকার্যকর সেটআপ () {strip.begin (); # হয়তো এখানে অন্য কিছু জিনিস আছে …. }
- পৃথক পিক্সেলগুলি হালকা করুন তারপর স্ট্রিপে সমস্ত পরিবর্তন প্রয়োগ করুন (এটি একটি উপায়ে রেন্ডার করুন)
# লাল হতে পিক্সেল 0 সেট আপ করুন
strip.setPixelColor (0, strip. Color (255, 0, 0)); # পিক্সেল 1 কে সবুজ স্ট্রিপ সেট আপ করুন। PixelColor (1, strip. Color (0, 255, 0)); # পিক্সেল 2 সেট করুন নীল strip.setPixelColor (2, strip. Color (0, 0 255)); strip.show ();
2. APDS 9960 অঙ্গভঙ্গি সেন্সর
এই লাইব্রেরি থেকে আমরা "রিড ইশারা" ফাংশন ব্যবহার করব। এই ফাংশনটি বাম-ডান, আপ-ডাউন, ক্লোজ-ফর কমান্ডের মধ্যে পার্থক্য করতে সক্ষম হবে। এখানে একটি কৌশল আছে, আমরা অনুভূত শেষ অঙ্গভঙ্গির জন্য সেন্সরকে ক্রমাগত জিজ্ঞাসা করতে যাচ্ছি না। একটি ইঙ্গিত পাওয়া গেছে যে একটি বাধা মাধ্যমে বোর্ড "পিং" করার ক্ষমতা আছে।
- নিওপিক্সেলের অনুরূপ লাইব্রেরি অন্তর্ভুক্ত করুন
- লাইব্রেরিকে ইন্টারাপ্ট পিন এবং ইন্টারাপ্ট ফ্ল্যাগ ঘোষণা করুন
#APDS9960_INT নির্ধারণ করুন 2
SparkFun_APDS9960 apds = SparkFun_APDS9960 (); int isr_flag = 0;
- লাইব্রেরি শুরু করুন, সাধারণত সেটআপ ফাংশনের ভিতরে
অকার্যকর সেটআপ()
{ # বিরতি পিনকে INPUT হিসাবে ঘোষণা করুন এবং এটিতে একটি ফাংশন সংযুক্ত করুন pinMode (APDS9960_INT, INPUT); attachInterrupt (0, interruptRoutine, FALLING); যদি (apds.init () && apds.enableGestureSensor (true)) {Serial.println ("APDS-9960 আরম্ভ সম্পূর্ণ"); } অন্য {Serial.println ("APDS-9960 init এর সময় কিছু ভুল হয়েছে!"); } # অন্য কিছু শুরু করতে পারে হয়তো}
- বাধা ফাংশন সংজ্ঞায়িত করুন, এখানে আমরা শুধুমাত্র একটি পতাকা সেট করব
অকার্যকর interruptRoutine () {
isr_flag = 1; }
- লুপ ফাংশনের অভ্যন্তরে পতাকাটি পর্যায়ক্রমে পরীক্ষা করে দেখুন একটি অঙ্গভঙ্গি সনাক্ত করা হয়েছে কিনা
অকার্যকর লুপ ()
{ # পতাকাটি চেক করুন যদি (isr_flag == 1) { # যদি পতাকা সেট করা থাকে, বাধা সরান, হ্যান্ডেলজেস্টার () ফাংশন # এর ভিতরে প্রয়োজনীয় প্রক্রিয়াকরণ করুন এবং তারপর পতাকাটি পুনরায় সেট করুন এবং বিরতি বিচ্ছিন্ন করুন handleGesture (); isr_flag = 0; attachInterrupt (0, interruptRoutine, FALLING); } # অন্য কিছু কোড হয়তো এখানে}
- হ্যান্ডেলজেস্টার () ফাংশন সংজ্ঞায়িত করুন যেখানে আমরা শেষ অঙ্গভঙ্গি জিজ্ঞাসা করতে পারি
অকার্যকর হ্যান্ডেলগেসচার () {
# যদি কোন ইঙ্গিত পাওয়া যায় না, তবে এটি শুধুমাত্র একটি নিরাপদ চেক যদি (! apds.isGestureAvailable ()) {return; } # শেষ ইঙ্গিতটি পড়ে, পরিচিতদের সাথে তুলনা করে এবং একটি বার্তা সুইচ প্রিন্ট করে (apds.readGesture ()) {case DIR_UP: Serial.println ("UP"); বিরতি; কেস DIR_DOWN: Serial.println ("DOWN"); বিরতি; কেস DIR_LEFT: Serial.println ("LEFT"); বিরতি; কেস DIR_RIGHT: Serial.println ("RIGHT"); বিরতি; কেস DIR_FAR: Serial.println ("FAR"); বিরতি; }}
এখন আসুন পুরো কোডটি কার্যক্রমে দেখি:
তাই আমি অঙ্গভঙ্গি সেন্সর এবং নিওপিক্সেল রিং এর বেস API ব্যাখ্যা করেছি, এখন আসুন জিনিসগুলিকে একসাথে রাখি:
অ্যালগরিদম এইভাবে চলে:
- লাইব্রেরি আরম্ভ করুন (উপরের কোড দেখুন)
- "LEDStates" নামে নেতৃত্বাধীন তীব্রতার একটি অ্যারে তৈরি করুন। এই অ্যারেটিতে 24 টি নেতৃত্বাধীন তীব্রতা থাকবে যা 150 থেকে 2 পর্যন্ত অবতরণ পদ্ধতিতে সাজানো হয়
- প্রধান লুপের ভিতরে চেক করুন যে ইন্টারাপ্ট পিনটি সংশোধন করা হয়েছে কি না তাই যদি এটি নেতৃত্বের অ্যানিমেশন বা রঙ পরিবর্তন করার সময় হয়
- "handleGesture ()" ফাংশনটি শেষ অঙ্গভঙ্গি পরীক্ষা করে এবং UP -DOWN অঙ্গভঙ্গিগুলির জন্য ফাংশনটিকে "toggleColor" বলে বা বাম -ডান অঙ্গভঙ্গির জন্য একটি বৈশ্বিক পরিবর্তনশীল "ledDirection" সেট করে
- "toggleColor ()" ফাংশনটি 0, 1, 2 মানগুলির একটির সাথে "colorSelection" নামে একটি বৈশ্বিক পরিবর্তনশীল পরিবর্তন করে
- প্রধান লুপ ফাংশনের ভিতরেও "animateLeds () নামে আরেকটি ফাংশন;" বলা হয়. এই ফাংশনটি 100 মিলিসেকেন্ড পাস করেছে কিনা তা পরীক্ষা করে, এবং যদি তাই হয় তবে এটি "rotateLeds ()" ফাংশন ব্যবহার করে এলইডিগুলিকে ঘোরায় এবং তারপর সেগুলি আবার অঙ্কন করে
- "rotateLeds ()" "intermediateLedStates" নামক অন্য অ্যারে ব্যবহার করে এলইডিগুলিকে সামনে বা পিছনে "ঘুরাবে"।
ঘূর্ণন "প্রভাব" এই মত দেখাবে:
# আরম্ভের পরে
{150, 100, 70, 50, 40, 30, 10, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; # rotateLeds () এর পরে {0, 150, 100, 70, 50, 40, 30, 10, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; # rotateLeds () এর পরে আবার ডাকা হয় {0, 0, 150, 100, 70, 50, 40, 30, 10, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 {0, 0, 0}; # এবং তাই
এর জন্য প্রথমে নতুন অ্যারে তৈরি করে এবং নতুন পজিশনে পুরানো নেতৃত্বের তীব্রতা কপি করে (অবস্থান বৃদ্ধি বা হ্রাস)। তারপরে এটি "ইন্টারমিডিয়েটলেড স্টেটস" এর সাথে "ledStates" অ্যারের ওভাররাইট করে তাই প্রক্রিয়াটি আরও 100 মিলিসেকেন্ডের পরেও চলতে থাকবে।
#অন্তর্ভুক্ত "SparkFun_APDS9960.h"
#অন্তর্ভুক্ত "Adafruit_NeoPixel.h"
#অন্তর্ভুক্ত "ওয়্যার.এইচ" #ডিফাইন NEOPIXED_CONTROL_PIN 6 #ডিফাইন NUM_LEDS 24 #ডিফাইন APDS9960_INT 2 #ডিফাইন LED_SPEED_STEP_INTERVAL 100 Adafruit_NeoPixel স্ট্রিপ = Adafruit_NeoPixel (NEONE_NOX_NOLEX_NOLEX_NOLEX_NOLEX_NOLEX_NOLEX_NOLEX_NOLEX_NOLEX_NOLED_NEX_NEX_NOX_NEX_NEX_NEX_NEX_NEX_NOX SparkFun_APDS9960 apds = SparkFun_APDS9960 (); স্বাক্ষরবিহীন দীর্ঘ lastLedChangeTime = 0; সংক্ষিপ্ত নেতৃত্ব = 0; ছোট রঙ নির্বাচন = 0; বাইট ledStates = {150, 100, 70, 50, 40, 30, 10, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; int isr_flag = 0; অকার্যকর সেটআপ () {Serial.begin (9600); Serial.println ("প্রোগ্রাম শুরু"); strip.begin (); পিনমোড (APDS9960_INT, INPUT); attachInterrupt (0, interruptRoutine, FALLING); যদি (apds.init () && apds.enableGestureSensor (true)) {Serial.println ("APDS-9960 আরম্ভ সম্পূর্ণ"); } অন্য {Serial.println ("APDS-9960 init এর সময় কিছু ভুল হয়েছে!"); } lastLedChangeTime = মিলিস (); Serial.println ("সফলভাবে সূচনা"); } অকার্যকর লুপ () {যদি (isr_flag == 1) {detachInterrupt (0); handleGesture (); isr_flag = 0; attachInterrupt (0, interruptRoutine, FALLING); } animateLeds (); } অকার্যকর interruptRoutine () {isr_flag = 1; } / ** * এটি APDS9960 সেন্সর থেকে অঙ্গভঙ্গিগুলি পরিচালনা করবে * আপ এবং ডাউন অঙ্গভঙ্গি কল করবে টগল কালার ফাংশন * বাম এবং ডান অঙ্গভঙ্গি নেতৃত্বাধীন অ্যানিমেশন পরিবর্তন করবে * / অকার্যকর হ্যান্ডেলজেস্টার () {যদি (!; } সুইচ (apds.readGesture ()) {case DIR_UP: Serial.println ("UP"); টগল কালার (); বিরতি; কেস DIR_DOWN: Serial.println ("DOWN"); টগল কালার (); বিরতি; কেস DIR_LEFT: ledDirection = 1; Serial.println ("LEFT"); বিরতি; কেস DIR_RIGHT: ledDirection = -1; Serial.println ("RIGHT"); বিরতি; কেস DIR_FAR: ledDirection = 0; Serial.println ("FAR"); বিরতি; }} / ** * বর্তমান লেডস রঙ পরিবর্তন করুন * প্রতিবার এই ফাংশনটি বলা হলে লেডস স্টেট পরিবর্তন হবে * / অকার্যকর টগলকোলার () {যদি (রঙের নির্বাচন == 0) {রঙের নির্বাচন = 1 } অন্যথায় যদি (colorSelection == 1) {colorSelection = 2; } অন্য {colorSelection = 0; }} / ** * LED_SPEED_STEP_INTERVAL মিলিসের পরে অ্যানিমেশন চলবে * প্রথমে rotateLeds ফাংশন বলা হয়, তারপর স্ট্রিপ api * / void animateLeds () {if (millis () - lastLedChangeTime <LED_SPEED_STEP_INTERVAL) {রিটার্ন); } rotateLeds (); জন্য (int i = 0; i <NUM_LEDS; i ++) {strip.setPixelColor (i, getColor (ledStates )); strip.show (); } lastLedChangeTime = মিলিস ();), 0, 0} এবং ledDirection হল 1 * তারপর এই ফাংশনটিকে "ledStates" অ্যারে বলা হবার পর {0, 100, 80, 60, 0, 0} একটি ঘূর্ণন প্রভাবকে অনুকরণ করে */ অকার্যকর rotateLeds () {বাইট intermediateLedStates [NUM_LEDS]; জন্য (int i = 0; i <NUM_LEDS; i ++) {intermediateLedStates = 0; } এর জন্য (int i = 0; i <NUM_LEDS; i ++) {if (ledDirection == 1) {if (i == NUM_LEDS -1) {intermediateLedStates [0] = ledStates ; } অন্যথায় {intermediateLedStates [i + 1] = ledStates ; }} অন্য {যদি (i == 0) {intermediateLedStates [NUM_LEDS - 1] = ledStates ; } অন্যথায় {intermediateLedStates [i - 1] = ledStates ; }}} (int i = 0; i <NUM_LEDS; i ++) {ledStates = intermediateLedStates ; }} uint32_t getColor (int তীব্রতা) {সুইচ (colorSelection) {case 0: return strip. Color (তীব্রতা, 0, 0); কেস 1: রিটার্ন স্ট্রিপ রঙ (0, তীব্রতা, 0); ডিফল্ট: রিটার্ন স্ট্রিপ কালার (0, 0, তীব্রতা); }}
আমি আশা করি আপনি এটি উপভোগ করেছেন, আপনি আমাকে প্রশ্ন জিজ্ঞাসা করতে মন্তব্য বিভাগ ব্যবহার করতে পারেন।
প্রস্তাবিত:
সহজ অঙ্গভঙ্গি নিয়ন্ত্রণ - আপনার হাতের নড়াচড়া দিয়ে আপনার আরসি খেলনা নিয়ন্ত্রণ করুন: 4 টি ধাপ (ছবি সহ)
সহজ অঙ্গভঙ্গি নিয়ন্ত্রণ - আপনার হাতের নড়াচড়ার সাথে আপনার আরসি খেলনা নিয়ন্ত্রণ করুন: আমার 'ible' #45 তে স্বাগতম। কিছুক্ষণ আগে আমি লেগো স্টার ওয়ার্স পার্টস ব্যবহার করে BB8 এর একটি সম্পূর্ণরূপে কার্যকরী RC সংস্করণ তৈরি করেছি … স্পেরো দ্বারা তৈরি ফোর্স ব্যান্ড, আমি ভেবেছিলাম: " ঠিক আছে, আমি গ
তিনটি নিওপিক্সেল রিং সহ নিওপিক্সেল ঘড়ি: 7 টি ধাপ
তিনটি নিওপিক্সেল রিং সহ নিওপিক্সেল ঘড়ি: স্টিভ ম্যানলি দ্বারা নিও পিক্সেল ঘড়ির উজ্জ্বল সৃষ্টি আমাকে কমপক্ষে অর্থের জন্য কীভাবে একই রকম ঘড়ি তৈরি করা যায় সে সম্পর্কে এই নির্দেশ তৈরি করতে অনুপ্রাণিত করেছিল। (একটি গুরুত্বপূর্ণ ডাচ অভ্যাস সর্বদা অর্থ সাশ্রয়ের চেষ্টা করছে ;-)) আমি জানতে পেরেছি যে
নিওপিক্সেল রিং সহ জিরোস্কোপ মজা: 4 টি ধাপ (ছবি সহ)
নিওপিক্সেল রিং দিয়ে গাইরোস্কোপ মজা: এই টিউটোরিয়ালে আমরা MPU6050 জাইরোস্কোপ, একটি নিওপিক্সেল রিং এবং একটি আর্ডুইনো ব্যবহার করতে যাচ্ছি যা এমন একটি ডিভাইস তৈরি করতে পারে যা প্রবণতার কোণের সাথে সামঞ্জস্যপূর্ণ। এটি একটি সহজ এবং মজার প্রকল্প এবং এটি যাচ্ছে একটি রুটিবোর্ডে একত্রিত করা।
অঙ্গভঙ্গি হক: হাতের অঙ্গভঙ্গি নিয়ন্ত্রিত রোবট ইমেজ প্রসেসিং ভিত্তিক ইন্টারফেস ব্যবহার করে: 13 টি ধাপ (ছবি সহ)
অঙ্গভঙ্গি হক: ইমেজ প্রসেসিং ভিত্তিক ইন্টারফেস ব্যবহার করে হাতের অঙ্গভঙ্গি নিয়ন্ত্রিত রোবট: অঙ্গভঙ্গি হক একটি সহজ ইমেজ প্রসেসিং ভিত্তিক মানব-মেশিন ইন্টারফেস হিসাবে TechEvince 4.0 এ প্রদর্শিত হয়েছিল। এর উপযোগিতা এই সত্যের মধ্যে নিহিত যে একটি গ্লাভস ছাড়া কোন অতিরিক্ত সেন্সর বা পরিধানযোগ্য নয় যে রোবটিক গাড়িটি নিয়ন্ত্রণ করার জন্য প্রয়োজন হয়
পিএসপি কে কম্পিউটার জয়স্টিক হিসেবে ব্যবহার করা এবং তারপর পিএসপি দিয়ে আপনার কম্পিউটারকে নিয়ন্ত্রণ করা: ৫ টি ধাপ (ছবি সহ)
পিএসপি কে কম্পিউটার জয়স্টিক হিসেবে ব্যবহার করা এবং তারপর পিএসপি দিয়ে আপনার কম্পিউটারকে নিয়ন্ত্রণ করা: আপনি পিএসপি হোমব্রু দিয়ে অনেক ভালো কাজ করতে পারেন, এবং এই নির্দেশে আমি আপনাকে শেখাতে যাচ্ছি কিভাবে আপনার পিএসপি কে গেমস খেলার জন্য জয়স্টিক হিসেবে ব্যবহার করতে হয়, কিন্তু এছাড়াও আছে একটি প্রোগ্রাম যা আপনাকে আপনার মাউস হিসাবে আপনার জয়স্টিক ব্যবহার করতে দেয়। এখানে ম্যাটার