التابع Keyboard.move()‎ في أردوينو

من موسوعة حسوب
< Arduino‏ | mouse

يحرك التابع 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()‎: يتحقَّق إن كان زر معيَّن من أزرار الفأرة مضغوطًا أم لا.

مصادر