Making a computer mouse with Arduino Leonardo (মাউস নষ্ট? আছে লিওনার্দো।)
কেমন লাগে বলুন তো? যদি মাঝরাঁতে কম্পিউটারে কাজ করতে করতে হঠাৎই মাউসটা নষ্ট হয়ে যায়? তাও আবার পিসিবি ডিজাইনিং বা ড্রইং এর মতো কোনো কাজ, যা করতে মাউসটা খুবই দরকার? দোকানপাট তো তখন খোলা পাবেন না। সুখবরটা হচ্ছে, আপনার কাছে একটি আরডুইনো লিওনার্দো , পাঁচটি পুশ বাটন আর কিছু জাম্পার ওয়্যার থাকলেই আপনি একটি মাউস বানিয়ে এই বিপদ থেকে উদ্ধার পেতে পারেন। এই এক্সপেরিমেন্টে আমরা ব্রেডবোর্ডে এমনই একটি মাউস তৈরী করব।
প্রয়োজনীয় যন্ত্রপাতি | পরিমান |
Arduino Leonardo | 1 |
Push button switch | 5 |
10K resistors | 5 |
Male to male jumper wires | 19 |
Breadboard | 1 |
আরডুইনো লিওনার্দোঃ
আরডুইনো লিওনার্দো হচ্ছে ATmega32U4 ভিত্তিক একটি আরডুইনো বোর্ড। এর পিনসংখ্যা আরডুইনো উনোর সমান হলেও এর কিছু বৈশিষ্ট্য একে উনো থেকে আলাদা করেছে। তেমনই একটি বৈশিষ্ট্য হল, এই আরডুইনো বোর্ডটি একটি HID অর্থ্যাৎ Human Interface Device হিসেবে কাজ করতে সক্ষম। মানে শুধু মাউস নয়। কম-বেশি কিছু কম্পোনেন্ট যোগ করলে আপনি একে একটি কিবোর্ড বানিয়ে টাইপ করতে এমনকি জয়স্টিক বানিয়ে গেমও খেলতে পারেন! আরও বিস্তারিত জানতে আরডুইনোর ওয়েবসাইটের এই সেকশনটি দেখুন।
সার্কিটঃ
arduino.cc এর সৌজন্যে পাওয়া নিচের সার্কিট ডায়াগ্রামগুলো অনুযায়ী সার্কিট কানেকশন সম্পন্ন করুন।
কোডঃ
আরডুইনো লিওনার্দোর mouse.h লাইব্রেরি লিওনার্দো বোর্ডকে একটি মাউস হিসেবে কাজ করায়। Mouse.begin() নামক ফাংশনটি মাউসকে ইনিশিয়ালাইজ করবে। Mouse.move() নামক ফাংশনটি কার্সারকে আপনার কম্পিউটারে মুভ করায়। Mouse.isPressed(); নামক ফাংশনটি চেক করে মাউসে কোনো ক্লিক করা হয়েছে কি না। ক্লিক বাটনটি ছেড়ে দিতে Mouse.release() দ্বারা নির্দেশ দেওয়া হয়।
উপরোক্ত সার্কিট ডায়াগ্রাম অনুযায়ী সার্কিট কানেকশন দেবার পর আরডুইনোকে কম্পিউটারের সাথে কানেক্ট করে নিচের কোডটি আপলোড করুন। আপলোড সম্পন্ন হবার পর সার্কিটটি একটি মাউসের মতো আচরন করবে। পিন নং D2,D3,D4,D5 প্রেস করলে যথাক্রমে কার্সার উপরে,নিচে,বামে,ডানে মুভ করবে। D6 প্রেস করলে কার্সারের সিঙ্গেল লেফট ক্লিকের কাজ হবে। বিশেষভাবে মনে রাখবেন,
Mouse.begin() আপনার কম্পিউটারের কার্সারের নিয়ন্ত্রন নিয়ে নেয়। কোডটি আরডুইনোতে যখন আপলোড করবেন তখন অবশ্যই পুরো সার্কিটটি সেটআপ করে রাখবেন। নাহলে, মাউসের কার্সার উল্টোপাল্টাভাবে পুরো কম্পিউটার স্ক্রিনে ঘুরে বেড়াতে থাকবে।
#include "Mouse.h" // set pin numbers for the five buttons: const int upButton = 2; const int downButton = 3; const int leftButton = 4; const int rightButton = 5; const int mouseButton = 6; int range = 5; // output range of X or Y movement; affects movement speed int responseDelay = 10; // response delay of the mouse, in ms void setup() { // initialize the buttons' inputs: pinMode(upButton, INPUT); pinMode(downButton, INPUT); pinMode(leftButton, INPUT); pinMode(rightButton, INPUT); pinMode(mouseButton, INPUT); // initialize mouse control: Mouse.begin(); } void loop() { // read the buttons: int upState = digitalRead(upButton); int downState = digitalRead(downButton); int rightState = digitalRead(rightButton); int leftState = digitalRead(leftButton); int clickState = digitalRead(mouseButton); // calculate the movement distance based on the button states: int xDistance = (rightState - leftState) * range; int yDistance = (downState - upState) * range; // if X or Y is non-zero, move: if ((xDistance != 0) || (yDistance != 0)) { Mouse.move(xDistance, yDistance, 0); } // if the mouse button is pressed: if (clickState == HIGH) { // if the mouse is not pressed, press it: if (!Mouse.isPressed(MOUSE_LEFT)) { Mouse.press(MOUSE_LEFT); } } // else the mouse button is not pressed: else { // if the mouse is pressed, release it: if (Mouse.isPressed(MOUSE_LEFT)) { Mouse.release(MOUSE_LEFT); } } // a delay so the mouse doesn't move too fast: delay(responseDelay); }
আমাদের সেটআপটি দেখতে ছিল নিচের ছবির মতোন।
Love it..