import processing.serial.*; import java.awt.event.KeyEvent; import java.io.IOException; String comname="COM19"; Serial se; float roll, pitch,yaw; float q[]=new float[4]; char btn[]=new char[5]; void setup() { size (800, 600, P3D); se = new Serial(this, comname, 115200); se.bufferUntil('\n'); } void draw() { getrotvalue(se); background(100); translate(width/2, height/2, 0); camera(0, 0, 300, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0); textSize(18); fill(255, 0, 0); text("Button LEFT:" + btn[0] + " RIGHT: " + btn[1] + " UP: " + btn[2] + " DOWN: " + btn[3] + " PUSH: " + btn[4], -210, -130,0); text("Roll: " + int(roll) + " Pitch: " + int(pitch) + " yaw: " + int(yaw), -200, -90,0); rotateZ(radians(roll)); rotateY(radians(yaw)); rotateX(radians(pitch)); textSize(30); fill(0, 0, 255); box (50, 4, 80); translate(0, 2, 44); fill(0, 255, 0); box (8, 8, 8); } void getrotvalue(Serial se) { se.write('D'); String data = se.readStringUntil('\n'); if (data != null) { data = trim(data); String items[] = split(data, ','); if (items[0].equals("CZS") && items.length == 10) { //<>// // println(data); pitch = -float(items[1]); yaw = float(items[2]); roll = -float(items[3]); q[0] = float(items[4]); q[1] = float(items[5]); q[2] = float(items[6]); q[3] = float(items[7]); btn[0]=items[8].charAt(0); btn[1]=items[8].charAt(1); btn[2]=items[8].charAt(2); btn[3]=items[8].charAt(3); btn[4]=items[8].charAt(4); } } }