Arduino leonardo не определяестя после перезагрузки ПК
Здравствуйте!
Имеется Arduino купленная здесь
С помощью неё были подключены резистивные кнопки по этой статье
Всё работает замечательно, есть одно но! после перезагрузки компьютера arduino не определяется.
Для того чтобы она определилась приходится отключать её от usb и подключать обратно
Вот скетч
PHP код:
//****************** Здесь необходимо указать свои значения ***************
int analogPin=0; // пин для подключения кнопок, по умолчанию A0
int release_button = 619; // значение при отпущенных кнопках
int button_release_range = 50; // диапазон значения + - при отпущенных кнопках
int button_range = 10; // диапазон значения нажатых кнопок + -
int time_holding = 500; // время для удержания кнопок в миллисекундах
int time_tinkling = 10; // время исключающее дребезг контактов в миллисекундах
int vol_up = 42; // значение кнопки увеличить громкость
int vol_down = 14; // значение кнопки уменьшить громкость
int alt_tab = 244; // значение кнопки которая будет работать как Alt + Tab
int next = 84; // значение кнопки которая будет работать как Next при коротком нажатии и Fast Forward при удержании
int previous = 147; // значение кнопки которая будет работать как Previous при коротком нажатии и Rewind при удержании
int play_pause = 390; // значение кнопки которая будет работать как Play/Pause при коротком нажатии и Mute при удержании
//**************************************************************************
int data;
unsigned long flag = 0;
unsigned long eventTime = 0;
unsigned long pauseMillis = 0;
void setup()
{
Keyboard.begin();
}
void loop()
{
data=analogRead(analogPin);
if(data>=release_button - button_release_range && data<=release_button + button_release_range && flag == 0)
{
eventTime=millis();
}
//********************** Громкость ************************************
if(millis()-time_tinkling && millis()-eventTime<time_holding-1 && data >= vol_up - button_range && data <= vol_up + button_range && flag == 0)
{
Remote.increase();
flag = 5;
delay(10);
Remote.clear();
}
if(millis()-eventTime>time_holding && data >= vol_up - button_range && data <= vol_up + button_range && flag == 5 || data >= vol_up - button_range && data <= vol_up + button_range && flag && flag == 3)
{
Remote.increase();
flag = 3;
Remote.clear();
delay(100);
}
if(millis()-time_tinkling && millis()-eventTime<time_holding-1 && data >= vol_down - button_range && data <= vol_down + button_range && flag == 0)
{
Remote.decrease();
flag = 6;
delay(10);
Remote.clear();
}
if(millis()-eventTime>time_holding && data >= vol_down - button_range && data <= vol_down + button_range && flag == 6 || data >= vol_down - button_range && data <= vol_down + button_range && flag == 3)
{
Remote.decrease();
flag = 3;
Remote.clear();
delay(100);
}
//********************** AltTab + Ещё что то ************************************
if(millis()-time_tinkling && millis()-eventTime<time_holding-1 && data >= alt_tab - button_range && data <= alt_tab + button_range)
{
flag = 1;
}
if(data>=release_button - button_release_range && data<=release_button + button_release_range && flag == 1 && pauseMillis == 0)
{
Keyboard.press(KEY_LEFT_ALT);
Keyboard.press(KEY_TAB);
Keyboard.release(KEY_TAB);
Keyboard.press(KEY_TAB);
Keyboard.release(KEY_TAB);
flag = 0;
pauseMillis = millis();
}
if(data>=release_button - button_release_range && data<=release_button + button_release_range && flag == 1 && pauseMillis != 0)
{
Keyboard.press(KEY_TAB);
Keyboard.release(KEY_TAB);
flag = 0;
pauseMillis = millis();
}
if(pauseMillis && millis()-pauseMillis >= 800 && data>=release_button - button_release_range && data<=release_button + button_release_range)
{
flag = 0;
pauseMillis = 0;
Keyboard.releaseAll();
}
if(millis()-eventTime>time_holding && data >= alt_tab - button_range && data <= alt_tab + button_range && flag == 1)
{
flag = 0;
}
//********************** Next и Fast Forward ************************************
if(millis()-time_tinkling && millis()-eventTime<time_holding-1 && data >= next - button_range && data <= next + button_range)
{
flag = 2;
}
if(data>=release_button - button_release_range && data<=release_button + button_release_range && flag == 2)
{
Remote.next();
flag = 0;
delay(10);
Remote.clear();
}
if(millis()-eventTime>time_holding && data >= next - button_range && data <= next + button_range && flag == 2 || data >= next - button_range && data <= next + button_range && flag == 3)
{
Remote.forward();
flag = 3;
Remote.clear();
delay(100);
}
//********************** Previous и Rewind ************************************
if(millis()-time_tinkling && millis()-eventTime<time_holding-1 && data >= previous - button_range && data <= previous + button_range)
{
flag = 4;
}
if(data>=release_button - button_release_range && data<=release_button + button_release_range && flag == 4)
{
Remote.previous();
flag = 0;
delay(10);
Remote.clear();
}
if(millis()-eventTime>time_holding && data >= previous - button_range && data <= previous + button_range && flag == 4 || data >= previous - button_range && data <= previous + button_range && flag == 3)
{
Remote.rewind();
flag = 3;
Remote.clear();
delay(100);
}
//********************** Play/pause + Mute ************************************
if(millis()-time_tinkling && millis()-eventTime<time_holding-1 && data >= play_pause - button_range && data <= play_pause + button_range)
{
flag = 7;
}
if(data>=release_button - button_release_range && data<=release_button + button_release_range && flag == 7)
{
Remote.play_pause();
flag = 0;
delay(10);
Remote.clear();
}
if(millis()-eventTime>time_holding && data >= play_pause - button_range && data <= play_pause + button_range && flag == 7)
{
Remote.mute();
flag = 0;
delay(10);
Remote.clear();
}
if(data>=release_button - button_release_range && data<=release_button + button_release_range && flag == 3 || data>=release_button - button_release_range && data<=release_button + button_release_range && flag == 5 || data>=release_button - button_release_range && data<=release_button + button_release_range && flag == 6)
{
flag = 0;
}
}
На форуме находил похожую проблему, но там сказано "В 3-й версии ардуино нано допущена ошибка"
Может быть кто нибудь сталкивался с подобной проблемой?
Буду рад любой помощи.
Re: Arduino leonardo не определяестя после перезагрузки ПК
Цитата:
На форуме находил похожую проблему, но там сказано "В 3-й версии ардуино нано допущена ошибка"
У Вас же не arduino Nano V3, а Leonardo и судя по скетчу работает она в режиме HID устройсва(клавиатура)
Re: Arduino leonardo не определяестя после перезагрузки ПК
Совершенно верно. Просто после того как компьютер включится, кнопки на руле не работают, приходится постоянно перезагружать леонарно.
Вот я и подумал что может быть в леонардо тоже есть какой нибудь глюк
Вопрос в том, как сделать чтобы она определялась после перезагрузки.
Re: Arduino leonardo не определяестя после перезагрузки ПК
Re: Arduino leonardo не определяестя после перезагрузки ПК
У меня такая же фигня с модулем на Attiny85. Может поднятся после перезагрузки , а может нет. Причем в разных портах УСБ и на разных компах статистика меняется. Еще заметил что сам комп (БИОС понимает 100%, что к нему подключена "УСБ клава") , а вот при загрузки Винды теряется.