Плохо поиском пользовалсяhttp://www.compcar.ru/forum/showthread.php?t=5669
Плохо поиском пользовалсяhttp://www.compcar.ru/forum/showthread.php?t=5669
Если честно и не додумался бы туда смотреть, не каждому известно подробностей о FTDI и каким боком оно относиться к Carduino. Но теперь все встало на свои места. До этого гуглил по тексту ошибки но нечего не нашел, в тексте того топика о ошибке с таким текстом речи и не идет.
Спасибо, за подсказку!![]()
Скачал HotKey от 21.03.10 и залил скетч с первой страницы с одним нажатием.
Запускаю HKey_config, сразуже появляется значение 1023 - без нажатия кнопок. А если нажать кнопку, то появится значение с небольшим дребезгом 303-304.
Запускаю новый монитор, Ардуино шлет значения - без нажатия кнопок.
Последний раз редактировалось Serg_w; 29.03.2010 в 17:25.
Все правильно, так и должно быть.
Небольшой дребезг учтен опцией "Limit"
Последний раз редактировалось Chip; 29.03.2010 в 18:16.
Где то выкладывал в разделе
Вот, соорудил кнопочки (резисторы: 12-24-35-46-62-74-90-108-129 Ом). Все работает, только есть небольшой дребизг в пределах 2-3 единиц.
Обнаружил, что если кнопке не присвоен код, то при нажатии этой кнопки HotKey выдает ошибку. Поэтому пустым кнопка присвоил код 07.
Chip, просьба подправить скетч, чтобы он ничего не передавал, когда нет нажатий.
Спасибо.
Последний раз редактировалось Serg_w; 02.04.2010 в 16:28.
А зачем прописывать кнопку если ей ничего не будешь присваивать?Обнаружил, что если кнопке не присвоен код, то при нажатии этой кнопки HotKey выдает ошибку.
Мне показалось так удобнее. Определил все кнопки в HKey_config, а потом в config только коды им в присваиваешь или меняешь.
Спасибо за программу, очень помогла в начале.
Но если пользователь захочет использовать ардуино ещё как-то (а он захочет, т.к. использовать всего один вход из двух десятков это расточительство), то этот код работать нормально не будет.
Нужно оформить данный процесс как стейтмашину, примерно так как сделал я (привожу часть кода для длинного и короткого нажатия):
Функция decode_button возвращает ноль если кнопка не нажата, и код кнопки если нажата.PHP код:
switch( state )
{
case 0: // nothing pressed
key = decode_button( analogRead( WHEELBUT ) );
if( key > 0 )
{
state = 1;
time = millis();
}
break;
case 1: // key down
if( decode_button( analogRead( WHEELBUT ) ) == key )
{
if( millis() - time > 50 ) { state = 2; time = 0; }
break;
}
state = 0;
key = 0;
time = 0;
break;
case 2: // one press
if( time == 0 )
{
Serial.println( key, DEC );
time = millis();
}
if( decode_button( analogRead( WHEELBUT ) ) == key )
{
if( millis() - time > 250 ) { state = 3; time = 0; }
break;
}
state = 0;
key = 0;
time = 0;
break;
case 3: // key hold (multipress)
if( time == 0 )
{
Serial.println( key, DEC );
time = millis();
}
if( decode_button( analogRead( WHEELBUT ) ) == key )
{
if( millis() - time > 75 ) { state = 3; time = 0; }
break;
}
state = 0;
key = 0;
time = 0;
break;
}
Переменные key, state и time изначально инициализируются нулем.
Меняя константы 50 (время исключения дребезга), 250 (время перед началом повтора), 75 (1000/75=частота повтора) можно настроить реакцию под себя.
Последний раз редактировалось Chip; 30.04.2010 в 19:54.
Спасибо за код.
Эту тему просматривают: 8 (пользователей: 0 , гостей: 8)