2013-08-21 63 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