Я решил построить робот телеприсутствия, который будет управляться с помощью клавиатуры (используя WASD) через последовательный порт. Я ждал, когда появятся мои детали, поэтому я начал делать некоторые тесты с обработкой и использованием ключей WASD для подсветки светодиодов.Обработка в 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». Всякий раз, когда я нажимаю его (или любую другую букву, используемую в последнем случае, если), загорается светодиод, но не выключается, когда я отпускаю ключ. Я попытался изменить светодиодный вывод, и порядок, в котором операторы if, но последний, всегда имеет ту же проблему. В Arduino работает эскиз StandardFirmata. Я использую Arduino Uno, Win 7 x64 и Processing 1.5.1, так как 2.0.2 давал мне ошибку. Любая помощь будет большой.
Благодаря
Не могу поверить, что я пропустил его, спасибо! – user2704765