الفرق بين المراجعتين لصفحة: «Arduino/mouse/mousemove»

من موسوعة حسوب
< Arduino‏ | mouse
إضافة محتويات الصفحة.
 
طلا ملخص تعديل
 
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE:الدالة <code>Keyboard.move()‎</code> في أردوينو}}</noinclude>
<noinclude>{{DISPLAYTITLE:التابع <code>Keyboard.move()‎</code> في أردوينو}}</noinclude>
تحرك الدالة <code>move()‎</code> مؤشر الفأرة في الحاسوب المتصل. يُحدَّد الموقع الجديد المراد تحريك المؤشر إليه نسبةً إلى الموقع الحالي للمؤشر.
يحرك التابع <code>move()‎</code> مؤشر الفأرة في الحاسوب المتصل. يُحدَّد الموقع الجديد المراد تحريك المؤشر إليه نسبةً إلى الموقع الحالي للمؤشر.


قبل استعمال الدالة <code>move()‎</code>، يجب استدعاء الدالة <code>[[Arduino/mouse/mousebegin|begin()‎]]</code>.
قبل استعمال التابع <code>move()‎</code>، يجب استدعاء التابع <code>[[Arduino/mouse/mousebegin|begin()‎]]</code>.


==البنية العامة==
==البنية العامة==
سطر 23: سطر 23:
لا يعاد أي شيء.
لا يعاد أي شيء.
==أمثلة==
==أمثلة==
مثالٌ على استعمال الدالة <code>move()‎</code> لتحريك مؤشر الفأرة بناءً على قراءة قيم تشابهية من الرجل A1 والرجل A2:<syntaxhighlight lang="arduino">
مثالٌ على استعمال التابع <code>move()‎</code> لتحريك مؤشر الفأرة بناءً على قراءة قيم تشابهية من الرجل A1 والرجل A2:<syntaxhighlight lang="arduino">
#include <Mouse.h>
#include <Mouse.h>


سطر 98: سطر 98:


== ملاحظات وتحذيرات ==
== ملاحظات وتحذيرات ==
عند استعمال الدالة <code>move()‎</code>، تستحوذ أردوينو على الفأرة الحقيقية المتصلة بالحاسوب آنذاك، لذا تأكد من تحكمك بكل شيء قبل استدعاء هذه الدالة. يمكن مثلًا استعمال زر لنتمكن عبر الضغط عليه من التحكم بعملية التبديل بين الفأرتين (الافتراضية والفعلية).
عند استعمال التابع <code>move()‎</code>، تستحوذ أردوينو على الفأرة الحقيقية المتصلة بالحاسوب آنذاك، لذا تأكد من تحكمك بكل شيء قبل استدعاء هذه التابع. يمكن مثلًا استعمال زر لنتمكن عبر الضغط عليه من التحكم بعملية التبديل بين الفأرتين (الافتراضية والفعلية).


==انظر أيضًا==
==انظر أيضًا==
* الدالة <code>[[Arduino/mouse/mousebegin|begin()‎]]</code>: تبدأ عملية محاكاة (emulating) لفأرة افتراضية موصولة بالحاسوب المتصل.
*التابع <code>[[Arduino/mouse/mousebegin|begin()‎]]</code>: يبدأ عملية محاكاة (emulating) لفأرة افتراضية موصولة بالحاسوب المتصل.
* الدالة <code>[[Arduino/mouse/mouseclick|click()‎]]</code>: ترسل ضغطة سريعة وخاطفة إلى الحاسوب عند موقع مؤشر الفأرة الحالي.
*التابع <code>[[Arduino/mouse/mouseclick|click()‎]]</code>: يرسل ضغطة سريعة وخاطفة إلى الحاسوب عند موقع مؤشر الفأرة الحالي.
* الدالة <code>[[Arduino/mouse/mouseend|end()‎]]</code>: توقف عملية محاكاة (emulating) وصل فأرة افتراضية بالحاسوب المتصل. 
*التابع <code>[[Arduino/mouse/mouseend|end()‎]]</code>: يوقف عملية محاكاة (emulating) وصل فأرة افتراضية بالحاسوب المتصل. 
* الدالة <code>[[Arduino/mouse/mousepress|press()‎]]</code>: ترسل ضغطة مستمرة إلى الحاسوب عند موقع مؤشر الفأرة الحالي.
*التابع <code>[[Arduino/mouse/mousepress|press()‎]]</code>: يرسل ضغطة مستمرة إلى الحاسوب عند موقع مؤشر الفأرة الحالي.
 
*التابع <code>[[Arduino/mouse/mouserelease|release()‎]]</code>: يحرِّر زر الفأرة الذي ضُغِط عليه مسبقًا باستعمال التابع <code>[[Arduino/mouse/mousepress|press()‎]]</code>.
* الدالة <code>[[Arduino/mouse/mouserelease|release()‎]]</code>: تحرِّر زر الفأرة الذي ضُغِط عليه مسبقًا باستعمال الدالة <code>[[Arduino/mouse/mousepress|press()‎]]</code>.
*التابع <code>[[Arduino/mouse/mouseispressed|isPressed()‎]]</code>: يتحقَّق إن كان زر معيَّن من أزرار الفأرة مضغوطًا أم لا.
* الدالة <code>[[Arduino/mouse/mouseispressed|isPressed()‎]]</code>: تتحقَّق إن كان زر معيَّن من أزرار الفأرة مضغوطًا أم لا.
 
