Stap 3: Programmeren Processing
/*
* Oscilloscoop
* Geeft een visuele weergave van analoge pin 0 in realtime.
*
*
* (c) 2011 "simonfrfr" (newtonlabs
*/
importeren van processing.serial.*;
kleur currentcolor;
Boolean vergrendeld = false;
Booleaanse Herr = false;
Boole serialt = false;
CircleButton circle1, circle2, circle3;
Seriële poort; Object maakt van seriële klasse
int val; Gegevens ontvangen van de seriële poort
int [] waarden;
float zoom;
PFont Fontanía;
VOID Setup
{
Fontanía = loadFont("Ziggurat-HTF-Black-32.vlw");
textFont (Fontanía, 32);
Alleen eens trekken
noLoop();
size(1280, 480);
kleur buttoncolor = color(153);
kleur highlight = color(102);
ellipseMode(CENTER);
circle3 = nieuwe CircleButton (50, 50, 50, buttoncolor, hoogtepunt);
circle2 = nieuwe CircleButton (50, 50, 50, buttoncolor, hoogtepunt);
circle1 = nieuwe CircleButton (50, 50, 50, buttoncolor, hoogtepunt);
Openen van de poort waarop de Raad van bestuur is aangesloten en gebruiken dezelfde snelheid (9600 bps)
poort = nieuwe Serial (dit, Serial.list() [0], 9600);
waarden = nieuwe int [breedte];
Zoom = 1.0f;
Smooth();
}
int getY(int val) {}
retourneren (int) (hoogte - val/1023.0f * (hoogte - 1));
}
int GetValue () {}
int waarde = -1;
terwijl (port.available() > = 3) {}
Als (port.read() == 0xff) {}
waarde = (port.read() << 8) | (port.read());
}
}
retourwaarde;
}
VOID pushValue (int waarde) {}
for (int i = 0; ik < breedte-1; i ++)
waarden [i] = waarden [i + 1];
waarden [breedte-1] = waarde;
}
ongeldig drawLines() {}
Stroke(255);
int. displayWidth = (int) (breedte / zoom);
int k = values.length - displayWidth;
int x0 = 0;
int y0 = getY(values[k]);
for (int i = 1; ik < displayWidth; i ++) {}
k ++;
int. x1 = (int) (ik * (breedte-1) / (displayWidth-1));
int y1 = getY(values[k]);
lijn (x0, y0, x1, y1);
x0 = x1;
y0 = y1;
}
}
ongeldig drawGrid() {}
beroerte (255, 255, 255);
lijn (0, hoogte/2, de breedte, de hoogte/2);
lijn (0, hoogte/2 + 1, breedte, hoogte/2 + 1);
lijn (0, hoogte/2 + 2, breedte, hoogte/2 + 2);
lijn (0, hoogte/2 + 3, breedte, hoogte/2 + 3);
lijn (0, hoogte/2 + 4, breedte, hoogte/2 + 4);
lijn (0, hoogte/2 + 5, breedte, hoogte/2 + 5);
}
ongeldig keyReleased() {}
schakelen (sleutel) {}
geval '+':
zoom * = 2.0f;
println(zoom);
Als ((int) (breedte / zoom) < = 1)
zoom / = 2.0f;
breken;
geval '-':
zoom / = 2.0f;
Als (zoom < 1.0f)
zoom * = 2.0f;
breken;
}
}
VOID draw()
{
serialcheck();
Als (serialt == true) {}
Als (Herr! = false) {}
achtergrond (19, 134, 209);
Fill(255);
tekst ("-uitzoomen", 100, 60);
tekst ("+ Inzoomen", 100, 95);
Update (mouseX, mouseY);
circle1.display();
circle2.display();
circle3.display();
drawGrid();
Val = GetValue ();
Als (val! = -1) {}
pushValue(val);
}
drawLines();
}
else {}
vulling (42, 88, 87);
rect (0, 0, 1280, 480);
circle3.display();
Update (mouseX, mouseY);
}
}
else {}
Background(0);
Fill(255);
tekst ("SORRY, de verbinding is verloren gegaan,", 100, 60);
tekst ("proberen te verbinden naar seriële poort.", 100, 95);
tekst ("als u opnieuw uw seriële poort en deze", 100, 130);
tekst ("bericht niet GO AWAY vervolgens afslag den", 100, 165);
tekst ("Programma en opnieuw het en het zal werken,", 100, 200);
tekst ("anders het ISA probleem met uw HARDWARE", 100, 235);
tekst ("of uw programmering.", 100, 280);
}
}
VOID serialcheck()
{
delay(12);
Als (port.available() > = 1) {}
serialt = true;
}
else {}
serialt = false;
}
}
void (int x, int y) update
{
if(Locked == False) {}
circle1.update();
circle2.update();
circle3.update();
rect1.update();
rect2.update();
}
else {}
vergrendeld = false;
}
if(mousePressed) {}
if(circle1.pressed()) {}
currentcolor = circle1.basecolor;
}
anders if(circle2.pressed()) {}
currentcolor = circle2.basecolor;
}
anders if(circle3.pressed()) {}
Als (Herr == true) {}
Herr = false;
}
else {}
Herr = true;
}
}
}
}
klasse knop
{
int x, y;
int size;
kleur basecolor, highlightcolor;
kleur currentcolor;
Boole-waarde meer dan = false;
Boolean ingedrukt = false;
VOID update()
{
if(over()) {}
currentcolor = highlightcolor;
}
else {}
currentcolor = basecolor;
}
}
Booleaanse pressed()
{
if(over) {}
vergrendeld = true;
return true;
}
else {}
vergrendeld = false;
return false;
}
}
Booleaanse over()
{
return true;
}
Booleaanse overRect (int x, int y, int breedte, int hoogte)
{
Als (mouseX > = x & & mouseX < = x + breedte & &
mouseY > = y & & mouseY < = y + hoogte) {}
return true;
}
else {}
return false;
}
}
Booleaanse overCircle (int x, int y, int diameter)
{
zweven disX = x - mouseX;
float disY = y - mouseY;
if(sqrt(SQ(disX) + sq(disY)) < diameter/2) {}
return true;
}
else {}
return false;
}
}
}
klasse CircleButton breidt knop
{
CircleButton (int ix int iy, int isize, kleur icolor, kleur ihighlight)
{
x = ix;
y = iy;
grootte = isize;
basecolor = icolor;
highlightColor = ihighlight;
currentcolor = basecolor;
}
Booleaanse over()
{
Als (overCircle (x, y, size)) {}
meer dan = true;
return true;
}
else {}
meer dan = false;
return false;
}
}
VOID display)
{
Stroke(255);
Fill(currentcolor);
ellips (x, y, maat, maat);
}
}
klasse RectButton breidt knop
{
RectButton (int ix int iy, int isize, kleur icolor, kleur ihighlight)
{
x = ix;
y = iy;
grootte = isize;
basecolor = icolor;
highlightColor = ihighlight;
currentcolor = basecolor;
}
Booleaanse over()
{
Als (overRect (x, y, maat, maat)) {}
meer dan = true;
return true;
}
else {}
meer dan = false;
return false;
}
}
VOID display)
{
Stroke(255);
Fill(currentcolor);
rect (x, y, maat, maat);
}
}