Paso 7: Ambi luz - lado de la computadora
En el lado de la computadora que es ejecutar un esquema de procesamiento 1.0, vea processing.org . Este pequeño programa (algo sucio) calcula el promedio screencolor a cada instante y este envía al puerto serie. Es muy básico todavía y podría utilizar algún trucaje, pero funciona muy bien! Voy a actualizar en el futuro para múltiples tiras RGB separadas y las secciones de la pantalla. También se podría hacer eso mismo, el lenguaje es bastante sencillo.Aquí está el código:
---Proceso 1,0 código---
Import processing.serial.*;
Import java.awt.AWTException;
Import java.awt.Robot;
importación java.awt.Rectangle;
java.awt.image.BufferedImage importación;
PImage captura;
Serie myPort;
principal vacío público estático (String args[]) {}
PApplet.main (new String [] {}
"--presente", "shooter"}
);
}
void setup() {}
Size(100,100); tamaño (screen.width, screen.height);
Imprimir una lista de los puertos serie, para propósitos de depuración:
println(serial.List());
Sé que el primer puerto en la lista de serie de mi mac
es siempre mi Adaptador FTDI, así que abro Serial.list() [0].
En equipos con Windows, esto abre generalmente COM1.
Abierto cualquier puerto es el que utilizas.
String portName = Serial.list() [0];
myPort = serie nueva (este, portName, 9600);
}
void dibujar () {}
imagen (captura de pantalla, 0, 0, anchura, altura);
captura de pantalla = getScreen();
color kleur = color(0,0,0);
kleur = colour(screenShot);
myPort.write(int(red(kleur))+','+int(green(kleur))+','+int(blue(kleur))+13);
myPort.write(int(red(kleur)));
myPort.write(',');
myPort.write(int(green(kleur)));
myPort.write(',');
myPort.write(int(blue(kleur)));
myPort.write(13);
Fill(kleur);
Rect (30, 20, 55, 55);
}
color colour(PImage img) {}
int cols = (img.width);
int filas = (img.height);
int dimension = (img.width*img.height);
int r = 0;
int g = 0;
int b = 0;
img.loadPixels();
Pixel de elke GA Lang (dimensión)
para (int i = 0; i < (dimensión/2); i ++) {}
r = r + ((img.pixels[i] >> 16) & 0xFF);
g = g + ((img.pixels[i] >> 8) & 0xFF);
b = b + (img.pixels[i] & 0xFF);
}
int mean_r = r/(dimension/2);
int mean_g = g/(dimension/2);
int mean_b = b/(dimension/2);
color mean_clr = color (mean_r, mean_g, mean_b);
myPort.write('S');
myPort.write(mean_r);
myPort.write(mean_g);
myPort.write(mean_b);
volver (mean_clr);
}
PImage getScreen() {}
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice [] gs = ge.getScreenDevices();
DisplayMode modo = gs[0].getDisplayMode();
Límites de rectángulo = new rectángulo (0, 0, mode.getWidth(), mode.getHeight());
Escritorio de buffer = nuevo BufferedImage(mode.getWidth(), mode.getHeight(), BufferedImage.TYPE_INT_RGB);
trate de {}
escritorio = nuevo Robot(gs[0]).createScreenCapture(bounds);
}
catch (AWTException e) {}
System.err.println ("captura de pantalla no se pudo.");
}
retorno (nuevo PImage(desktop));
}
---FIN---