소개
아두이노와 프로세싱을 활용하면 센서에서 데이터를 받아 컴퓨터 화면에 시각적으로 표현할 수 있습니다. 이 글에서는 조도 센서(LM393)를 사용하여 측정한 데이터를 컴퓨터 화면의 색으로 나타내는 방법을 쉽게 설명합니다.
동영상 서비스가 종료되어 해당 콘텐츠를 재생할 수 없습니다.
아두이노와 프로세싱이란?
1. 아두이노(Arduino): 센서를 이용해 데이터를 수집하고, 다양한 장치를 제어할 수 있는 작은 컴퓨터입니다.
2. 프로세싱(Processing): 데이터를 그래픽으로 표현하는 프로그래밍 언어입니다. 아두이노에서 보낸 데이터를 화면에 시각적으로 보여주는 데 유용합니다.
이 코드의 작동 방식:
아두이노에서 조도 센서(LM393)로 조도 데이터를 읽고 프로세싱에 전송한 다음 프로세싱이 조도에 따라 색상으로 나타냅니다.
소스코드
1. 아두이노
int val; // 프로세싱에서 보내는 시리얼 포트 값을 저장하기 위한 변수
const int sensorPin = A0; // LM393 센서가 연결된 아날로그 핀
void setup() {
Serial.begin(9600); // 9600bps로 컴퓨터와 시리얼 통신 시작
}
void loop() {
val = analogRead(sensorPin) / 4; // 아날로그 핀의 값을 읽고 0~255 범위로 변환
Serial.write(val); // 프로세싱으로 val의 값을 보냄
delay(100); // 0.1초 동안 스케치를 멈추고 응답을 기다린다.
}
2. 프로세싱
import processing.serial.*; // 라이브러리에서 Serial 라이브러리를 선택해 준다.
Serial port; // Serial 의 변수 선언
int val;
void setup(){
size(800, 800); // 화면 크기를 800x800으로 설정
noStroke();
colorMode(HSB, 255); // 색상 모드를 HSB로 설정
printArray(Serial.list()); // 아두이노가 연결된 포트 번호 출력하기
String portName = Serial.list()[0]; // 아두이노 포트 이름을 문자열 변수에 저장하기, 첫번째 ([0]) 포트가 아닌 여러 포트중 다른 포트를 사용하려면 [ ] 안의 숫자를 바꾸면 된다.
port = new Serial(this, portName, 9600); // 연결되어있는 포트를 같은 속도(9600bps)로 열기
}
void draw(){
if (port.available() > 0) { // 만약 데이터를 읽을 수 있다면 (0이거나 0보다 작다면 데이터를 읽을 수 없는 상태)
val = port.read(); // 아두이노의 데이터를 읽고 val에 저장
}
background(204);
fill(val, 255, 255); // HSB 모드에서 색상을 설정
rect(0, 0, width, height); // 사각형을 화면 전체 크기로 그린다.
println(val); // val 값 확인
}