2016-03-19 2 views
0

Итак, я хочу использовать Arduino Leonardo в качестве клавиатуры с встроенной библиотекой.Arduino Leonardo Поведение клавиатуры

boolean on; 

void setup() { 
    pinMode(13, OUTPUT); 

    pinMode(2, INPUT_PULLUP); 
    pinMode(3, INPUT_PULLUP); 

    digitalWrite(2, HIGH); 
    digitalWrite(3, HIGH); 

    Keyboard.begin(); 
    on = true; 
} 

void loop() { 
    if(digitalRead(2) == LOW) { 
    Keyboard.end(); 
    on = false; 
    } 
    digitalWrite(13, on); 

    if(digitalRead(3) == LOW) { 
    Keyboard.press('w'); 
    } 
    else { 
    Keyboard.release('w'); 
    } 

} 

Это нормально, что ") Keyboard.press (" функция по-прежнему работает после того, как я побежал "Keyboard.end()"?

Я просто не хочу, чтобы Arduino сломался, поэтому заблаговременно за ответ!

ответ

0

Вы использовали начать функцию в

void setup() 
{ 
    pinMode(13, OUTPUT); 

    pinMode(2, INPUT_PULLUP); 
    pinMode(3, INPUT_PULLUP); 

    digitalWrite(2, HIGH); 
    digitalWrite(3, HIGH); 

    Keyboard.begin(); 
    on = true; 
} 

и вы закончили общение в

if(digitalRead(2) == LOW) { 
    Keyboard.end(); 
    on = false; 
    } 

когда digitalRead (2) значение становится низким, протокол связи останавливается, вы должны используйте другую клавиатуру.begin() до

if(digitalRead(3) == LOW) 
{ 
    Keyboard.press('w'); 
} 

лучшей практикой является использование Keybo ard.begin(); в пустом цикле

0

взглядами, что вы пытаетесь сделать, вы должны сделать это:

#include <Keyboard.h> 
boolean on; 
boolean disable; 

void setup() { 
    pinMode(13, OUTPUT); 

    pinMode(2, INPUT_PULLUP); 
    pinMode(3, INPUT_PULLUP); 

    digitalWrite(2, HIGH); 
    digitalWrite(3, HIGH); 

    disable = false; 
    on = true; 
} 

void loop() { 
    if(digitalRead(2) == LOW) { 
    disable = true; 
    on = false; 
    } 

    digitalWrite(13, on); 

    if(disable == false) { 
    if(digitalRead(3) == LOW) { 
     Keyboard.press('w'); 
    } 
    else { 
     Keyboard.release('w'); 
    } 
    } 
} 

Это #include в начале я использую, потому что я использую последнюю версию Arduino IDE. В любом случае, независимо от того, находитесь ли вы на своей версии или в последней версии Arduino IDE, Keyboard.begin() и Keyboard.end() ничего не делаете, поскольку я только что протестировал ее на своей Arduino Leonardo-подобной доске (я использую Leostick вместо подлинного Arduino). Я не уверен, что я полностью прав, это может зависеть от разных операционных систем (хотя ничего не случилось, когда я пробовал как Windows, так и Mac). Честно говоря, я оставил бы их там, чтобы быть в безопасности, а также сделать код более понятным.

Кстати, вы не сломаете Arduino.

0

Клавиатура begin и end в настоящее время ничего не делают, и опускание их не должно влиять на ваш код. Если вы идете в Keyboard Library Github repo и проверить begin и end функции, вы найдете их пустой

void Keyboard_::begin(void) 
{ 
} 

void Keyboard_::end(void) 
{ 
} 
Смежные вопросы