본문 바로가기

Arduino/응용 프로젝트(1학기)

Arduino and Processing Serial Communication

Arduino and Processing Serial Communication

작성자 : 권혁원


1. 개요

아두이노는 수 많은 센서들을 이용하여 어느 분야에서든지 유용하게 쓰일 수 있따. 또한 프로세싱은 코딩을 통하여 무궁무진한 그래픽을 구현하는 언어이다. 이 두 언어가 서로 통신이 가능하다는 말을 듣고서 호기심이 생겨 어떠한 방법으로 통신을 하는지, 어떤 코드를 이용하면 통신이 가능하게 할 수 있는지 등을 알아보고싶어 이 프로젝트를 계획하였다.


2. Code

<Arduino Code (INPUT)>

<Processing Code (OUTPUT)


위의 코드를 보면 아두이노와 프로세싱의 두 언어가 서로 커뮤니케이션을 한다는 것을 보여준다. 아두이노에서 보낸 값을 프로세싱에서 받는 형식으로 코드를 작성하였다. 위의 코드는 아두이노의 코드, 아래쪽의 코드가 프로세싱 코드이다. 아두이노에서 시리얼 값을 전송하는 방법엔 print, write 이 두가지 함수가 존재하였다. 이 두 가지 함수가 각각 프로세싱에선 어떤 값으로 받아들이는 지에대한 예제를 작성한 결과이다.

<if == 51일 때>

<if == 3 일 때>

다음 각각의 그림은 print, write 이 두함수로 각각 받아들였을 때의 결과 화면이다. 이를 통하여 print는 시리얼 값을 아스키코드 값으로 넘겨준다는 것을 알 수 있으며, write는 다른 값으로 if(x == 3)으로 바꾸었을 때 write함수를 사용한 결과가 사각형이 나오는 것을 보아 write함수는 값을 변환하지 않고 그대로 넘겨준다는 것을 알았다.


3. 결론

프로세싱에서 아두이노의 신호를 받아드리러면 import processing.serial.*;, Serial port; 이 두가지 함수를 이용한다는 것을 알았으며, void setup() {port = new Serial(this, Serial.list()[port번째수],9600);}으로 아두이노 에서처럼 초기화를 시켜준 뒤, 최종적으로 port.read();로 아두이노에서 write혹은 print함수를 써서 받아들인 시리얼 값을 읽는 다는 것을 알았따. 또한 프로세싱에서 아두이노로 전송을 할 시엔 port.write();로 넘길 수 있어 아두이노에서 프로세싱으로 만이 아닌 프로세싱에서 아두이노로도 값을 전달 할 수 있어 쌍방향 통신이 가능하다는 것을 알게 되었다. 또한 write는 괄호 안의 값을 글대로 넘겨주며 print는 아스키코드로 변환하여 넘겨준다는 것 역시 알 수 있게 되었다.


4. 참고 문헌

http://wiki.processing.org

http://www.processing.org

http://www.arduino.cc