2016-03-19 89 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.end()」後,「Keyboard.press()」功能仍然正常工作是否正常?

我只是不希望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)值變低的通信,通信協議被終止,你必須使用另一個Keyboard.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萊昂納多樣板(我使用Leostick而不是真正的Arduino)上進行了測試。我不確定我是否完全正確,它可能取決於不同的操作系統(即使我嘗試Windows和Mac時都沒有出錯)。坦率地說,我只是爲了安全起見而將它們留在那裏,也是爲了讓你的代碼更易於理解。

順便說一句,你不會打破你的Arduino。

0

鍵盤beginend目前沒有做任何事情,省略它們不應該影響你的代碼。如果你去Keyboard Library Github repo和檢查beginend功能,你會發現他們空

void Keyboard_::begin(void) 
{ 
} 

void Keyboard_::end(void) 
{ 
}