๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Processing + Media art

๋น›์˜ ๋ฐ๊ธฐ์— ๋”ฐ๋ฅธ ์˜ค๋ธŒ์ ํŠธ ํฌ๊ธฐ ๋ณ€๊ฒฝ

by ์ด๋…ธํ‚ค_ 2019. 11. 26.

๊ฐ™์ด ๋“œ๋ผ๋งˆ ๋ณด๋Š” ์–‘๊ฐฑ์ด

 

flow

  1. ์•„๋‘์ด๋…ธ์™€ ๋ผ์ดํŠธ ์„ผ์„œ๋ฅผ ์—ฐ๊ฒฐํ•˜์—ฌ ๊ฐ’์„ ํ™•์ธํ•จ.
  2. ์„ผ์„œ์˜ ๊ฐ’์„ ์‹œ๋ฆฌ์–ผํ†ต์‹ ์œผ๋กœ ์ „์†ก
  3. processing์—์„œ ์„ผ์„œ์˜ ๊ฐ’์„ parsingํ•จ
  4. ์„ผ์„œ์˜ ๊ฐ’์ด ์ปค์งˆ์ˆ˜๋ก ์ •์œก๋ฉด์ฒด์˜ ํฌ๊ธฐ๊ฐ€ ์ปค์ง

์•„๋‘์ด๋…ธ code

int light = 0;
void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  
}

void loop() {
  // put your main code here, to run repeatedly:
  light = analogRead(A1);
  Serial.print(light);
  Serial.print(",");
  delay(500);
}

processing code

import processing.serial.*;

Serial myPort;
String myString = "";

float rotX, rotY;
int val = 0;

void setup()
{
  size(1200, 800, OPENGL);
  myPort = new Serial(this, Serial.list()[1], 9600);  
  /*
  Serial.list()๋ฅผ ์ถœ๋ ฅํ•ด๋ณธ ๋’ค์— ์—ฐ๊ฒฐ์ค‘์ธ ์‹œ๋ฆฌ์–ผ ํฌํŠธ๊ฐ€ ์–ด๋””์ธ์ง€ ํ™•์ธํ•œ๋‹ค. 
  ๋‚˜์˜ ๊ฒฝ์šฐ์—๋Š” 
  Serial.list()[0] = "COM1"
  Serial.list()[1] = "COM5"์˜€๊ณ , ํ˜„์žฌ ์•„๋‘์ด๋…ธ ์šฐ๋…ธ์™€ ์—ฐ๊ฒฐ๋œ ํฌํŠธ๋Š” COM5๋ฒˆ์ด์–ด์„œ 
  ๋ฐฐ์—ด ๊ฐ’์„ 1๋กœ ์ฃผ์—ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋’ค์— ์ธ์ž๋กœ๋Š” baudrate๋ฅผ ๋„ฃ์–ด์ค€๋‹ค.
  */
}

void draw()
{
 //ํฌํŠธ์— ๊ฐ’์ด ๋“ค์–ด์˜ค๋ฉด
 if(myPort.available() > 0)
 {
  //","๊ฐ€ ๋“ค์–ด์˜ฌ๋•Œ๊นŒ์ง€ ๊ฐ’์„ ์ฝ๋Š”๋‹ค. 
  //UNO์—์„œ ๊ฐ’, ํ˜•ํƒœ๋กœ ๋ณด๋‚ด๊ณ  ์žˆ์Œ
   myString = myPort.readStringUntil(',');
   if(myString != null)
   {
      //println(myString);
      //๊ฐ’๋งŒ ์ฝ์–ด์˜จ๋‹ค.
      String[] list = split(myString, ',');
      
      val = int(list[0]);
      print(val);
   }
 }
 
   background(32); //๊ทธ๋ ˆ์ด ๊ฐ’์œผ๋กœ ๋’ท ๋ฐฐ๊ฒฝ ๊ทธ๋ฆฌ๊ณ 
   smooth(); //์œค๊ณฝ์€ ๋ถ€๋“œ๋Ÿฝ๊ฒŒ
   lights();
   
   fill(#FF9F03); //๋ฐ•์Šค ์ƒ‰๊น”์„ ๋„ฃ๊ณ 
   stroke(3); //์œค๊ณฝ์„ ์„ ๊ทธ๋ ค์ค€๋‹ค. ํ•„์š”์—†์œผ๋ฉด noStroke()๋กœ ํ•˜๋ฉด๋จ.
   
   translate(width/2, height/2); //์ค‘์‹ฌ์ ์„ ๋ณ€๊ฒฝํ•˜๊ณ 
   rotateX(rotX); //๋งˆ์šฐ์Šค์˜ ๋“œ๋ž˜๊ทธ ๋ฐฉํ–ฅ๋Œ€๋กœ ํšŒ์ „ํ•จ
   rotateY(-rotY);
   box(val*1.5); //๋ฐ๊ธฐ๊ฐ’์— 1.5๋ฐฐ๋งŒํผ ๋„ํ˜•์˜ ์‚ฌ์ด์ฆˆ๊ฐ€ ๋ณ€๊ฒฝ๋จ
   
}

void mouseDragged(){
    rotY -= (mouseX - pmouseX) * 0.01;
    rotX -= (mouseY - pmouseY) * 0.01;
   
}

 

 

๋Œ“๊ธ€