به نام خدا
سلام خدمت شما دوستان عزیز در سری آموزش های پروژه محور آردوینو در این قسمت قصد داریم به کنترل موس کامپیوتر همراه با جوی استیک با استفاده از آردوینو لئوناردو بپردازیم.با دیجی اسپارک همراه باشید
با استفاده از کتابخانه موس شما میتوانید موس کامیپوترتان را توسط آردوینو های LEONARDO , DUE و MICRO کنترل کنید.
در این پروژه با استفاده از یک جوی استیک دو محوره و یک تاچ سوئیج یک موس واقعی را شبیه سازی میکنیم.حرکت نشان گر موس به مقدار های آنالوگ تولید شده توسط جوی استیک بستگی دارد.با استفاده از دو پین آنالوگ ، مقادیری بین ۰ الی ۱۰۲۳ دریافت میکنیم که با عملیاتی که تابع readAxis وظیفه انجام آن را دارد اعداد را به بازه -۶ الی ۶تبدیل میکنیم. با استفاده از سوئیچی که بر روی جوی استیک قرار دارد عملیات کلیک چپ و با استفاده از سوئیچی که بر روی برد برد قرار گرفته عملیات کلیک راست انجام می شود.
سخت افزار مورد نیاز
آردوینو سریهای DUE , LEONARDO , MICRO
یک عدد تاچ سوئیج
کد های برنامه
#include <Mouse.h> const int mouseButton = 3; // کلیک چپ موس const int rightMouseButton = 4; //کلیک راست موس const int xAxis = A0; // xجوی استیک محور const int yAxis = A1; // yجوی استیک محور int range = 12; // محدوده مقدار حرکت موس int responseDelay = 5; // سرعت حرکت int threshold = range / 4; // مقدار آستانه حرکت int center = range / 2; boolean mouseIsActive = true; void setup () { //سوئیچ متصل به جوی استیک (کلیک چب) و همچنین سوئیچی که به منظور کلیک راست استفاده کرده اایم را در وضعیت پول آپ قرار میدهیم pinMode (mouseButton, 0); digitalWrite (mouseButton, 1); pinMode (rightMouseButton, 0); digitalWrite (rightMouseButton, 1); // موس را فعال میکنیم Mouse.begin (); } void loop () { /* که در قسمت پایین برنامه تعریف کرده ایم مقدار حرکت موس را حول محور ها تعیین میکنیم readAxis با استفاده از تابع این مقدار بین ۶ الی -۶ می باشد. */ int xReading = readAxis (A0); int yReading = readAxis (A1); yReading *= -1; // در صورت فعال بودن موس ، موس طبق مقادیر مشخص به حرکت در می آید if ( mouseIsActive ) { Mouse.move (xReading, yReading, 0); } Serial.println (xReading); //,وضعیت کلیک چپ را بررسی میکنیم که آیا فشار داده شده است یا خیر if ( digitalRead (mouseButton) == LOW ) { // اگر فشرده شده باشد ، فرمان کلیک کردن را صادر میکند if ( !Mouse.isPressed (MOUSE_LEFT) ) { Mouse.press (MOUSE_LEFT); } } else { //در صورتی که کلیک چپ فشرده نشدده باشد ، فرمان رهایی کلیک چپ را صادر میکند if ( Mouse.isPressed (MOUSE_LEFT) ) { Mouse.release (MOUSE_LEFT); } } // کد های کلیک چپ همانند کد های کلیک راست می باشد if ( digitalRead (rightMouseButton) == LOW ) { if ( !Mouse.isPressed (MOUSE_RIGHT) ) { Mouse.press (MOUSE_RIGHT); } } else { if ( Mouse.isPressed (MOUSE_RIGHT) ) { Mouse.release (MOUSE_RIGHT); } } delay (responseDelay); } /* این تابه مقدار انالوگ جوک استیک را میخواند و سپس آن را به مقادیری بین ۶ الی -۶ نسبت میدهد */ int readAxis (int thisAxis) { // مقدر آنالوگ را دریافت میکنیم int reading = analogRead (thisAxis); // مقدار آنالوگ پین را که بینن مقدار ۰ الی ۱۰۲۳ می باشد به مقدار ۰ الی ۱۲ نسبت میدهد reading = map (reading, 0, 1023, 0, range); int distance = reading - center; if (abs(distance) < threshold) { distance = 0; } // return the distance for this axis: return distance; }
[…] آموزش کنترل موس کامپیوتر با جوک استیک با استفاده از آرد… […]
با سلام
برای اردوینو due که با ولتاژ ۳٫۳ کار میکنه باید چیکار کرد ؟
ممنون از آموزش های خوبتون
سلام من برنامه رو کپی کردم با خطای زیر مواجه شدم
مشکلش کجاست
Arduino: 1.6.12 (Windows 7), Board: “Arduino/Genuino Micro”
C:\Users\Sharif\AppData\Local\Temp\arduino_modified_sketch_621412\mouse.ino: In function ‘void setup()’:
mouse:22: error: ‘Mouse’ not found. Does your sketch include the line ‘#include ‘?
Mouse.begin ();
^
C:\Users\Sharif\AppData\Local\Temp\arduino_modified_sketch_621412\mouse.ino: In function ‘void loop()’:
mouse:41: error: ‘Mouse’ not found. Does your sketch include the line ‘#include ‘?
Mouse.move (xReading, yReading, 0);
^
mouse:50: error: ‘Mouse’ not found. Does your sketch include the line ‘#include ‘?
if ( !Mouse.isPressed (MOUSE_LEFT) )
^
mouse:50: error: ‘MOUSE_LEFT’ was not declared in this scope
if ( !Mouse.isPressed (MOUSE_LEFT) )
^
mouse:58: error: ‘Mouse’ not found. Does your sketch include the line ‘#include ‘?
if ( Mouse.isPressed (MOUSE_LEFT) )
^
mouse:58: error: ‘MOUSE_LEFT’ was not declared in this scope
if ( Mouse.isPressed (MOUSE_LEFT) )
^
mouse:67: error: ‘Mouse’ not found. Does your sketch include the line ‘#include ‘?
if ( !Mouse.isPressed (MOUSE_RIGHT) )
^
mouse:67: error: ‘MOUSE_RIGHT’ was not declared in this scope
if ( !Mouse.isPressed (MOUSE_RIGHT) )
^
mouse:73: error: ‘Mouse’ not found. Does your sketch include the line ‘#include ‘?
if ( Mouse.isPressed (MOUSE_RIGHT) )
^
mouse:73: error: ‘MOUSE_RIGHT’ was not declared in this scope
if ( Mouse.isPressed (MOUSE_RIGHT) )
^
C:\Users\Sharif\AppData\Local\Temp\arduino_modified_sketch_621412\mouse.ino: In function ‘int readAxis(int)’:
mouse:96: error: ‘lt’ was not declared in this scope
if ( abs (distance) < threshold )
^
mouse:96: error: expected ‘)’ before ‘;’ token
if ( abs (distance) < threshold )
^
mouse:96: error: expected ‘;’ before ‘)’ token
if ( abs (distance) < threshold )
^
exit status 1
‘Mouse’ not found. Does your sketch include the line ‘#include ‘?
This report would have more information with
“Show verbose output during compilation”
option enabled in File -> Preferences.
با سلام
کدها بررسی و اصلاح شد.
مجددا تست و نتیجه را اعلام کنید.
سلام برنامه خطا داره لطفا راهنمایی کنید
Arduino: 1.8.9 (Windows 7), Board: “Arduino Pro or Pro Mini, ATmega328P (5V, 16 MHz)”
C:\Users\Administrator\Documents\Arduino\jostek\jostek.ino: In function ‘void setup()’:
jostek:23:3: error: ‘Mouse’ not found. Does your sketch include the line ‘#include ‘?
Mouse.begin ();
^
C:\Users\Administrator\Documents\Arduino\jostek\jostek.ino: In function ‘void loop()’:
jostek:42:5: error: ‘Mouse’ not found. Does your sketch include the line ‘#include ‘?
Mouse.move (xReading, yReading, 0);
^
jostek:51:11: error: ‘Mouse’ not found. Does your sketch include the line ‘#include ‘?
if ( !Mouse.isPressed (MOUSE_LEFT) )
^
jostek:51:28: error: ‘MOUSE_LEFT’ was not declared in this scope
if ( !Mouse.isPressed (MOUSE_LEFT) )
^
jostek:59:10: error: ‘Mouse’ not found. Does your sketch include the line ‘#include ‘?
if ( Mouse.isPressed (MOUSE_LEFT) )
^
jostek:59:27: error: ‘MOUSE_LEFT’ was not declared in this scope
if ( Mouse.isPressed (MOUSE_LEFT) )
^
jostek:68:11: error: ‘Mouse’ not found. Does your sketch include the line ‘#include ‘?
if ( !Mouse.isPressed (MOUSE_RIGHT) )
^
jostek:68:28: error: ‘MOUSE_RIGHT’ was not declared in this scope
if ( !Mouse.isPressed (MOUSE_RIGHT) )
Multiple libraries were found for “Mouse.h”
^
jostek:74:10: error: ‘Mouse’ not found. Does your sketch include the line ‘#include ‘?
if ( Mouse.isPressed (MOUSE_RIGHT) )
^
jostek:74:27: error: ‘MOUSE_RIGHT’ was not declared in this scope
Used: C:\Program Files\Arduino\libraries\Mouse
if ( Mouse.isPressed (MOUSE_RIGHT) )
Not used: C:\Users\Administrator\Documents\Arduino\libraries\Mouse-1.0.1
^
Not used: C:\Users\Administrator\Documents\Arduino\libraries\Mouse-1.0.0
exit status 1
‘Mouse’ not found. Does your sketch include the line ‘#include ‘?
This report would have more information with
“Show verbose output during compilation”
option enabled in File -> Preferences.
با سلام
تمامی ارورها مربوط به کتابخانه است. کتابخانه های مورد نیاز را ضمیمه شده است؟
سلام
در این پروژه ای که آموزش دادید، اگر من بخواهم بجای استفاده از جوی استیک، از ولوم روتاری استفاده کنم، امکان پذیر هست؟
یعنی برای حرکت موس به چپ و راست از یک ولوم روتاری استفاده کنم؛ و برای حرکت موس به بالا و پایین از یک ولوم روتاری دیگر استفاده کنم.
با سلام
بله امکان پذیر است ولی به این آموزش مرتبط نیست.
آیا امکانش هست مثل این آموزشی که برای جوی استیک قرار دادید، برای ساخت همچین چیزی که عرض کردم، آموزش بزارید؟
یعنی با استفاده از ۲ عدد ولوم روتاری حرکت موس را کنترل کنیم.
البته اگر بشود اسکرول موس را هم با یک ولوم روتاری دیگر کنترل کرد، عالی میشه.
با تشکر از شما.
با سلام
در حال حاضر چنین آموزشی در سایت منتشر نشده است.
بررسی و در صورت امکان منتشر خواهد شد.