2013-08-21 117 views
1

我決定構建一個遠程呈現機器人,它將通過串行鍵盤(使用WASD)進行控制。我一直在等待我的零件到達,所以我開始做一些處理測試,並使用WASD鍵點亮LED。用鍵盤處理Arduino

import processing.serial.*; 
import cc.arduino.*; 
Serial myPort; 
Arduino arduino; 

void setup() { 
    println(Arduino.list()); 
    arduino = new Arduino(this, Arduino.list() [1], 57600); 
    arduino.pinMode(12, Arduino.OUTPUT); 
    arduino.pinMode(11, Arduino.OUTPUT); 
    arduino.pinMode(9, Arduino.OUTPUT); 
    arduino.pinMode(10, Arduino.OUTPUT); 
} 

void draw() { 
    if (keyPressed == true) { 
    if (key == 'w' || key == 'W') { 
     arduino.digitalWrite (12, Arduino.HIGH); 
    } 
    if (key == 's' || key == 'S') { 
     arduino.digitalWrite (11, Arduino.HIGH); 
    } 
    if (key == 'a' || key == 'A') { 
     arduino.digitalWrite (9, Arduino.HIGH); 
    } 
    if (key == 'd' || key == 'D') { 
     arduino.digitalWrite (10, Arduino.HIGH); 
    } 
    else { 
     arduino.digitalWrite (12, Arduino.LOW); 
     arduino.digitalWrite (11, Arduino.LOW); 
     arduino.digitalWrite (9, Arduino.LOW); 
     arduino.digitalWrite (10, Arduino.LOW); 
    } 
    } 
} 

一切正常,除非我按'D'鍵。每當我按下它(或最後使用的任何其他字母)時,LED亮起但在釋放鑰匙時不熄滅。我已經嘗試改變LED引腳,並且「if」語句的順序是最後一個總是有同樣的問題。 Arduino正在運行StandardFirmata草圖。我使用的是Arduino Uno,Win 7 x64和Processing 1.5.1,因爲2.0.2給了我一個錯誤。任何幫助都會很棒。

感謝

回答

0

它看起來像你的「其他」說法是錯誤的「如果」塊下。基於你的目標,你應該擁有它,這樣如果沒有按下某個鍵,你就會寫Arduino.LOW到引腳9-12。基本上,只要移動支架:

void draw() { 
    if (keyPressed == true) { 
    if (key == 'w' || key == 'W') { 
     arduino.digitalWrite (12, Arduino.HIGH); 
    } 
    if (key == 's' || key == 'S') { 
     arduino.digitalWrite (11, Arduino.HIGH); 
    } 
    if (key == 'a' || key == 'A') { 
     arduino.digitalWrite (9, Arduino.HIGH); 
    } 
    if (key == 'd' || key == 'D') { 
     arduino.digitalWrite (10, Arduino.HIGH); 
    } 
    } 
    else { 
     arduino.digitalWrite (12, Arduino.LOW); 
     arduino.digitalWrite (11, Arduino.LOW); 
     arduino.digitalWrite (9, Arduino.LOW); 
     arduino.digitalWrite (10, Arduino.LOW); 
    } 
} 
+0

不能相信我錯過了,謝謝! – user2704765