Зарегистрирован: Вс мар 23, 2025 14:56:55 Сообщений: 700
Рейтинг сообщения:0
ну дык!. оптика, магниты... но цена. жалею, что не собирал раньше старые мышки шариковые. Ща бы в поделки была бы кучка оптических энкодеров, а не китайское механическое унылое г...
Карма: 67
Рейтинг сообщений: 1060
Зарегистрирован: Чт сен 18, 2008 12:27:21 Сообщений: 19742 Откуда: Столица Мира Санкт-Петербург
Рейтинг сообщения:0 Медали: 1
Магниторезитор заменить цифровым датчиком Холла, они вроде есть в обычных кулерах (переключают обмотки).
_________________ [ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ] Измерить нннада?
#define DEBOUNCE_TIME 50 //short #define REPEAT_DELAY 800 //long - задержка перед LONG #define REPEAT_TIME 100 //repeat long - автоповтор при LONG
#define key_init() //adcInit();
// однократный опрос, на выходе: код кнопки inlineuint8_tget_key(){ uint16_t adc = getAdc(_bn(KEY)); // if (adc < 1000) { con_int(adc); con_write(' '); } //DEBUG if (adc < KEY_ALARM_LEVEL) return KEY_ALARM; if (adc < KEY_MODE_LEVEL) return KEY_MODE; if (adc < KEY_UP_LEVEL) return KEY_UP; if (adc < KEY_DOWN_LEVEL) return KEY_DOWN; if (adc < KEY_LIGHT_LEVEL) return KEY_LIGHT; return0; }
uint8_tkey();
Не аккуратненько. Но для сельской местности сойдёт.) Спойлер
Код:
#include"main.h" #include"akey.h"
// SHORT - при отжатии, LONG - при нажатии, LONG REPEAT (UP/DOWN) - при удержании uint8_tkey(){ typedefenum {SHORT, LONG, LONG_LONG} state_t; staticstate_t state; staticuint8_t short_key; staticuint16_t timer;
uint8_t k = get_key(); for_change(k) //change timer = ms2sys(DEBOUNCE_TIME); if (timer) --timer; elseif (k) { if (state == SHORT) { //начало нажатия state = LONG; short_key = k; //запомним для отжатия timer = ms2sys(REPEAT_DELAY - DEBOUNCE_TIME) - 1; } elseif (state == LONG) { //длинное нажатие state = LONG_LONG; timer = ms2sys(REPEAT_TIME) - 1; short_key = 0; //wo press return k | LONG_BIT; } elseif (k & (KEY_UP | KEY_DOWN)) { //повтор только для UP/DOWN! timer = ms2sys(REPEAT_TIME) - 1; return k; } } elseif (state != SHORT) { //released state = SHORT; return short_key; //0 after a long } return0; }
Зарегистрирован: Пн сен 23, 2024 07:37:53 Сообщений: 169
Рейтинг сообщения:0
Тогда об чем плач Ярославны по мышам шариковым, невинно убиенным? Вот за 150 рублей электронно-оптическая часть, без механики и даже приардуиненая: https://www.chipdip.ru/product0/8753510820
Зарегистрирован: Пн сен 23, 2024 07:37:53 Сообщений: 169
Рейтинг сообщения:0
Что до механики в тех мышах, так это просто слёзы. Диск дырчатый пластиковый, одно целое с валом, и это всё вставлялось в пластиковые же "подшипники" путём вдавливания за счёт упругости материала. Диск в любом случае пришлось бы переделывать по числу дырок или собачить редуктор, а это уже действительно механика. При наличии же станка ЧПУ не стоит об этом и говорить. А что до бесплатности, я свои мыши покупал а не расхищал на рабочем месте. Расхищал я шаговые двигатели , вернее спасал от вторчермета. Итого, имеем 2 оптодатчика на одну мышь, эквивалент 160 рублей. Стоит ли оно сожаления?
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения