当我按下操纵杆上的按钮以通过串行发送字符时,应该将按钮打印到控制台,然后通过串行发送字符。当我按下按钮时,它会打印两次,而arduino中的伺服器会延迟一到两秒。
我尝试过更改伺服引脚,拔下Arduino并重新插入,在arduino.openConnection()周围移动;并制作一个新项目。
package com.frostydev;
import net.java.games.input.*;
import arduino.Arduino;
import arduino.Arduino.*;
@SuppressWarnings("unused")
public class App {
public static void main(String[] args) {
Controller[] controllers = ControllerEnvironment.getDefaultEnvironment().getControllers();
Controller myJoy = controllers[15];
Arduino arduino = new Arduino("COM5", 9600);
Component[] components = myJoy.getComponents();
while(true) {
myJoy.poll();
arduino.openConnection();
EventQueue queue = myJoy.getEventQueue();
Event event = new Event();
while(queue.getNextEvent(event)) {
Component comp = event.getComponent();
double rawValue = event.getValue();
if(comp.isAnalog()) {
} else {
if(comp.getIdentifier() == Component.Identifier.Button._0) {
arduino.serialWrite("1");
System.out.println("Right");
} else if(comp.getIdentifier() == Component.Identifier.Button._1) {
arduino.serialWrite("0");
System.out.println("Left");
}
}
}
}
}
}
请记住,我正在使用Arduino库
#include <Servo.h>
Servo myServo;
long num;
void setup(){
myServo.attach(9);
Serial.begin(9600);
myServo.write(75);
}
void loop(){
if(Serial.available() > 0){
char letter = Serial.read();
if(letter == '1'){
myServo.write(myServo.read() + 5);
} else if(letter == '0'){
myServo.write(myServo.read() - 5);
}
}
}
它应该显示“对!”当我单击操纵杆上的触发器或按钮0,然后将舵机向右移动5度时,当我单击操纵杆上的按钮1时,应该打印“左!”。并将伺服器向左移动5度。他们是分开工作的,但我无法正确地把他们在一起。