Keyboard 用键盘对Arduino进行处理

Keyboard 用键盘对Arduino进行处理,keyboard,serial-port,arduino,processing,led,Keyboard,Serial Port,Arduino,Processing,Led,我决定建造一个通过键盘(使用WASD)通过串口控制的临场感机器人。我一直在等待我的零件到达,所以我开始做一些处理测试,并使用WASD键点亮LED import processing.serial.*; import cc.arduino.*; Serial myPort; Arduino arduino; void setup () { println(Arduino.list()); arduino = new Arduino(this, Arduino.list() [1], 57

我决定建造一个通过键盘(使用WASD)通过串口控制的临场感机器人。我一直在等待我的零件到达,所以我开始做一些处理测试,并使用WASD键点亮LED

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”键外,一切正常。每当我按下它(或上一个if中使用的任何其他字母),LED都会亮起,但在我松开钥匙时不会熄灭。我尝试过改变LED管脚,“如果”语句的顺序,但最后一个总是有同样的问题。Arduino正在运行StandardFirmata草图。我正在使用Arduino Uno,Win 7 x64,处理1.5.1,因为2.0.2给了我一个错误。任何帮助都会很好


谢谢

您的'else'语句似乎位于错误的'if'块下。根据你的目标,你应该有它,这样,如果没有按下一个键,你写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);
    }
}