Подключить мышь к Arduino довольно просто. Всего несколько проводов — и можно легко интегрировать её в свои проекты. Метод, который мы опишем в этой статье, позволяет использовать мышь в качестве датчика для определения положения или движения объектов, например, автомобилей или роботов.
Как это работает
Сначала важно отметить, что этот метод работает только с мышами, поддерживающими протокол PS/2. Современные мыши, особенно беспроводные, поддерживают только USB и больше не «понимают» PS/2.
PS/2 — это последовательный протокол, аналогичный UART, но с одним важным отличием: PS/2 является синхронным протоколом, что означает, что данные и тактовый сигнал передаются по разным проводам. Благодаря этому можно легко использовать встроенный последовательный интерфейс Arduino для приема данных PS/2 от мыши.
Схема подключения
На изображениях ниже показано, как подключить мышь с разъемом PS/2 и USB-совместимую мышь с поддержкой PS/2 к Arduino Nano или UNO.
- Данные (Data) подключаются к пину Rx на Arduino.
- Тактовый сигнал (Clock) подключается к пину 4.
- Между Data и +5V устанавливается резистор на 10 кОм, чтобы можно было загружать программы на Arduino, пока мышь подключена. После завершения разработки этот резистор можно удалить.


Библиотека для Arduino
С помощью небольшой библиотеки PS2Mouse можно легко интегрировать мышь в свои проекты. Вот пример кода, который отправляет координаты мыши в последовательный порт:
#include "PS2Mouse.h"
#define DATA_PIN 5
#define CLOCK_PIN 6
PS2Mouse mouse(CLOCK_PIN, DATA_PIN);
void setup() {
Serial.begin(9600);
mouse.initialize();
}
void loop() {
MouseData data = mouse.readData();
Serial.print(data.status, BIN);
Serial.print("\tx=");
Serial.print(data.position.x);
Serial.print("\ty=");
Serial.print(data.position.y);
Serial.print("\twheel=");
Serial.print(data.wheel);
Serial.println();
delay(20);
}
Этот код считывает данные о движении мыши и выводит их в последовательный порт, где можно отслеживать координаты X, Y и прокрутку колеса.