2013-08-21 5 views
1

Я решил построить робот телеприсутствия, который будет управляться с помощью клавиатуры (используя 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 давал мне ошибку. Любая помощь будет большой.

Благодаря

ответ

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

Смежные вопросы