==مصادر==
==مصادر==
*[https://www.arduino.cc/reference/en/language/functions/usb/mouse/mousemove/ صفحة Keyboard.move()‎ في توثيق أردوينو الرسمي.]
*[https://www.arduino.cc/reference/en/language/functions/usb/mouse/mousemove/ صفحة التابع Keyboard.move()‎ في توثيق أردوينو الرسمي.]
[[تصنيف: Arduino]]
[[تصنيف: Arduino]]
[[تصنيف: Arduino Function]]
[[تصنيف: Arduino Method]]
[[تصنيف: Arduino USB]]
[[تصنيف: Arduino USB]]
[[تصنيف: Arduino Mouse]]
[[تصنيف: Arduino Mouse]]

المراجعة الحالية بتاريخ 20:24، 6 نوفمبر 2018

يحرك التابع move()‎ مؤشر الفأرة في الحاسوب المتصل. يُحدَّد الموقع الجديد المراد تحريك المؤشر إليه نسبةً إلى الموقع الحالي للمؤشر.

قبل استعمال التابع move()‎، يجب استدعاء التابع begin()‎.

البنية العامة

Mouse.move(xVal, yPos, wheel);

المعاملات

xVal

محرفٌ ذو إشارة (signed char) يحدِّد مقدار انتقال المؤشر على المحور الأفقي (x-axis).

yVal

محرفٌ ذو إشارة (signed char) يحدِّد مقدار انتقال المؤشر على المحور الشاقولي (y-axis).

wheel

محرفٌ ذو إشارة (signed char) يحدِّد مقدار تدوير عجلة الفأرة.

القيم المعادة

لا يعاد أي شيء.

أمثلة

مثالٌ على استعمال التابع move()‎ لتحريك مؤشر الفأرة بناءً على قراءة قيم تشابهية من الرجل A1 والرجل A2:

#include <Mouse.h>

const int xAxis = A1;         // X من أجل المحور A1 حساس تشابهي مرتبط  بالرجل 
const int yAxis = A2;         // Y من أجل المحور A2 حساس تشابهي مرتبط بالرجل

int range = 12;               // Y و X تحديد مجال المخرجات من أجل التحركات على
int responseDelay = 2;       // زمن تأخير لانتظار استجابة الفأرة بالميلي ثانية
int threshold = range/4;      // إعادة ضبط العتبة
int center = range/2;         // إعادة ضبط قيمة موقع المؤشر
int minima[] = {
  1023, 1023};                // {x, y} الفعلية الدنيا من أجل analogRead قيمة الدالة
int maxima[] = {
  0,0};                       // {x, y} الفعلية العظمي من أجل analogRead قيمة الدالة
int axis[] = {
  xAxis, yAxis};              // {x, y} رقم الأرجل من أجل
int mouseReading[2];          // {x, y} قراءات الفأرة النهائية من أجل


void setup() {
 Mouse.begin();
}

void loop() {

// قراءة قيم المحاور ووضعها ضمن المقياس
  int xReading = readAxis(0);
  int yReading = readAxis(1);

// حرك مؤشر الفأرة
    Mouse.move(xReading, yReading, 0);
    delay(responseDelay);
}

/*
  ثم جعل مجال الدخل التشابهي (y أو x قراءة محور (0 أو 1 من أجل
  <range> ضمن المجال من 0 إلى
*/

int readAxis(int axisNumber) {
  int distance = 0;    // مسافة من منتصف مجال الخرج 

  // قراءة الدخل التشابهي
  int reading = analogRead(axis[axisNumber]);

// إن تجاوزت قيمة القراءة الحالية القيمة العظمى أو الدنيا
// للمحور الحالي، فسيعاد ضبط هاتين القيمتين
  if (reading < minima[axisNumber]) {
    minima[axisNumber] = reading;
  }
  if (reading > maxima[axisNumber]) {
    maxima[axisNumber] = reading;
  }

  // تغيير مجال القراءة من مجال الدخل التشابهي إلى مجال الخرج
  reading = map(reading, minima[axisNumber], maxima[axisNumber], 0, range);

 // ،خارج موضع العتبة المتبقي reading إن كانت قيمة
 // فاستعمل هذه القيمة
  if (abs(reading - center) > threshold) {
    distance = (reading - center);
  }

  // إلى عكسه من أجل Y يحتاج المحور
  // تعيين موضع حركة المؤشر بشكل صحيح
  if (axisNumber == 1) {
    distance = -distance;
  }

  // إعادة المسافة من أجل المحور المعطى
  return distance;
}

ملاحظات وتحذيرات

عند استعمال التابع move()‎، تستحوذ أردوينو على الفأرة الحقيقية المتصلة بالحاسوب آنذاك، لذا تأكد من تحكمك بكل شيء قبل استدعاء هذه التابع. يمكن مثلًا استعمال زر لنتمكن عبر الضغط عليه من التحكم بعملية التبديل بين الفأرتين (الافتراضية والفعلية).

انظر أيضًا

  • التابع begin()‎: يبدأ عملية محاكاة (emulating) لفأرة افتراضية موصولة بالحاسوب المتصل.
  • التابع click()‎: يرسل ضغطة سريعة وخاطفة إلى الحاسوب عند موقع مؤشر الفأرة الحالي.
  • التابع end()‎: يوقف عملية محاكاة (emulating) وصل فأرة افتراضية بالحاسوب المتصل. 
  • التابع press()‎: يرسل ضغطة مستمرة إلى الحاسوب عند موقع مؤشر الفأرة الحالي.
  • التابع release()‎: يحرِّر زر الفأرة الذي ضُغِط عليه مسبقًا باستعمال التابع press()‎.
  • التابع isPressed()‎: يتحقَّق إن كان زر معيَّن من أزرار الفأرة مضغوطًا أم لا.

مصادر