Processing 기초

  • processing.org 에서 다운로드 (다운로드 페이지)
  • arduino sketch는 C++기반이고, processing sketch는 java기반입니다.

processing sketch 예제

  1. 예제1 : 프로세싱 윈도우 크기, 배경색, 점, 선, 사각형, 원, 텍스트, 폰트, 사진 입력
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
void setup() {
size(400,400);
background(100); // background(0,255,0);
strokeWeight(10); // dot/line width
stroke(0,255,0,100); // dot/line color and transparency, noStroke();
point(200,200); // draw dot
line(0,0,200,150); // draw line
ellipse(300,300,50,80); // draw circle(x,y,xr,yr)
fill(0); // rect/text color, nofill();
rect(100,250,150,300); // draw rectangle(x1,y1,x2,y2)

textSize(20);
PFont font = createFont("NanumGothic", 32);
textFont(font);
text("Hello World!",200,100); // text(string,x1,y2)

PImage img = loadImage("sks.jpg"); // file in '/sketch_XXXXXXa/data/' folder
image(img,20,50); // image(img,x,y,width,height);

}

void draw() {

}

  1. 예제2 : 마우스와 키보드 이벤트
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
void setup() {
size(400,400);
}

void draw() {

}

void mousePressed() {
if(mouseButton == LEFT) {
println("left button Pressed!");
} else if(mouseButton == RIGHT) {
println("right button Pressed!");
} else if(mouseButton == CENTER) {
println("center button Pressed!");
}
}

void keyPressed() {
println("key Pressed!"); // Key event
println(key); // Key String
println(keyCode); // ASCII Code
}

void mouseReleased() {
println("button Released!");
}

void keyReleased() {
println("key Released!");
}

void mouseClicked() {
println("button Clicked!");
}

void mouseMoved() {
println("mouse Moved!");
}

void mouseDragged() {
println("mouse Dragged!");
}

void mouseWheel() {
println("mouse Wheel!");
}

  1. 예제3 : 마우스 움직이는 대로 원 그리기
1
2
3
4
5
6
7
8
9
10
void setup() {
size(400,400);
}

void draw() {
}

void mouseMoved() {
ellipse(mouseX,mouseY,50,50);
}

  1. 예제4 : 자유선 그리기
1
2
3
4
5
6
7
8
9
10
void setup() {
size(400,400);
}

void draw() {
}

void mouseMoved() {
line(pmouseX,pmouseY,mouseX,mouseY);
}


schematic

아두이노의 기본 LED를 사용할 것이므로 별도의 회로 연결없이 아두이노만 연결한다.


library 등록

  1. 아두이노 사이트에서 프로세싱 라이브러리를 다운받은 후

  2. 압축을 풀었을 때 나오는 arduino폴더를 c:\Users\userID\processing\libraries\ 폴더에 복사한다.

  3. 프로세싱 프로그램에서 스케치내부라이브러리Arduino (firmata)를 선택하면,

1
2
3
import cc.arduino.*;
import org.firmata.*;
import processing.serial.*;

가 등록된다.


processing sketch

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import cc.arduino.*;
import org.firmata.*;
import processing.serial.*;

Arduino arduino;
int ledPin = 13;

void setup() {
size(400,400);
println(Arduino.list());
arduino = new Arduino(this, Arduino.list()[0], 57600); // Arduino.list()[0] or "COM3"
arduino.pinMode(ledPin, Arduino.OUTPUT);
}

void draw() {
arduino.digitalWrite(ledPin, Arduino.HIGH);
delay(1000);
arduino.digitalWrite(ledPin, Arduino.LOW);
delay(1000);
}

arduino sketch

  1. arduino IDE에서 파일예제firmatastandard firmata를 불러들인 후

  2. 컴파일하고 업로드한다.


processing에서 실행하기

  1. processing에서 실행버튼을 눌러 실행해보기

  2. 파일어플리케이션으로 내보내기를 선택하여 윈도우, Mac, Linux용 실행파일을 만들어보기

※ 어플리케이션으로 내보내기를 하기전에 processing sketch를 저장하여야 한다.



Processing으로 led 제어하기

processing sketch : 사각형 스위치

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import cc.arduino.*;
import org.firmata.*;
import processing.serial.*;

Arduino arduino;
int ledPin = 13;

void setup() {
size(400,400);
background(0);
fill(255);
noStroke();
rect(width/2, 0, width/2, height);
text("LED OFF", 30, 30);
fill(0, 0, 0);
text("LED ON", 230, 30);

println(Arduino.list());
arduino = new Arduino(this, Arduino.list()[0], 57600);
arduino.pinMode(ledPin, Arduino.OUTPUT);
}

void draw() {
}

void mouseMoved() {
if(mouseX < width/2) {
arduino.digitalWrite(ledPin, Arduino.LOW);
} else {
arduino.digitalWrite(ledPin, Arduino.HIGH);
}
}

processing sketch : 그라데이션 가변저항

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import cc.arduino.*;
import org.firmata.*;
import processing.serial.*;

Arduino arduino;
int ledPin = 13;

void setup() {
size(400,400);

for(int i=0; i<width; i++) {
stroke(map(i, 0, width-1, 0, 255)); // 색깔을 점차 변화시키면서
line(i, 0, i, height); // 선을 그려, 그라데이션 효과를 만들어 냄
}

println(Arduino.list());
arduino = new Arduino(this, Arduino.list()[0], 57600);
}

void draw() {
}

void mouseMoved() {
arduino.analogWrite(ledPin, int(map(mouseX, 0, width-1, 0, 255)));
}
Author

chemidot

Posted on

2018-11-30

Updated on

2021-11-17

Licensed under

댓글