الدالة Keyboard.move()‎ في أردوينو

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

مصادر