Arduino leonardo не определяется как клавиатура после загрузи ПК

Нет ответов
Jester85
Offline
Зарегистрирован: 11.04.2016

Здравствуйте!

Собитаю CarPC
Имеется Arduino купленная здесь
С помощью неё были подключены резистивные кнопки на руле по этой статье
Всё работает замечательно, есть одно но! после перезагрузки компьютера arduino не определяется.
Для того чтобы она определилась приходится отключать её от usb и подключать обратно

Вот скетч

//****************** Здесь необходимо указать свои значения ***************

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; 
}  
}  

Может кто нибудь знает как сделать чтобы она автоматически определялась?