xxxxxxxxxx
192
let serial;
let latestData = "waiting for data";
let directionChanged = false;
let oldData;
let state1 = true;
let horf = true; //cause im out of variable name ideas
let halfClosed = false;
let allClosed = false;
let closedUp = false;
let noClosed = true;
let directIndicated = false;
let direction;
function setup() {
serial = new p5.SerialPort();
serial.list();
serial.open('COM10');
serial.on('connected', serverConnected);
serial.on('list', gotList);
serial.on('data', gotData);
serial.on('error', gotError);
serial.on('open', gotOpen);
serial.on('close', gotClose);
createCanvas(400, 400);
frameRate(5);
textAlign(CENTER,CENTER);
}
function serverConnected() {
print("Connected to Server");
}
function gotList(thelist) {
print("List of Serial Ports:");
for (let i = 0; i < thelist.length; i++) {
print(i + " " + thelist[i]);
}
}
function gotOpen() {
print("Serial Port is Open");
}
function gotClose(){
print("Serial Port is Closed");
latestData = "Serial Port is Closed";
}
function gotError(theerror) {
print(theerror);
}
function gotData() {
let currentString = serial.readLine();
trim(currentString);
if (!currentString) return;
console.log(currentString);
latestData = currentString;
if (latestData != oldData) {
directionChanged = true;
}
oldData = latestData;
}
function draw() {
if (directionChanged) {
if (direction == "Up!" && latestData == 0) {
directIndicated = false;
} else if (direction == "Down!" && latestData == 1) {
directIndicated = false;
} else if (direction == "Left!" && latestData == 2) {
directIndicated = false;
} else if (direction == "Right!" && latestData == 3) {
directIndicated = false;
}
}
background("orange");
if (directIndicated) {
textSize(52);
text(direction,200,200);
}
if (halfClosed) {
//left eye
rect(60,120,20,20);
rect(80,120,20,20);
//right eye
rect(300,120,20,20);
rect(320,120,20,20);
halfClosed = false;
allClosed = true;
} else if (allClosed) {
allClosed = false;
closedUp = true;
} else if (closedUp) {
//left eye
rect(60,120,20,20);
rect(80,120,20,20);
//right eye
rect(300,120,20,20);
rect(320,120,20,20);
closedUp = false;
noClosed = true;
} else {
//left eye
rect(60,100,20,20);
rect(60,120,20,20);
rect(80,120,20,20);
rect(80,100,20,20);
//right eye
rect(320,100,20,20);
rect(300,100,20,20);
rect(300,120,20,20);
rect(320,120,20,20);
}
if (random() < 0.05 && noClosed) {
//console.log("hi");
halfClosed = true;
noClosed = false;
}
if (!directIndicated && state1) {
if (random() < 0.05) {
let randomDirect = random();
directIndicated = true;
if (randomDirect <0.25) {
direction = "Up!";
} else if (0.25 < randomDirect < 0.5) {
direction = "Down!";
} else if (0.5 < randomDirect < 0.75) {
direction = "Left!";
} else {
direction = "Right!";
}
state1 = false;
}
//mouth (neutral)
for(let i=0;i<14;i++) {
rect(60+(i*20),280,20,20);
}
} else if (!directIndicated && !state1) {
if (random() < 0.05) {
let randomDirect = random();
directIndicated = true;
if (randomDirect <0.25) {
direction = "Up!";
} else if (0.25 < randomDirect < 0.5) {
direction = "Down!";
} else if (0.5 < randomDirect < 0.75) {
direction = "Left!";
} else {
direction = "Right!";
}
horf = true;
} else {
textSize(52);
text("Nice!",200,200);
//mouth (neutral)
for(let i=0;i<12;i++) {
rect(80+(i*20),280,20,20);
rect(60,260,20,20);
rect(320,260,20,20);
}
horf = false;
}
}
if (horf) {
for(let i=0;i<14;i++) {
rect(60+(i*20),280,20,20);
}
}
console.log(state1);
}