테크 지식
[커뮤니티] 프로세싱 응용 - 아두이노 저항 값 입력 받기
프로세싱 응용 아두이노 저항 값 입력 받기
아두이노에 가변저항을 연결하고, 프로세싱으로 아두이노에서 가변저항 값을 입력 받아서 슬라이드로 표시해보자.
라이브러리 연동
프로세싱으로 아두이노를 제어하기 위해서는 라이브러리 연동이 필요로하다. 위의 링크를 참조하여 미리 라이브러리를 설정한다.
회로도
회로 배선
가변저항이 +에는 5V, -는 GND, 마지막 하나는 PIN A0에 연결한다.
소스코드
import processing.serial.*; import cc.arduino.*; Arduino arduino; float Pos = 0; void setup() { size(400,200); background(0); println(Arduino.list()); arduino = new Arduino(this,Arduino.list()[0], 57600); stroke(255); strokeWeight(5); } void draw() { background(0); Pos = map(arduino.analogRead(0), 0, 1023, 0, 400); // Pos에 저항 값을 0~400 사이의 값으로 변환하여 저장 if(Pos<0) Pos = 0; // 0보다 작아지면 0으로 if(Pos>400) Pos = 400; // 400보다 커지면 400으로 line(0,100, Pos, 100); // 선 긋기 ellipse(Pos, 100, 20, 20); // 원 그리기 }
테스트 결과
테스트 결과 창
가변 저항의 값에 따라서 프로세싱에서 드래그 바가 길어지고 짧아 지는 것을 확인 할 수 있다. 그럼 이 것을 조금 더 응용해서 기존 벽돌깨기 게임에다가 합쳐보자
벽돌깨기 게임이랑 합치기
아두이노는 그대로 유지 한 상태로, 프로세싱 벽돌깨기 게임에서의 소스코드 일부분을 수정하여 아두이노에서 값을 가져오도록 변경하면 끝난다. 프로세싱 벽돌깨기 게임은 아래의 링크를 참조하면 된다.
수정해야되는 소스코드
// 최상단에 추가 import processing.serial.*; import cc.arduino.*; Arduino arduino; // 상단 수정 int padX, padWidth; // ↓ 수정 ↓ // int padWidth; float padX = 0; // setup 추가 println(Arduino.list()); arduino = new Arduino(this,Arduino.list()[0], 57600); // draw 수정 padX=mouseX; // ↓ 수정 ↓ // padX = map(arduino.analogRead(0), 0, 1023, 0, 400); if(padX > 300) padX = 300;
기존 작성되어있는 코드에서 아두이노와 시리얼 통신 하는 부분을 추가하고, 마우스로 제어하는 부분을 가변저항의 값을 받아서 변환하는 것으로 수정하면 끝난다. 잘 되는지 직접 해보길 바란다.
소스코드에 정답은 없다. 다양한 생각이 있듯 다양한 방법이 있고, 그 중 하나일 뿐이다.