Paso 3: Proceso de programación
/*
* Osciloscopio
* Da una representación visual del pin analógico 0 en tiempo real.
*
*
* (c) 2011 "simonfrfr" (newtonlabs
*/
Import processing.serial.*;
color currentcolor;
Boolean bloqueada = false;
Herr boolean = false;
Boolean serialt = false;
CircleButton circle1, circle2, circle3;
Puerto serial; Crear un objeto de clase Serial
int val; Datos recibidos del puerto serial
int [] valores;
zoom del flotador;
PFont fontA;
void setup()
{
fontA = loadFont("Ziggurat-HTF-Black-32.vlw");
textFont (fontA, 32);
Dibujar solamente una vez
noLoop();
Size(1280, 480);
color buttoncolor = color(153);
color resaltado = color(102);
ellipseMode(CENTER);
circle3 = new CircleButton (50, 50, 50, buttoncolor, destacado);
circle2 = new CircleButton (50, 50, 50, buttoncolor, destacado);
circle1 = new CircleButton (50, 50, 50, buttoncolor, destacado);
Abrir el puerto que la Junta está conectada y utiliza la misma velocidad (9600 bps)
puerto = serie nueva (este, Serial.list() [0], 9600);
valores = new int [ancho];
Zoom = 1.0f;
Smooth();
}
int getY(int val) {}
devolver (int) (altura - val/1023.0f * (altura - 1));
}
int getValue() {}
int valor = -1;
mientras que (port.available() > = 3) {}
Si (port.read() == 0xff) {}
valor = (port.read() << 8) | (port.read());
}
}
devolver valor;
}
void pushValue (int valor) {}
para (int i = 0; i < ancho 1; i ++)
valores [i] = valores [i + 1];
valores [anchura-1] = valor;
}
void drawLines() {}
Stroke(255);
int displayWidth = (int) (ancho / zoom);
int k = values.length - displayWidth;
int x0 = 0;
int y0 = getY(values[k]);
para (int i = 1; i < displayWidth; i ++) {}
k ++;
int x1 = (int) (i * (ancho-1) / (displayWidth-1));
int y1 = getY(values[k]);
línea (x0, y0, x1, y1);
x0 = x1;
Y0 = y1;
}
}
void drawGrid() {}
Stroke (255, 255, 255);
línea (0, 2/altura, anchura, altura/2);
línea (altura 0, / 2 + 1, ancho, alto/2 + 1);
línea (altura 0, / 2 + 2, ancho, alto/2 + 2);
línea (altura 0, / 2 + 3, ancho, alto/2 + 3);
línea (altura 0, / 2 + 4, ancho, alto/2 + 4);
línea (altura 0, / 2 + 5, ancho, alto/2 + 5);
}
{} void keyReleased()
Switch (key) {}
caso '+':
zoom * = 2.0f;
println(zoom);
Si ((int) (ancho / zoom) < = 1)
zoom / = 2.0f;
rotura;
caso '-':
zoom / = 2.0f;
Si (zoom < 1.0f)
zoom * = 2.0f;
rotura;
}
}
void draw()
{
serialcheck();
Si (serialt == true) {}
Si (Herr! = false) {}
Fondo (19, 134, 209);
Fill(255);
texto ("-Alejar", 100, 60);
texto ("+ zoom", 100, 95);
actualización (mouseX, mouseY);
circle1.display();
circle2.display();
circle3.display();
drawGrid();
Val = getValue();
Si (val! = -1) {}
pushValue(val);
}
drawLines();
}
Else {}
relleno (42, 88, 87);
Rect (0, 0, 1280, 480);
circle3.display();
actualización (mouseX, mouseY);
}
}
Else {}
Background(0);
Fill(255);
texto ("lo siento, la conexión se ha perdido, 60, 100);
texto ("intentar a conectar al SERIAL puerto", 100, 95);
texto ("Si usted vuelva a conectar su SERIAL PORT y este", 100, 130);
texto ("mensaje no GO AWAY luego salida la", 100, 165);
texto ('Programa y reabrir, y que será trabajo,', 100, 200);
texto ("de lo contrario se ISA problema con su HARDWARE", 100, 235);
texto ("o su programación.", 100, 280);
}
}
void serialcheck()
{
Delay(12);
Si (port.available() > = 1) {}
serialt = true;
}
Else {}
serialt = false;
}
}
void actualizar (int x, int y)
{
if(LOCKED == false) {}
circle1.Update();
circle2.Update();
circle3.Update();
rect1.Update();
rect2.Update();
}
Else {}
bloqueado = false;
}
{if(mousePressed)}
{if(circle1.pressed())}
currentcolor = circle1.basecolor;
}
else {} if(circle2.pressed())
currentcolor = circle2.basecolor;
}
else {} if(circle3.pressed())
Si (Herr == true) {}
Herr = false;
}
Else {}
Herr = true;
}
}
}
}
clase botón
{
int x, y;
int tamaño;
color basecolor, highlightcolor;
color currentcolor;
booleano más = false;
Boolean presiona = false;
void update()
{
{if(Over())}
currentcolor = highlightcolor;
}
Else {}
currentcolor = basecolor;
}
}
pressed() Boolean
{
{if(over)}
bloqueado = true;
verdaderas;
}
Else {}
bloqueado = false;
devuelven el valor false;
}
}
over() booleano
{
verdaderas;
}
Boolean overRect (int x, int y, int ancho, int altura)
{
Si (ratonX > = x & & mouseX < = x + ancho & &
mouseY > = y & & mouseY < = y + altura) {}
verdaderas;
}
Else {}
devuelven el valor false;
}
}
Boolean overCircle (int x, int y, int diámetro)
{
flotador disX = x - mouseX;
disY flotador = y - mouseY;
if(sqrt(sq(disX) + sq(disY)) < diámetro/2) {}
verdaderas;
}
Else {}
devuelven el valor false;
}
}
}
clase CircleButton extiende botón
{
CircleButton (int ix, iy int, int isize, color icolor, color ihighlight)
{
x = ix;
y = iy;
tamaño = isize;
basecolor = icolor;
highlightColor = ihighlight;
currentcolor = basecolor;
}
over() booleano
{
Si (overCircle (x, y, tamaño)) {}
más = true;
verdaderas;
}
Else {}
más = false;
devuelven el valor false;
}
}
void display()
{
Stroke(255);
Fill(currentcolor);
Ellipse (x, y, tamaño, tamaño);
}
}
clase RectButton extiende botón
{
RectButton (int ix, iy int, int isize, color icolor, color ihighlight)
{
x = ix;
y = iy;
tamaño = isize;
basecolor = icolor;
highlightColor = ihighlight;
currentcolor = basecolor;
}
over() booleano
{
Si (overRect (x, y, tamaño, tamaño)) {}
más = true;
verdaderas;
}
Else {}
más = false;
devuelven el valor false;
}
}
void display()
{
Stroke(255);
Fill(currentcolor);
Rect (x, y, tamaño, tamaño);
}
}