아두이노와 프로세싱을 연동하는 프로젝트로서, 아두이노의 가변저항을 조절하여 프로세싱의 rect의 색상을 조절해봅니다. 과정은 간단합니다.
1. 아두이노보드에 가변저항을 연결합니다. 가변저항의 세 단자에 GND, 5V, 그리고 A0(아날로그 입력)을 연결해 줍니다. (* 연결방법은 아래 포스트를 참조합니다.)
2. 아두이노 코드를 작성합니다.
3. 아두이노 프로그램에 시리얼 모니터(돋보기 아이콘)를 열어서 가변저항을 돌림에 따라 변하는 값이 제대로 출력되는지 확인합니다.
4. 프로세싱 코드를 작성합니다.
5. 가변저항 연결 및 두 프로그램에 코드작성이 끝나면, 먼저 아두이노 업로드->프로세싱 play 순서로 작동해 봅니다. (연동시 아두이노 시리얼 모니터는 닫아줍니다)
아두이노 코드
-------------------------------------------------------------------------
int pot = A0; // 아날로그 핀 설정
void setup()
{
Serial.begin(9600); //시리얼 통신을 시작한다.(기본 통신속도 9600)
}
void loop()
{
int val = map(analogRead(pot),0,1023,0,255);
//아날로그 입력값(A0)를 읽기 위해 analogRead 를 사용하고,
//읽어들인 값을 변수 val에 전달한다.
//map함수는 지난시간에 analogRead값을 4로 나누어 아날로그 입력값(0~1023)과
//아날로그 출력값(0~255)의 범위를 맞춰주는 것과 같은 역할을 한다.
Serial.println(val); // 값을 시리얼 모니터에 출력해준다.
delay(70); //아두이노와 프로세싱이 연동되는 속도가 50이므로
//이보다 빠르게 하면 작동을 하지 않으므로반드시 50이상으로 할 것
}
프로세싱 코드
--------------------------------------------------------------------
import processing.serial.*; // 시리얼통신을 위해 프로세싱의 라이브러리를 불러온다.
Serial port;
float brightness=0; // 가변저항 값을 저장하는 변수 선언(실수형 float 변수)
void setup()
{
size(800,500);
port=new Serial(this,"COM4", 9600); //시리얼 통신을 위한 객체 생성
//(각자 연결된 포트넘버를 쓰세요)
port.bufferUntil('\n'); //줄바꿈('\n')이 나오기 전 까지 시리얼 통신 유지
}
void draw()
{
fill(brightness,100,0); //가변저항에 의한 값을 R 값으로 하는 rect
rect(100,100,250,250);
fill(0,brightness,100);//가변저항에 의한 값을 G값으로 하는 rect
rect(450,100,250,250);
}
void serialEvent(Serial port) //아두이노로 부터 값(데이터)가 들어올때마다 수행되는 함수
{
brightness=float(port.readStringUntil('\n')); //줄바꿈 전까지 데이터 읽음
println(brightness); //아두이노로 부터 받은 가변저항에 의한 값을
//프로세싱 하단 창에 출력
}
---------------------------------------------------------------------------------------------
구동테스트를 하여 촬영을 했으니 참고로 하세요.
가변저항을 돌림에 따라 변하는 사각형의 색상
아두이노로 부터 프로세싱으로 가변저항에 의한 값을 받아 창에 출력하기