Arduino // Processing

I made a project wherein a push button connected to Arduino controls the size of a pair of circles in Processing.

Here’s the code:

Arduino

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  pinMode(3, INPUT);
}

void loop() {
 int digitalVal = digitalRead(3);
 Serial.write(digitalVal);
}

Processing

import processing.serial.*;

Serial myPort;
int previousVal = 0;

Sphere mySphere0;
Sphere mySphere1;

void setup(){
 printArray(Serial.list());
 String portName = Serial.list()[0];
  myPort = new Serial(this, portName, 9600);
 
 size(800, 600);
  mySphere0 = new Sphere(random(10,width-10), random(10, height - 10),10);
  mySphere1 = new Sphere(width/2,height/2,200);
}

void draw(){
  background(0);
  mySphere0.render();
  mySphere0.update();
  mySphere0.checkBounds();
  
  mySphere1.render();
  mySphere1.update();
  mySphere1.checkBounds();
 
}

void serialEvent (Serial myPort) {
  int inByte = myPort.read();
  println(inByte);
  
  if(inByte == 1){
    previousVal = 1;
  }
  else if(inByte == 0){
    if(previousVal == 1){
      mySphere0.changeSize();
      mySphere1.changeSize();
    }
    previousVal = 0;
  }
  
}

Sphere class

class Sphere{
  //declare variables 
  float xPos;
  float yPos;
  float xSpeed;
  float ySpeed;
  float diam;
  color c;
  
  //constructor - define variables, setup for the class
  Sphere(float x_, float y_, float d_){
    c = color(random(0,255),random(0,255),random(0,255));
   xPos = x_;
   yPos = y_;
   xSpeed = random(-3.,5.);
   ySpeed = random(-3.,5.);
   diam = d_;
  }
  
  //declare functions//methods
  void render(){
    fill(c);
    ellipse(xPos, yPos, diam, diam);
}

void update(){
  xPos += xSpeed;
  yPos += ySpeed;
}

void checkBounds(){
    
  if(xPos >= width || xPos <= 0){
   xSpeed = xSpeed * -1; 
  }
  
  if(yPos >= height ||yPos <= 0){
   ySpeed = ySpeed * -1; 
    }
  
  }
  
  void changeSize(){
   diam = random(10, 200); 

  }
  
}

 

Leave a Reply