Разберемся, как эмулировать клавиатуру и мышь 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
- Плату выбирать ATtiny85 (Micronucleus / DigiSpark) (см картинку ниже)
Отлично, теперь можно написать скетч и загрузить на плату...
Прошивка загружается следующим образом: ЭМУЛЯТОР НЕ ПОДКЛЮЧАЕМ, ПОРТ НЕ ВЫБИРАЕМ, нажимаем загрузка, ждём компиляции. Появится надпись “подключите плату”. Втыкаем эмулятор в 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
Спасибо за внимание! Если статья вам помогла, оставьте обратную связь.