2013-01-28 12:05:23 +01:00
|
|
|
import controlP5.*;
|
|
|
|
|
import processing.serial.*;
|
|
|
|
|
|
|
|
|
|
//Plots
|
|
|
|
|
ScopePlot plotA;
|
|
|
|
|
ScopePlot plotB;
|
|
|
|
|
ScopePlotDouble plotC;
|
|
|
|
|
|
|
|
|
|
//Communication with MMM boards
|
|
|
|
|
Protocol proto;
|
|
|
|
|
|
|
|
|
|
//Serial port
|
|
|
|
|
Serial p;
|
|
|
|
|
|
|
|
|
|
//Controlers
|
|
|
|
|
ControlP5 cp5;
|
|
|
|
|
SliderCallback scb;
|
|
|
|
|
|
|
|
|
|
// (k)
|
|
|
|
|
float kmin = 0.0f;
|
|
|
|
|
float kmax = 7.0f;
|
|
|
|
|
float k = 0.2f;
|
|
|
|
|
Slider k_slider;
|
|
|
|
|
|
|
|
|
|
// (m)
|
|
|
|
|
float mmin = 0.0f;
|
|
|
|
|
float mmax = 7.0f;
|
|
|
|
|
float m = 1.0f;
|
|
|
|
|
Slider m_slider;
|
|
|
|
|
|
|
|
|
|
// (d)
|
|
|
|
|
float dmin = 0.0f;
|
|
|
|
|
float dmax = 7.0f;
|
|
|
|
|
float d = 0.02f;
|
|
|
|
|
Slider d_slider;
|
|
|
|
|
|
|
|
|
|
void setup() {
|
|
|
|
|
|
|
|
|
|
int b = 15;
|
2013-03-15 15:09:05 +01:00
|
|
|
int h = 300;//(displayHeight / 4) - (3*b);
|
2013-01-28 12:05:23 +01:00
|
|
|
int w = displayWidth / 2;
|
|
|
|
|
|
|
|
|
|
plotA = new ScopePlot("Force", w, h, b, b + b, 512, true);
|
|
|
|
|
plotB = new ScopePlot("Velocity", w, h, b, h + 4*b, 512, true);
|
|
|
|
|
plotC = new ScopePlotDouble("Position Estimate", w, h, b, 2*h + 6*b, 512, true);
|
|
|
|
|
|
|
|
|
|
p = new Serial(this, Serial.list()[0], 9600);
|
|
|
|
|
proto = new Protocol(p);
|
|
|
|
|
|
|
|
|
|
// Controls
|
|
|
|
|
cp5 = new ControlP5(this);
|
|
|
|
|
scb = new SliderCallback();
|
|
|
|
|
|
|
|
|
|
int sw = w / 3;
|
|
|
|
|
|
|
|
|
|
k_slider = cp5.addSlider("k", kmin, kmax, b, b-5, sw - b, b-5);
|
|
|
|
|
k_slider.setColorForeground(color(127,34,255));
|
|
|
|
|
k_slider.setColorBackground(color(50,50,50));
|
|
|
|
|
k_slider.addListener(scb);
|
|
|
|
|
|
|
|
|
|
m_slider = cp5.addSlider("m", mmin, mmax, 2*b + sw, b-5, sw - b, b-5);
|
|
|
|
|
m_slider.setColorForeground(color(127,34,255));
|
|
|
|
|
m_slider.setColorBackground(color(50,50,50));
|
|
|
|
|
m_slider.addListener(scb);
|
|
|
|
|
|
|
|
|
|
d_slider = cp5.addSlider("d", dmin, dmax, 3*b + 2*sw, b-5, sw - b, b-5);
|
|
|
|
|
d_slider.setColorForeground(color(127,34,255));
|
|
|
|
|
d_slider.setColorBackground(color(50,50,50));
|
|
|
|
|
d_slider.addListener(scb);
|
|
|
|
|
|
|
|
|
|
size(w + 60, displayHeight - (h + (3*b)));
|
2013-03-15 15:09:05 +01:00
|
|
|
//size(w + 60, 800);
|
|
|
|
|
//size(600, 800);
|
2013-01-28 12:05:23 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void draw() {
|
|
|
|
|
background(0);
|
|
|
|
|
plotA.draw();
|
|
|
|
|
plotB.draw();
|
|
|
|
|
plotC.draw();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
void mouseDragged()
|
|
|
|
|
{
|
|
|
|
|
plotA.mdata(mouseX, mouseY);
|
|
|
|
|
plotB.mdata(mouseX, mouseY);
|
|
|
|
|
plotC.mdata(mouseX, mouseY);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void mouseClicked()
|
|
|
|
|
{
|
|
|
|
|
plotA.mdata(mouseX, mouseY);
|
|
|
|
|
plotB.mdata(mouseX, mouseY);
|
|
|
|
|
plotC.mdata(mouseX, mouseY);
|
|
|
|
|
}
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
void serialEvent (Serial myPort) {
|
|
|
|
|
proto.processData();
|
|
|
|
|
plotA.data(proto.F);
|
|
|
|
|
plotB.data(proto.V);
|
|
|
|
|
plotC.data(proto.X - 512, proto.Xin - 512);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
class SliderCallback implements ControlListener {
|
|
|
|
|
public void controlEvent(ControlEvent ev) {
|
|
|
|
|
p.write(new String(ev.controller().name()+ev.controller().value()+";"));
|
|
|
|
|
//println(ev.controller().name() + ": " + ev.controller().value());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|