/* The following Processing Sketch was created by ScottC on the 10 Nov 2012 : http://arduinobasics.blogspot.com/ Inspired by this Processing sketch by Daniel Shiffman: http://processing.org/learning/basics/sinewave.html */ import processing.serial.*; int numOfShapes = 60; // Number of squares to display on screen int shapeSpeed = 2; // Speed at which the shapes move to new position // 2 = Fastest, Larger numbers are slower //Global Variables Square[] mySquares = new Square[numOfShapes]; int shapeSize, distance; String comPortString; Serial myPort; /* -----------------------Setup ---------------------------*/ void setup(){ size(displayWidth,displayHeight); //Use entire screen size. smooth(); // draws all shapes with smooth edges. /* Calculate the size of the squares and initialise the Squares array */ shapeSize = (width/numOfShapes); for(int i = 0; i0; i--){ /* Use the previous square's position as a target */ targetY=mySquares[i-1].getY(); oldY=mySquares[i].getY(); if(abs(oldY-targetY)<2){ newY=targetY; //This helps to line them up }else{ //calculate the new position of the square newY=oldY-((oldY-targetY)/shapeSpeed); } //Set the new position of the square mySquares[i].setY(newY); /*Calculate the colour of the square based on its position on the screen */ blueVal = int(map(newY,0,height,0,255)); redVal = 255-blueVal; fill(redVal,0,blueVal); /* Draw the square on the screen */ rect(mySquares[i].getX(), mySquares[i].getY(),shapeSize,shapeSize); } } /* ---------------------sketchFullScreen---------------------------*/ // This puts processing into Full Screen Mode boolean sketchFullScreen() { return true; } /* ---------------------CLASS: Square ---------------------------*/ class Square{ int xPosition, yPosition; Square(int xPos, int yPos){ xPosition = xPos; yPosition = yPos; } int getX(){ return xPosition; } int getY(){ return yPosition; } void setY(int yPos){ yPosition = yPos; } }