xxxxxxxxxx
192
var wifiName = "fablab-droner";
var wifiPassword = "39nerdro";
var speedX = 0;
var speedY = 0;
var speedZ = 0;
var speedQ = 0;
let send_commands = false;
function setup() {
//frameRate(30);
const canvas = createCanvas(windowWidth, windowHeight);
textFont('Share Tech Mono');
WebSocketStart("ws://localhost:9000");
drones.push(new Drone("192.168.0.151"));
}
function draw() {
background(0);
drawUI();
if (uiButton("Do drone show", color(255, 255, 255), 200, 30, 40, 30).clicked) {
droneCmd("takeoff", true);
droneCmd("mon", true);
droneCmd("go 0 0 100 50 m-1", true);
droneCmd("forward 100", true);
droneCmd("go 0 0 0 50 m-7", true);
droneCmd("back 100", true);
droneCmd("go 0 0 0 50 m-1", true);
droneCmd("land", true);
/*
droneCmd("takeoff", true);
droneCmd("right 30", true);
droneCmd("left 30", true);
droneCmd("land", true);*/
}
/* if (uiButton(">>", color(255, 255, 255), 200, 30, 300, 300).clicked) {
droneCmd("right 30", true);
}*/
/*if (keyIsPressed == true && key == 'b') {
droneCmd("left 30", true);
}*/
//fill(255,255,255);
//ellipse(200,100,200,200);
/* if (uiButton("go left", color(0, 0, 0,0), 200, 200, 200, 30).clicked) {
droneCmd("left 30", true);
}*/
customUI();
} // afslutnign på draw funktionen
let speed_mult = new uiFloat(0);
function customUI() {
uiContainerStart(600, 700, 200);
if (uiButton("start").clicked) {
send_commands = true;
}
uiScrollbar("hastighed: " + speed_mult.get(), 0, 100, speed_mult);
uiText("Y: " + speedY);
uiText("X: " + speedX);
uiText("Z: " + speedZ);
uiText("Q: " + speedQ);
uiContainerEnd();
speed_mult.set( round( speed_mult.get() ) )
// kald metoden:
listenToKeyboard();
}
let keys = {};
const GetKey = (keyid) => {
return keys[keyid] !== undefined ? keys[keyid] : { key: 0, code: 0, pressed: false};
}
const SetSpeed = (speed) => {
let spd = speed_mult.get() + speed;
/**/ if (spd < 0) speed_mult.set(0);
else if (spd > 100) speed_mult.set(100);
else speed_mult.set(spd);
}
// function a() {}
// let a = function () {}
// let a = () => { }
// var ..
// const ..
function listenToKeyboard() {
speedX=0;
speedY=0;
speedZ=0;
let forward = GetKey('w').pressed || GetKey(UP_ARROW).pressed;
let back = GetKey('s').pressed || GetKey(DOWN_ARROW).pressed;
let left = GetKey('a').pressed || GetKey(LEFT_ARROW).pressed;
let right = GetKey('d').pressed || GetKey(RIGHT_ARROW).pressed;
let forward_back = (forward - back) * speed_mult.get();
let left_right = (right - left) * speed_mult.get();
let up_down = (GetKey(SHIFT).pressed - GetKey(CONTROL).pressed) * speed_mult.get();
let yaw = (GetKey('q') .pressed - GetKey('e') .pressed) * speed_mult.get();
let speed = (GetKey('r') .pressed - GetKey('f') .pressed);
speedY = forward_back;
speedX = left_right;
speedZ = up_down;
speedQ = yaw;
if (GetKey('i').pressed) {
print("stream on")
droneCmd("streamon");
}
if (GetKey('p').pressed) {
print("stream off")
droneCmd("streamoff");
}
SetSpeed( speed );
if (send_commands) {
print( `rc ${speedX} ${speedY} ${speedZ} ${speedQ}`)
droneCmd(`rc ${speedX} ${speedY} ${speedZ} ${speedQ}`, false);
}
}
function mousePressed() {
}
function keyPressed() {
switch (keyCode) {
case BACKSPACE:
case DELETE:
case ENTER:
case RETURN:
case TAB:
case ESCAPE:
case SHIFT:
case CONTROL:
case OPTION:
case ALT:
case UP_ARROW:
case DOWN_ARROW:
case LEFT_ARROW:
case RIGHT_ARROW:
keys[keyCode] = { key: key, code: keyCode, pressed: true }; break;
default: keys[key] = { key: key, code: keyCode, pressed: true };
}
}
function keyReleased() {
switch (keyCode) {
case BACKSPACE:
case DELETE:
case ENTER:
case RETURN:
case TAB:
case ESCAPE:
case SHIFT:
case CONTROL:
case OPTION:
case ALT:
case UP_ARROW:
case DOWN_ARROW:
case LEFT_ARROW:
case RIGHT_ARROW:
keys[keyCode] = { key: key, code: keyCode, pressed: false }; break;
default: keys[key] = { key: key, code: keyCode, pressed: false };
}
}