Найти тему
Дмитрий Деордице

USB эмулятор движения | нажатий мыши | клавиатуры. (через Arduino IDE на плате digispark с ядром atiny85)

Оглавление

Разберемся, как эмулировать клавиатуру и мышь c помощью USB эмулятора, перепрограммировать который можно через Arduino IDE.

В эмулятор вшита программа движения мыши на 1px во все стороны, чтобы компьютер не уходил в спящий режим. Ссылка на USB эмулятор.

Если нужно сделать что-то персональное для эмуляции клавиатуры, мыши или все вместе, ниже решение!

Берем USB эмулятор, который можно запрогать через Arduino IDE, для этого понадобиться сделать следующее:

1. Устанавить Arduino IDE с официального сайта по ссылке.

2. Использовать будем ядро ATTinyCore, для этого:

  • переходим в меню -> Arduino IDE -> Параметры -> дополнительные ссылки -> http://drazzy.com/package_drazzy.com_index.json -> ок. (см. картинку ниже).
  • В расширениях устанавливаем ATTinyCore
-2
  • Плату выбирать ATtiny85 (Micronucleus / DigiSpark) (см картинку ниже)
-3

Отлично, теперь можно написать скетч и загрузить на плату...

Прошивка загружается следующим образом: ЭМУЛЯТОР НЕ ПОДКЛЮЧАЕМ, ПОРТ НЕ ВЫБИРАЕМ, нажимаем загрузка, ждём компиляции. Появится надпись “подключите плату”. Втыкаем эмулятор в USB и прошивка загружается.

Библиотеки

Большинство Arduino-библиотек совместимы с дигиспарком, также у него есть свой набор встроенных библиотек (ссылка на библиотеки в новом ядре). Из них можно выделить:

  • Adafruit_NeoPixel – оптимизированная библиотека для адресной ленты
  • DigisparkJoystick – USB джойстик
  • DigisparkKeyboard – USB клавиатура
  • DigisparkMouse – USB мышь
  • DigisparkSoftSerial – программный Serial. Название отличается от стандартной библиотеки!
  • DigisparkTinyPinChange – прерывания на любых пинах

Для демонстрации работы с мышью загрузим следующий скетч:

#include <DigiMouse.h>

void setup() {

DigiMouse.begin(); //start or reenumerate USB

}

void loop() {

// If not using plentiful DigiMouse.delay(), make sure to call

// DigiMouse.update() at least every

ledOn();

DigiMouse.moveX(2);

DigiMouse.delay(500);

ledOff();

DigiMouse.moveX(-2);

DigiMouse.delay(500);

}

void ledOff(){q

// turn the LED off by setting the voltage to LOW/Users/dmitrijdeordice/Desktop/Снимок экрана 2024-07-25 в 16.19.35.png

digitalWrite(0, LOW);

digitalWrite(1, LOW);

}

void ledOn(){

// turn the LED on by setting the voltage to HIGH

digitalWrite(0, HIGH);

digitalWrite(1, HIGH);

}

Для демонстрации работы с клавиатурой:

#include "Keyboard.h"

void setup() {

Keyboard.begin(); //Инициализация

}

void loop() {

Keyboard.press(KEY_LEFT_GUI); //Кнопка win

delay(500);

Keyboard.press('r'); //Win+R

delay(500);

Keyboard.release(KEY_LEFT_GUI);

Keyboard.println("cmd"); // вызываем командную строку

pressEnter();

delay(500);

Keyboard.print("starrt chrome https://amperkot.ru/"); //Открываем браузер через cmd

pressEnter();

Keyboard.print("exit");

pressEnter();

delay(1000);

Keyboard.press(KEY_F11); //На весь экран

delay(500);

Keyboard.release(KEY_F11);

Keyboard.releaseAll(); //Отпустить все

Keyboard.end();

}

void pressEnter() {

Keyboard.press(KEY_RETURN);

delay(50);

Keyboard.release(KEY_RETURN);

}

Если поймали ошибку: fork/exec /Users/XXXXX/Library/Arduino15/packages/arduino/tools/avr-gcc/4.8.1-arduino5/bin/avr-g++: bad CPU type in executable

Error compiling for board Digispark (Default - 16.5mhz).

Выполнить следующий код в терминале:

cd ~/Library/Arduino15/packages/arduino/tools/avr-gcc

mv 4.8.1-arduino5/ orig.4.8.1

ln -s ~/Library/Arduino15/packages/arduino/tools/avr-gcc/7.3.0-atmel3.6.1-arduino7 4.8.1-arduino5

Спасибо за внимание! Если статья вам помогла, оставьте обратную связь.