nettips.ru

Подключение мышки PS/2 к arduino

На главную Cisco Systems VoIP маршрутизатор Беларусь Asterisk коммутатор Arduino Nateks Alcatel MTS Gigaset Velcom ZTE Grandstream Android Huawei админы шутят о сайте Zelax Allied Telesis D-Link Штрихкоды HP
Телефонные номера доступа sip операторов Телефонные коды городов и стран мира.

Рейтинг статьи: 5.000/5 Рейтинг 5.00 из 5Рейтинг 5.00 из 5Рейтинг 5.00 из 5Рейтинг 5.00 из 5Рейтинг 5.00 из 5 (1 голосов).

Подключение мышки или клавиатуры к arduino

Спонсор этой страницы:

Предисловие

В одном из проектов вместо кучи кнопок и решил использовать старую мышку.

В общем удобно. На маленьком экране можно организовать меню, для изменения параметров удобно использовать колесико и т.д. А при использовании библиотеки AlexGyver для работы с кнопками, можно отслеживать одиночные и двойные нажатия кнопок и т.д.

Поискав в интернете и найдя библиотеку ps2, выяснил, что при отключенной мышке arduino зависает.

В результате библиотеку пришлось дополнить.

Дополнения и функции

Для начала я устранил зависания arduino при отключенной мышки.

Добавлена переменная boolean available, сигнализирующая, о наличии мышки.

процедура init() вынесена в библиотеку.

Добавлена процедура readall(), считывающая смещение по осям, нажатие кнопок, кручение колесика, и записывающая все это в переменные x, y, s, stat.

При отсутствии мышки readall() пытается ее проинициализировать, и в переменные x, y, s запишет 0.
В результате вышку можно подключать или отключать "на лету".
Из нюанса, при подключении на горячую, не устойчиво определяется колесико (у меня в одном случае из 10).
При включении arduino с подключенной мышкой проблем не возникало.

для совместимости оставлены read и write.

Ссылка на библиотеку ps2 для arduino

Ссылка на переписанную библиотеку ps2.zip

Файл из примера


#include

PS2 mouse(6, 5);

void setup()
{
  Serial.begin(9600);
  mouse.init();
  if (mouse.available) {
    Serial.println("Mouse init OK");
    if (mouse.IM_flag>0) Serial.println("Mouse IM scroll"); else Serial.println("Mouse simple, no scroll");
    } else {Serial.println("Mouse not fount");}
}
void loop()
{
  mouse.readall();
  Serial.print(mouse.stat, BIN);
  Serial.print("\tX=");
  Serial.print(mouse.x, DEC);
  Serial.print("\tY=");
  Serial.print(mouse.y, DEC);
  Serial.print("\tscroll=");
  Serial.print(mouse.s, DEC);
  Serial.print("\ttype=");
  Serial.print(mouse.IM_flag, DEC);
  if (mouse.available)  Serial.print("\tMouse OK"); else Serial.print("\tMouse not found");
    Serial.println();
}

Arduino Программирование

Пожалуйста, оцените и ВЫ эту статью:

Комментариев нет. Снаньте первым!


Ваши отзывы и предложения по работе сайта направляйте на форму обратной связи.

Яндекс.Метрика