본문 바로가기

Arduino/Arduino 기초과정

[아두이노 기초편 2]Arduino와 Processing을 연동해 RGB LED 제어하기

이번 글에서는 Arduino와 Processing을 연동하는 방법을 간단한 예제를 통해 알아보도록 하겠다.

* Processing을 모르시는 분은 Processing 카테고리에서 먼저 소개를 읽고 이 글을 읽으시는 것을 권장합니다.



이번 글에서는 3색 LED를 이용하여 LED를 아두이노에서 무작위로 밝히고 이를 프로세싱에 표현하는 작업을 할 것이다.


* 3색 LED

3가지 색을 한꺼번에 나타낼 수 있는 LED. R, G, B LED를 하나로 합쳐놓은 것으로 보면 된다. 사용 방법도 3개의 LED를 따로따로 사용할 때와 마찬가지로 R, G, B를 각각 밝히는 (+)극이 하나씩 있고 가운데 (-)가 하나 존재해 총 4개의 핀으로 이루어져있다.


 

 

1. Processing LED 모니터 만들기

아두이노는 컴퓨터와 통신을 할 때 '시리얼 통신'이라는 것을 사용한다. 시리얼 통신의 정의는 '연속적으로 통신 채널이나 컴퓨터 버스를 거쳐 한번에 하나의 비트 단위로 데이터를 전송하는 과정'으로써, 아두이노와 컴퓨터가 서로에게 정보를 전달하는 대표적인 통신 방법이다. 이 작업을 하기 위해 먼저 아두이노에서 LED를 무작위로 밝히는 작업을 해보자.

1) Arduino 회로도

 저항은 220Ω을 사용한다.


2) Arduino - random LED 코드 

3) 실행 결과

아두이노의 시리얼 통신은 시리얼 모니터에서 확인할 수 있다. 시리얼 모니터는 다음 아두이노 창 위에 돋보기 모양을 클릭하면 볼 수 있다.


위 예제 코드를 실행시키고 시리얼 모니터를 키게 되면 다음과 같은 모습이 보이게 된다.


아두이노가 이 코드에서 LED를 밝히고 그 밝힌 LED의 번호를 시리얼 통신으로 보내주게 된다. 

조금 더 발전시켜서 LED를 R, G, B 세가지 색 뿐만이 아니라, 세가지 색의 밝기를 적절히 조절해 다양한 색을 만들어보자. 여기서 analogWrite()라는 새로운 함수를 볼 수 있게 된다. 

analogWrite()와 digitalWrite()의 차이점은, digitalWrite()는 단순히 HIGH(=1)와 LOW(=0)로 두 가지 상태만을 전달할 수 있다. 그러나 analogWrite()는 0부터 255 사이의 숫자를 전달해 밝기를 제어할 수 있다. 이는 실제로 흐르는 전류가 0~255 사이의 값으로 변하는 것이 아니라, 아두이노가 한 번 처리를 하는 주기동안 흐르는 HIGH와 LOW의 비율을 제어하는 것이다. 

3) Arduino - analog LED 코드



이를 Processing과 시리얼 통신을 연결하면 프로세싱에서도 이를 읽을 수 있게 되어 아두이노에서 프로세싱으로 정보를 전달할 수 있게 된다. 위의 코드의 결과로 밝혀지는 LED의 종류를 프로세싱으로 표현하도록 코드를 만들어보자.


4) Processing 코드

5) 실행 결과

모바일 페이지에선 자바스크립트가 동작하지 않습니다.

랜덤 색상이 Processing에 표현된다면 성공한 것이다.