Arduino:Примеры/EsploraJoystickMouse
Содержание | Знакомство с Arduino | Продукты | Основы | Справочник языка Arduino | Примеры | Библиотеки | Хакинг | Изменения | Сравнение языков Arduino и Processing |
Управление курсором мыши при помощи джойстика Esplora[1]
Этот пример демонстрирует, как считывать информацию с джойстика Esplora, используя ее для управления передвижением курсора на компьютере. Вы сделаете свою Esplora мышкой!
Данный скетч заберет управление мышкой и передаст его Esplora. В случае потери контроля над курсором проделайте следующее:
- отключите Esplora;
- откройте скетч «Перемигивание цветами на Esplora» (EsploraBlink) в IDE Arduino;
- снова подключите Esplora к компьютеру, попутно зажав у нее кнопку Reset;
- продолжая нажимать на Reset, кликните по кнопке Upload в IDE Arduino;
- увидев в IDE Arduino сообщение «Done Compiling», отпустите Reset;
То есть, вы загрузите скетч, не управляющий курсором мыши, благодаря чему Esplora перестанет управлять курсором вашего компьютера.
Необходимое оборудование
- Плата Arduino Esplora;
Цепь
Для этого примера нужна лишь Arduino Esplora, через USB-кабель подключенная к компьютеру, а также открытый Serial Monitor.
Расположение джойстика на Esplora
Код
Чтобы отсылать данные на компьютер, вам нужно запустить последовательную передачу данных. Сделаем это при помощи функции Serial.begin(), а скорость соединения установим в 9600 бод.
Теперь, чтобы начать коммуникацию с курсором, вызываем функцию Mouse.begin(). С этого момента Esplora начнет выступать в роли мышки.
Чтобы считывать позицию джойстика, вызываем функции Esplora.readJoystickX() и Esplora.readJoystickY(), а возвращенные ими значения будем сохранять в специально созданных для этого переменных. От каждой оси будут поступать значения в диапазоне от «-512» до «512». Когда джойстик будет находиться по центру, оси X и Y будут давать значение «0».
Кроме того, джойстик, если на него нажать, будет действовать как кнопка. Чтобы считывать это действие, вызовем функцию Esplora.readJoystickSwitch(). Она вернет значение «1», если на джойстик нажать, и «0», если кнопка джойстика нажата не будет.
Чтобы отправлять данные на Serial Monitor, воспользуемся функцией Serial.print(). В итоге, подключив Esplora и открыв Serial Monitor, вы увидите данные примерно такого рода:
Joystick X: 0 Joystick Y: 0 Button: 0
Чтобы получить значения, соответствующие передвижению курсора, воспользуемся функцией map() – она проведет адаптацию значений от джойстика, сохранив полученные числа в переменные.
Теперь, чтобы, собственно, передвигать курсор, воспользуемся функцией Mouse.move(). Ей требуется три аргумента – значения для оси X, для оси Y и для колесика мыши. В этом примере мы будем использовать только два из них – для перемещения курсора по осям X и Y.
Подключив Esplora, откройте среду разработки Arduino и нажмите Shift-Command-M, чтобы открыть Serial Monitor. Теперь, при передвижении рукоятки джойстика на Serial Monitor будут появляться значения, соответствующие перемещению курсора на экрану компьютера.
/*
Управление курсором мыши при помощи джойстика Esplora
Этот пример показывает, как считывать данные от джойстика,
а затем использовать их для управления экранным курсором.
То есть ваша Esplora возьмет на себя роль компьютерной мышки.
Внимание! Данный скетч заберет управление мышкой и передаст его Esplora. В случае потери контроля над курсором, проделайте следующее:
1) отключите Esplora
2) откройте скетч «Перемигивание цветами на Esplora» (EsploraBlink) в IDE Arduino
3) снова подключая Esplora к компьютеру, зажмите у нее кнопку Reset
4) продолжая нажимать на Reset, кликните по кнопке Upload в IDE Arduino
5) увидев в IDE Arduino сообщение «Done Compiling», отпустите Reset
То есть, вы будете загружать скетч, не управляющий курсором мыши, благодаря чему Esplora перестанет управлять курсором вашего компьютера.
Создан 22 декабря 2012 Томом Иго (Tom Igoe),
обновлен 8 марта 2014 Скоттом Фитцджеральдом (Scott Fitzgerald).
http://www.arduino.cc/en/Reference/EsploraReadJoystickSwitch
Этот код не защищен авторским правом.
*/
#include <Esplora.h>
void setup()
{
Serial.begin(9600); // инициализируем последовательную передачу данных на компьютер
Mouse.begin(); // перехватываем у мышки управление экранным курсором
}
void loop()
{
int xValue = Esplora.readJoystickX(); // считываем данные джойстика по оси X
int yValue = Esplora.readJoystickY(); // считываем данные джойстика по оси Y
int button = Esplora.readJoystickSwitch(); // считываем данные от кнопки джойстика
Serial.print("Joystick X: "); // выводим строку, обозначающую, что сейчас будет значение для оси X
Serial.print(xValue); // выводим значение для оси X
Serial.print("\tY: "); // выводим символ «Tab» и строку, обозначающую, что сейчас будет значение для оси Y
Serial.print(yValue); // выводим значение для оси Y
Serial.print("\tButton: "); // выводим символ «Tab» и строку, обозначающую, что сейчас будет значение от кнопки
Serial.print(button); // выводим значение от кнопки
int mouseX = map(xValue, -512, 512, 10, -10); // масштабируем данные от X-оси джойстика (от -512 до 512) в диапазон для перемещения курсора по оси X (от -10 до 10)
int mouseY = map(yValue, -512, 512, -10, 10); // масштабируем данные от Y-оси джойстика (от -512 до 512) в диапазон для перемещения курсора по оси Y (от -10 до 10)
Mouse.move(mouseX, mouseY, 0); // двигаем курсор
if (button == 0) { // если нажата кнопка джойстика
Mouse.press(); // делаем клик мышью
} else {
Mouse.release(); // если кнопка не нажата, отпускаем «кнопку», отвечающую за клик
}
delay(10); // делаем короткую задержку перед тем, как снова двигать курсор
}
См.также
- Esplora.readJoystickX()
- Esplora.readJoystickY()
- Esplora.readJoystickSwitch()
- Mouse and Keyboard library
- Mouse.begin
- Mouse.move()
- map()
Внешние ссылки
Arduino продукты | |
---|---|
Начальный уровень | Arduino Uno • Arduino Leonardo • Arduino 101 • Arduino Robot • Arduino Esplora • Arduino Micro • Arduino Nano • Arduino Mini • Arduino Starter Kit • Arduino Basic Kit • MKR2UNO • TFT-дисплей Arduino |
Продвинутые функции | Arduino Mega 2560 • Arduino Zero • Arduino Due • Arduino Mega ADK • Arduino Pro • Arduino Motor Shield • Arduino USB Host Shield • Arduino Proto Shield • MKR Proto Shield • MKR Proto Large Shield • Arduino ISP • Arduino USB 2 Serial Micro • Arduino Mini USB Serial Adapter |
Интернет вещей | Arduino Yun • Arduino Ethernet • Arduino MKR1000 • Arduino WiFi 101 Shield • Arduino GSM Shield V2 • Arduino WiFi Shield • Arduino Wireless SD Shield • Arduino Wireless Proto Shield • Arduino Ethernet Shield V2 • Arduino Yun Shield • Arduino MKR1000 Bundle |
Носимые устройства | Arduino Gemma • Lilypad Arduino Simple • Lilypad Arduino Main Board • Lilypad Arduino USB • LilyPad Arduino SimpleSnap |
3D-печать | Arduino Materia 101 |
Устаревшие устройства | - |
Примеры Arduino | |
---|---|
Стандартные функции | |
Основы |
|
Цифровой сигнал |
|
Аналоговый сигнал |
|
Связь |
|
Управляющие структуры |
|
Датчики |
|
Дисплей |
Примеры, объясняющие основы управления дисплеем:
|
Строки |
|
USB (для Leonardo, Micro и Due плат) |
В этой секции имеют место примеры, которые демонстрируют использование библиотек, уникальных для плат Leonardo, Micro и Due.
|
Клавиатура |
|
Мышь |
|
Разное |
- Страницы, использующие повторяющиеся аргументы в вызовах шаблонов
- Справочник языка Arduino
- Arduino
- Перевод от Сubewriter
- Проверка:myagkij
- Оформление:myagkij
- Редактирование:myagkij
- Страницы, где используется шаблон "Навигационная таблица/Телепорт"
- Страницы с телепортом
- Пример
- Примеры
- Пример программирования Arduino
- Примеры программирования Arduino