example7-2

import processing.serial.*;
import org.firmata.*;
import cc.arduino.*;
Arduino arduino;//Arduinoオブジェクト作成
int val1;
int val2;

float z=20;
int hai=10;
float w;
float s=0.5;
int ar=100;//
float es;
boolean sw=true;
int c;
int haichi;
int[] r= new int[ar];
int[] g= new int[ar];
int[] b= new int[ar];
int[] a= new int[ar];
float[] px= new float[ar];
float[] py= new float[ar];
float[] vx= new float[ar];
float[] vy= new float[ar];
float[] ex= new float[ar];
float[] ey= new float[ar];
float[] sx= new float[ar];
float[] sy= new float[ar];
float[] d= new float[ar];
int i,j,x,y,l;

void setup(){
 arduino = new Arduino(this, Arduino.list()[0],57600);
 for(i=0;i<ar;i++){
 px[i]=50.0;
 py[i]=150.0;
 es=random(5,10);
 sx[i]=es;
 sy[i]=es;
 c=int(random(0,255));
 r[i]=c;
 c=int(random(0,255));
 g[i]=c;
 c=int(random(0,255));
 b[i]=c;

c=int(random(80,90));
  a[i]=c;
  }
  size(600,600);
  smooth();
  ellipseMode(RADIUS);
  noStroke();
  frameRate(45);

}

void draw(){
  background(255);
  brect();

  for(i=0;i<ar;i++){
  ex[i] = (x - px[i])+random(1,hai)-(hai/2);
  ey[i] = (y - py[i])+random(1,hai)-(hai/2);
  //単位ベクトルを求める
  d[i] = sqrt(ex[i]*ex[i] + ey[i]*ey[i]);
  ex[i] /= d[i];
  ey[i] /= d[i]; 
  vx[i] += ex[i];
  vy[i] += ey[i];
  float d= map(val1,25,98,1.1,0.95);//val1の値を導入
  vx[i] *= d;//減衰
  vy[i] *= d;  
  px[i] += vx[i];
  py[i] += vy[i];
 if(i<99){
  l=i+1;  
  sx[i]=val2;//val2の値を導入
  sy[i]=val2;//val2の値を導入
  }
  fill(r[i],g[i],b[i],a[i]);
  ellipse(px[i],py[i],sx[i],sy[i]);
}
  val1=arduino.analogRead(0)/8;
  val2=arduino.analogRead(1)/8;
}



void brect(){
  rectMode(CENTER);
  if(sw==true){
    z=z+w;
    }
  else if(sw==false){
    z=z-w;
    }
    //println(w);
  if(z<=15||z>=30){
   sw=!sw;
   }
  noStroke();
  fill(255,255,0);
  ellipse(x,y,z,z);
  w=z/30;
}


void mousePressed() {
 x=mouseX;
 y=mouseY;
 //println(x);
  }



Comments