Arduino 보드에서 Arduino 프로그램으로 USB Serial 방식으로 전송하기때문에, Processing 에서도 Serial API를 활용하여
Arduino 보드에서 보내는 데이터를 읽어낼 수 있다.
Arduino 코드에서는 Serial.print를 이용하여 Serial 데이터를 송신
int flexiSensor = 5;
int button1 = 2;
int button2 = 3;
int flexiValue = 0;
int button1Value = 0;
int button2Value = 0;
void setup()
{
Serial.begin(9600);
pinMode(button1, INPUT);
pinMode(button2, INPUT);
}
void loop ()
{
flexiValue = analogRead(flexiSensor);
button1Value = digitalRead(button1);
button2Value = digitalRead(button2);
Serial.print(flexiValue, DEC);
Serial.print(",");
Serial.print(button1Value, DEC);
Serial.print(",");
Serial.println(button2Value, DEC);
}
int button1 = 2;
int button2 = 3;
int flexiValue = 0;
int button1Value = 0;
int button2Value = 0;
void setup()
{
Serial.begin(9600);
pinMode(button1, INPUT);
pinMode(button2, INPUT);
}
void loop ()
{
flexiValue = analogRead(flexiSensor);
button1Value = digitalRead(button1);
button2Value = digitalRead(button2);
Serial.print(flexiValue, DEC);
Serial.print(",");
Serial.print(button1Value, DEC);
Serial.print(",");
Serial.println(button2Value, DEC);
}
Processing 에서는 serial 라이브러리를 추가해주고, Serial.list() 를 이용해 목록확인, 읽어들일 포트를 설정한 후
serialEvent 함수를 구현하여 그안에서 데이터가 왔을경우에 대한 처리를 한다
이와 같은 방법으로 Arduino 를 통한 다양한 센서, 버튼 등의 physical 한 interface 의 입력을 받아
Processing 을 통하여 graphical 한 visual 요소를 표현 할 수 있다.
import processing.serial.*;
Serial inputPort;
int linefeed = 10;
int ballPosition = 10;
void setup()
{
size(640,480);
println(Serial.list()); // 가용한 serial port 의 자원의 목록을 보여준다
inputPort = new Serial(this, Serial.list()[0], 9600); // 이경우는 목록의 [0] 번이 Arduino 인경우임
inputPort.bufferUntil(linefeed);
}
void draw()
{
background(0);
fill(255,230,0);
ellipse(ballPosition, 50, 50, 50);
print("ballPosition=" + ballPosition);
}
void serialEvent(Serial inputPort) // serial port 로 데이터가 들어올 경우 호출되는 함수
{
String inputString = inputPort.readStringUntil(linefeed);
if(inputString != null)
{
inputString = trim(inputString);
int sensorValues[] = int(split(inputString, ','));
ballPosition = sensorValues[0];
}
}
Serial inputPort;
int linefeed = 10;
int ballPosition = 10;
void setup()
{
size(640,480);
println(Serial.list()); // 가용한 serial port 의 자원의 목록을 보여준다
inputPort = new Serial(this, Serial.list()[0], 9600); // 이경우는 목록의 [0] 번이 Arduino 인경우임
inputPort.bufferUntil(linefeed);
}
void draw()
{
background(0);
fill(255,230,0);
ellipse(ballPosition, 50, 50, 50);
print("ballPosition=" + ballPosition);
}
void serialEvent(Serial inputPort) // serial port 로 데이터가 들어올 경우 호출되는 함수
{
String inputString = inputPort.readStringUntil(linefeed);
if(inputString != null)
{
inputString = trim(inputString);
int sensorValues[] = int(split(inputString, ','));
ballPosition = sensorValues[0];
}
}
이와 같은 방법으로 Arduino 를 통한 다양한 센서, 버튼 등의 physical 한 interface 의 입력을 받아
Processing 을 통하여 graphical 한 visual 요소를 표현 할 수 있다.