Корпус мыши с джойстиком 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); // отпускаем левую кнопку
}
}

Категория: Сделай сам

12:16
1
Нет комментариев. Ваш будет первым!

Ссылка появится после регистрации

Похожие модели

Корпус для адаптера питания
📁 Корпус для преобразователя питания сПодробнее
Корпус для DC регулируемого источника
📁 Корпус для DC регулируемого источникаПодробнее
Крепление "народного" налобного фонаря
📁 Крепление «народного» налобного фонаряПодробнее
Ручка настройки Yaesu FT-817
📁 Ручка VFO для FT-817/818. ИспользуйтеПодробнее
Модель кнопки для Imax B6
Вам понадобится капля клея, чтобыПодробнее
Антенный изолятор "орешек"
Это стандартный изолятор дляПодробнее
Адаптер питания Yaesu FT-817
📁 Вертикальный адаптер под коннекторыПодробнее
Корпус для ESP32 WROOM
📁 Корпус для ESP32 WROOM 📐 STL 🪵 PETGПодробнее
Корпус для ESP32
📁 3D модель корпуса для платы NodeMCU наПодробнее
Станок для намотки катушек с филаментом
📁 Станок для намотки катушек сПодробнее
Кабельный ввод
📁 3D модель для печати кабельнойПодробнее
Кабельный ввод #2
📁 Компактный контейнер с завинчивающейсяПодробнее
Кабельный гермоввод #3
📁 3D модель для печати кабельногоПодробнее
Кабельные вводы различных размеров
📁 Кабельные вводы различных размеровПодробнее
Распределительная коробка
📁 3D модель для печати распределительнойПодробнее
Водозащищенный кабельный ввод
📁 3D модель кабельного ввода сПодробнее
Кабельный ввод #4
📁 3D модель для печати качественногоПодробнее
Распределительная коробка с креплением на стену
📁 Распределительная коробка с креплениемПодробнее
Адаптеры для SIM карт - 3D модель для печати
📁 Адаптеры для SIM карт — 3D модель дляПодробнее
Корпус для метеодатчика на ESP8266
📁 Корпус для метеодатчика на ESP8266Подробнее
Улучшенный дрон «Nano Long Range» на 1х18650
📁 Улучшенный дрон «Nano Long Range» наПодробнее
Электронные "песочные часы"
📁 Электронные «песочные часы» 📐 STLПодробнее
Контейнер для батарей ft-817
📁 Контейнер для аккумулятора FT-817 сПодробнее
Защитный каркас Yaesu FT 817
📁 Защитные рельсы для Yaesu FT 817 и 818Подробнее
YAESU FT-817 Рельсы
📁 Рельсы с подвесом для тангенты иПодробнее
Портативный настольный источник питания
📁 Портативный настольный источникПодробнее
Кейс для хранения батарей ( 21700, 18650, AA, AAA)
📁 Кейс для хранения батарей ( 21700Подробнее
Каркас для батарей 18650
📁 Корпус для Heltec V4 с GPS, проектПодробнее
Корпус для датчика на esp8266
📁 Корпус для датчика на esp8266 📐 STLПодробнее
Корпус для метеодатчика с анемометром
📁 Корпус для метеодатчика с анемометромПодробнее
Посещая этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.