import processing.serial.*;//Arduino繧呈桶縺�圀縺ォ蠢�ヲ�
import processing.opengl.*; //3D繧ー繝ゥ繝輔ぅ繝�け繧ケ繧呈桶縺�圀縺ォ蠢�ヲ�
import cc.arduino.*;   //Arduino繧呈桶縺�圀縺ォ蠢�ヲ� 
Arduino arduino;  //Arduino繧呈桶縺�圀縺ォ蠢�ヲ�

float a; //繧「繝翫Ο繧ー繝昴�繝�1繧剃サ」蜈・縺吶k螟画焚繧堤畑諢上☆繧�
float b; //繧「繝翫Ο繧ー繝昴�繝�0繧剃サ」蜈・縺吶k螟画焚繧堤畑諢上☆繧�

void setup() {  //setup縺ッ荳€蠎ヲ縺励°螳溯。後&繧後↑縺�
  //3D繧ー繝ゥ繝輔ぅ繝�け繧ケ繧呈桶縺�◆繧√↓縺ッOPENGL繧定ィ伜�縺吶k縺薙→
  size(470, 480,OPENGL);
  //Arduino縺梧磁邯壹&繧後※縺�k繝昴�繝医r謖�ョ壹☆繧�(謨ー蟄励r螟画峩縺吶k縺薙→)
  arduino = new Arduino(this, Arduino.list()[0],57600);
  smooth();   //繧ー繝ゥ繝輔ぅ繝�け繧呈サ代i縺九↓縺吶k
  frameRate(15); //荳€遘帝俣縺ォ繧「繝九Γ繝シ繧キ繝ァ繝ウ繧定。ィ遉コ縺吶k蝗樊焚
}

void draw() { //draw蜀��繝励Ο繧ー繝ゥ繝�繧堤オゆコ�@縺ェ縺�剞繧頑ュ「縺セ繧峨↑縺�
  background(255);  //逕サ髱「繧堤區濶イ縺ァ蝪励j縺、縺カ縺�
  //荳画ャ。蜈�ゥコ髢謎ク�(200,150,200)縺ォ(0,100,255)縺ョ濶イ縺ョ繝ゥ繧、繝医r險ュ鄂ョ縺吶k
  pointLight(0,100,255,200,150,200);
  //荳画ャ。蜈�ゥコ髢謎ク�(0,-150,200)縺ォ(255,255,255)縺ョ濶イ縺ョ繝ゥ繧、繝医r險ュ鄂ョ縺吶k
  pointLight(255,255,255,0,-150,200);

  //螟画焚a縺ォ繧「繝翫Ο繧ー繝昴�繝�1縺ォ謗・邯壹&繧後◆繧サ繝ウ繧オ繝シ縺ョ迴セ蝨ィ蛟、繧剃サ」蜈・縺吶k
  a = arduino.analogRead(1) ;  
  //螟画焚b縺ォ繧「繝翫Ο繧ー繝昴�繝�0縺ォ謗・邯壹&繧後◆繧サ繝ウ繧オ繝シ縺ョ迴セ蝨ィ蛟、繧剃サ」蜈・縺吶k
  b = arduino.analogRead(0) ;

  fill(150);  //縺薙l縺九i謠上¥蝗ウ蠖「縺ョ蝪励j縺、縺カ縺苓牡繧偵げ繝ャ繝シ(150)縺ォ險ュ螳�
  translate(240,240); //蠎ァ讓�(240,240)繧貞次轤ケ(0,0)縺ィ縺吶k
  //X霆ク譁ケ蜷代↓(-1*(a/3+10))蠎ヲ縲∝コァ讓吶r蝗櫁サ「縺輔○繧�
  rotateX(-1*radians(a/3+10));  
  //Z霆ク譁ケ蜷代↓(b/3)蠎ヲ縲∝コァ讓吶r蝗櫁サ「縺輔○繧�
  rotateZ(1*radians(b/3));

  //縺薙l縺九i謠上¥蝗ウ蠖「縺ョ邱壹�謠上°縺ェ縺�
  noStroke();
  //蟷�200繝斐け繧サ繝ォ鬮倥&20繝斐け繧サ繝ォ螂・陦後″200繝斐け繧サ繝ォ縺ョ逶エ譁ケ菴薙r謠上¥
  box(200,50,200);
  //迴セ蝨ィ縺ョ蠎ァ讓吶°繧浦霆ク譁ケ蜷代↓繝槭う繝翫せ150繝斐け繧サ繝ォ蜴溽せ繧堤ァサ蜍輔☆繧�
  translate(0,-150,0);
  //蜊雁セ�50繝斐け繧サ繝ォ縺ョ逅�r謠上¥
  sphere(50);
}