Response title
This is preview!




Click on Join Now to Sign Up
//Developed by Rajarshi Roy
int red, green, blue; //red, green and blue values
int RedPin = 10; //Red: PWM pin 10
int GreenPin = 11; //Green: PWM pin 11
int BluePin = 9; //Blue: PWM pin 9
void setup()
{
Serial.begin(9600);
//initial values (no significance)
int red = 255;
int blue = 255;
int green = 255;
}
void loop()
{
//protocol expects data in format of 4 bytes
//(xff) as a marker to ensure proper synchronization always
//followed by red, green, blue bytes
if (Serial.available()>=4) {
if(Serial.read() == 0xff){
red = Serial.read();
green= Serial.read();
blue = Serial.read();
}
}
//finally control led brightness through pulse-width modulation
analogWrite (RedPin, red);
analogWrite (GreenPin, green);
analogWrite (BluePin, blue);
delay(10); //just to be safe
}//Developed by Rajarshi Royimport java.awt.Robot; //java library that lets us take screenshotsimport java.awt.AWTException;import java.awt.event.InputEvent;import java.awt.image.BufferedImage;import java.awt.Rectangle;import java.awt.Dimension;import processing.serial.*; //library for serial communication
Serial port; //creates object "port" of serial classRobot robby; //creates object "robby" of robot class
void setup(){ port = new Serial(this, Serial.list()[0],9600); //set baud rate size(100, 100); //window size (doesn't matter) try //standard Robot class error check { robby = new Robot(); } catch (AWTException e) { println("Robot class not supported by your system!"); exit(); }}
void draw(){ int pixel; //ARGB variable with 32 int bytes where //sets of 8 bytes are: Alpha, Red, Green, Blue float r=0; float g=0; float b=0;
//get screenshot into object "screenshot" of class BufferedImage BufferedImage screenshot = robby.createScreenCapture(new Rectangle(new Dimension(1368,928)));//1368*928 is the screen resolution
int i=0; int j=0; //1368*928 //I skip every alternate pixel making my program 4 times faster for(i =0;i<1368; i=i+2){ for(j=0; j<928;j=j+2){ pixel = screenshot.getRGB(i,j); //the ARGB integer has the colors of pixel (i,j) r = r+(int)(255&(pixel>>16)); //add up reds g = g+(int)(255&(pixel>>8)); //add up greens b = b+(int)(255&(pixel)); //add up blues } } r=r/(684*464); //average red (remember that I skipped ever alternate pixel) g=g/(684*464); //average green b=b/(684*464); //average blue
port.write(0xff); //write marker (0xff) for synchronization port.write((byte)(r)); //write red value port.write((byte)(g)); //write green value port.write((byte)(b)); //write blue value delay(10); //delay for safety
background(r,g,b); //make window background average color }