Arduino:Примеры/MouseController

Материал из Онлайн справочника
Версия от 21:52, 13 декабря 2016; Myagkij (обсуждение | вклад) (Замена текста — «<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS">» на «<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS" enclose="div">»)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Перейти к навигацииПерейти к поиску

Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.


Управление мышью[1]

Плата Arduino Due способна выступать в качестве USB-хоста для периферийных устройств вроде мыши, подключенной к порту SerialUSB. Данный пример демонстрирует использование класса MouseController из библиотеки USBHost.

Необходимое оборудование

  • Плата Arduino Due
  • USB-мышь

Код

/*
 Управление мышью

 Демонстрирует использование USB-мыши, подключенной к штатному 
 USB-порту на плате Arduino Due.

 Создан Кристианом Мэгли (Cristian Maglie) 8 октября 2012 года. 

 http://arduino.cc/en/Tutorial/MouseController

 Этот фрагмент кода не защищен авторским правом.
 */

// подключаем библиотеку MouseController:
#include <MouseController.h>

// инициализируем USB-контроллер:
USBHost usb;

// подсоединяем к USB-контроллеру контроллер для мыши:
MouseController mouse(usb);

// переменные, в которых будут храниться статусы кнопок мыши:
boolean leftButton = false;
boolean middleButton = false;
boolean rightButton = false;

// функция, «перехватывающая» движения мыши: 
void mouseMoved() {
  Serial.print("Move: ");  //  "Движение: "
  Serial.print(mouse.getXChange());
  Serial.print(", ");
  Serial.println(mouse.getYChange());
}

// функция, «перехватывающая» движения мыши при нажатой кнопке: 
void mouseDragged() {
  Serial.print("DRAG: ");  //  "Перетаскивание: "
  Serial.print(mouse.getXChange());
  Serial.print(", ");
  Serial.println(mouse.getYChange());
}

// функция, «перехватывающая» нажатия на кнопки мыши: 
void mousePressed() {
  Serial.print("Pressed: ");  //  "Нажата кнопка: "
  if (mouse.getButton(LEFT_BUTTON)){
    Serial.print("L");  //  "левая"
    leftButton = true;
  }
  if (mouse.getButton(MIDDLE_BUTTON)){
    Serial.print("M");  //  "средняя"
    middleButton = true;
  }
  if (mouse.getButton(RIGHT_BUTTON)){
    Serial.print("R");  //  "правая"
    Serial.println();
    rightButton = true;
  }
}

// функция, «перехватывающая» отпускания кнопок мыши:
void mouseReleased() {
  Serial.print("Released: ");  //  "Отпущена кнопка: "
  if (!mouse.getButton(LEFT_BUTTON) && left==true) {
    Serial.print("L");  //  "левая"
    leftButton = false;
  }
  if (!mouse.getButton(MIDDLE_BUTTON) && middle==true) {
    Serial.print("M");  //  "средняя"
    middleButton = false;
  }
  if (!mouse.getButton(RIGHT_BUTTON) && right==true) {
    Serial.print("R");  //  "правая"
    rightButton = false;
  }
  Serial.println();
}

void setup()
{
  Serial.begin(9600);
  Serial.println("Program started");    //  "Скетч запущен"
  delay(200);
}

void loop()
{
  // обрабатываем USB-задач:
  usb.Task();
}

См.также

Внешние ссылки