I combined Processing and Arduino in this example by getting an RGB LED to change colors according to the pixels on the screen (using processing).
The codes:
int redPin = 9;
int greenPin = 10;
int bluePin = 11;
long int inByte;
void setup()
{
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(bluePin, OUTPUT);
Serial.begin(9600);
}
void outputColour(int red, int green, int blue) {
analogWrite(redPin, red);
analogWrite(bluePin, blue);
analogWrite(greenPin, green);
}
int* getColour() {
int* colour;
int i;
i = 0;
while (i < 4)
{
if (Serial.available() > 0) {
colour[i] = Serial.read();
i++;
}
}
return colour;
}
void loop()
{
if (Serial.available() > 0) {
inByte = Serial.read();
if (inByte == 'C') {
int* one;
one = getColour();
outputColour(one[1], one[2], one[3]);
}
}
delay(10);
}
import processing.serial.*;
PImage img;
Serial myPort;
void setup() {
//set these to the size of the image
size(512, 512);
// printArray(Serial.list());
// String portname=Serial.list()[1];
// println(portname);
img = loadImage("pixels.jpg");
myPort = new Serial(this, Serial.list()[1], 9600);
}
void draw() {
background(0);
image(img, 0, 0);
img.loadPixels();
}
void mousePressed()
{
myPort.write("CL");
myPort.write(int(red(img.pixels[mouseX+mouseY*img.width])));
myPort.write(int(green(img.pixels[mouseX+mouseY*img.width])));
myPort.write(int(blue(img.pixels[mouseX+mouseY*img.width])));
}
I got help using the following tutorials:
https://www.hackster.io/hardikrathod/control-arduino-using-gui-arduino-processing-2c9c6c
https://www.instructables.com/id/RGBs-with-Arduino-and-Processing/