Показано с 1 по 5 из 5
  1. #1
    Новичок
    Регистрация
    04.04.2016
    Сообщений
    2
    Вес репутации
    0

    По умолчанию 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-й версии ардуино нано допущена ошибка"
    Может быть кто нибудь сталкивался с подобной проблемой?
    Буду рад любой помощи.

  2. #2
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    56
    Сообщений
    13,381
    Вес репутации
    10

    По умолчанию Re: Arduino leonardo не определяестя после перезагрузки ПК

    На форуме находил похожую проблему, но там сказано "В 3-й версии ардуино нано допущена ошибка"
    У Вас же не arduino Nano V3, а Leonardo и судя по скетчу работает она в режиме HID устройсва(клавиатура)
    Последний раз редактировалось Chip; 07.04.2016 в 12:04.

  3. #3
    Новичок
    Регистрация
    04.04.2016
    Сообщений
    2
    Вес репутации
    0

    По умолчанию Re: Arduino leonardo не определяестя после перезагрузки ПК

    Совершенно верно. Просто после того как компьютер включится, кнопки на руле не работают, приходится постоянно перезагружать леонарно.
    Вот я и подумал что может быть в леонардо тоже есть какой нибудь глюк

    Вопрос в том, как сделать чтобы она определялась после перезагрузки.
    Последний раз редактировалось Jester85; 07.04.2016 в 13:24.

  4. #4
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    56
    Сообщений
    13,381
    Вес репутации
    10

    По умолчанию Re: Arduino leonardo не определяестя после перезагрузки ПК

    По леонардо не подскажу.
    Последний раз редактировалось Chip; 07.04.2016 в 19:33.

  5. #5
    Новичок
    Регистрация
    28.11.2011
    Возраст
    54
    Сообщений
    9
    Вес репутации
    184

    По умолчанию Re: Arduino leonardo не определяестя после перезагрузки ПК

    У меня такая же фигня с модулем на Attiny85. Может поднятся после перезагрузки , а может нет. Причем в разных портах УСБ и на разных компах статистика меняется. Еще заметил что сам комп (БИОС понимает 100%, что к нему подключена "УСБ клава") , а вот при загрузки Винды теряется.

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •