Корпус мыши с джойстиком Arduino
Корпус для мыши-джойстика, сделанный из Arduino Pro Micro, модуля джойстика и тактового переключателя. Поля узкие, поэтому рекомендуется слегка подпилить внутренние направляющие корпуса и/или неровные стороны самих досок, чтобы их было легче вставить. Точки пайки на Arduino также должны быть низкопрофильными и обращены внутрь, а излишки припоя под платой джойстика необходимо отрезать.
Модифицированный код Arduino для поддержки щелчка правой кнопкой мыши по кон��акту 2:
/* Пример мыши с HID-джойстиком
автор: Джим Линдблом
дата: 12.01.2012
лицензия: Лицензия MIT. Не стесняйтесь использовать этот код для любых целей.
Никаких ограничений. Просто сохраните эту лицензию, если вы продолжите использовать ее.
используйте код в своих будущих начинаниях! Используйте повторно и делитесь.
Это очень упрощенный код, который позволяет вам включить
Джойстик для большого пальца SparkFun (http://www.sparkfun.com/products/9032)
в HID-мышь. Кнопка выбора на джойстике настроена
как щелчок левой кнопкой мыши.
*/
#include
int horzPin = A0; // Аналоговый выход горизонтального контакта джойстика
int vertPin = A1; // Аналоговый выход вертикального контакта джойстика
интервал селПин = 9; // выбираем контакт кнопки джойстика
интервал rclPin = 2; // выбираем контакт кнопки джойстика
int vertZero, horzZero; // Сохраняет начальное значение каждой оси, обычно около 512
интервал vertValue, horzValue; // Сохраняет текущий аналоговый выход каждой оси
const int чувствительность = 200; // Более высокое значение чувствительности = более медленная мышь, должно быть <= около 500
int mouseClickFlag = 0;
ИНТ rightClickFlag = 0;
//int invertMouse = 1; //Инвертируем джойстик в зависимости от ориентации
int invertMouse = -1; //Неинвертированный джойстик в зависимости от ориентации
недействительная настройка()
{
pinMode(horzPin, INPUT); // Устанавливаем оба аналоговых контак��а как входы
pinMode(vertPin, INPUT);
pinMode(selPin, INPUT); // устанавливаем пин выбора кнопки в качестве входных данных
digitalWrite(selPin, ВЫСОКИЙ); // Потяните кнопку, выберите высокий уровень контакта
pinMode(rclPin, INPUT); // устанавливаем пин выбора кнопки в качестве входных данных
digitalWrite(rclPin, ВЫСОКИЙ); // Потяните кнопку, выберите высокий уровень контакта
задержка(1000); // короткая задержка, позволяющая выходам стабилизироваться
vertZero = AnalogRead(vertPin); // получаем начальные значения
horzZero = AnalogRead(horzPin); // Джойстик должен находиться в нейтральном положении при чтении этих строк
Мышь.begin(); //Инициализируем эмуляцию мыши
}
недействительный цикл()
{
vertValue = AnalogRead(vertPin) — vertZero; // читаем вертикальное смещение
horzValue = AnalogRead(horzPin) — horzZero; // считываем горизонтальное смещение
если (vertValue!= 0)
Mouse.move(0, ((vertValue/чувствительность)), 0); // перемещаем мышь по оси Y
если (horzValue!= 0)
Mouse.move((invertMouse * (horzValue/чувствительность)), 0, 0); // перемещаем мышь по оси X
if ((digitalRead(selPin) == 0) && (!mouseClickFlag)) // если нажата кнопка джойстика
{
мышьКликФлаг = 1;
Mouse.press(MOUSE_LEFT); // нажимаем левую кнопку вниз
}
else if ((digitalRead(selPin)) && (mouseClickFlag)) // если кнопка джойстика не нажата
{
мышьКликФлаг = 0;
Mouse.release(MOUSE_LEFT); // отпускаем левую кнопку
}
if ((digitalRead(rclPin) == 0) && (!rightClickFlag)) // если нажата кнопка джойстика
{
правыйКликФлаг = 1;
Mouse.press(MOUSE_RIGHT); // нажимаем левую кнопку вниз
}
else if ((digitalRead(rclPin)) && (rightClickFlag)) // если кнопка джойстика не нажата
{
правыйКликФлаг = 0;
Mouse.release(MOUSE_RIGHT); // отпускаем левую кнопку
}
}
Категория: Сделай сам





























