<=

Красная точка

Решил начать с непонятного: заведется красная точка – значит можно продолжать проект. Открыл книгу, ну все понятно. Подключил – не работает.

Классика.

Поскольку serial port во всей красе застал уже в трудовых буднях, оттого начал испытывать стресс, но благодаря своей природной настойчивости, я разобрался куда ставить паяльник. Итак, у нас 5 контактов, 3 из них описаны на схеме:

  1. +5v - VCC - PWR он же power. Питальник по-нашему.
  2. Земля, нейтраль, GND.
  3. DATA, он же DTA подключается к выбранному входу RP2040 и через резистор 4.7 кОм к +5v
  4. СLOCK, от же CLK. Подключаем ровно как DATA из п.3
  5. RST, он же RESET, через пленочный конденсатор 2.2мкф к +5V и через 100кОм к GND. Через этот пин мк может рестартовать контроллер когда готов получать от него данные, т.к. в ps/2 хот плаг не завезли.

Что же делать с еще тремя свободными пинами? А это кнопки, если замкнуть их на GND, трекпоинт отправит в малину нажатие ЛКМ, ПКМ или нажатие на колесо.

Было изведено 2 кг ABS пластика на тестовые образцы, все они как один были некуда не годными. На первых итерациях было много лишних клавиш таких как Delete, Insert, PrintScreen, 4 клавиши курсора, но в процессе оптимизаций они канули в лету, а точнее в следующий слой) Оказалось очень удобно иметь “стрелочки” всегда под пальцами по волшебному модификатору Fn. Фотокарточки к публикации расположены в порядке эволюции.

#define PS2_MOUSE_ENABLE_SCROLLING /* позволяет включить скролл как в ThinkPad – когда тянешь трекпоинт вниз с нажатым "колесом". Логи gcc скролить так одно удовольствие */
#define PS2_MOUSE_BTN_LEFT      0
#define PS2_MOUSE_BTN_RIGHT     1
#define PS2_MOUSE_BTN_MIDDLE    2 /* порядок клавиш можно переназначить, если произошла путаница на PCB */

Можно врубить инверсию осей движения:

#define PS2_MOUSE_INVERT_X
#define PS2_MOUSE_INVERT_Y

И инверсию направления прокрутки:

#define PS2_MOUSE_INVERT_H
#define PS2_MOUSE_INVERT_V

ну и самое полезное, плата не всегда становится в естественную позицию, потому координаты можно повернуть:

#define PS2_MOUSE_ROTATE 270
#define PS2_MOUSE_ROTATE 180
#define PS2_MOUSE_ROTATE 90

/*

Мой GitHub

*/