프로세싱 설치 필요
2022.08.30 - [Arduino] - 프로세싱 설치 (Install Processing)
스케치
총 2개 필요 = 아두이노 동작 스케치 + PC 동작 프로세싱 IDE 스케치
아두이노 동작 스케치 = 영점 조정 값설정, 주기적 색 감지, RGB 갑스올 바꾸고 시리얼 통신 통해 PC 전달
PC 동작 프로세싱 IDE 스케치 = 전달받은 데이터에서 3개 정수 값 분리해 실행 창 배경색으로 설정
아두이노 스케치
/*
TCS230 Color Sensing
색 감지 & PC 전달 & Processing 스케치 배경색 예제
Calibrate 스케치로 얻어낸 영점 조정 데이터 사용 = 먼저 Calibrate 스케치 실행
*/
#include <MD_TCS230.h>
#include <FreqCount.h>
// 연결된 핀 번호들: S0_OUT <-> 8, S1_OUT <-> 9
#define S2_OUT 12
#define S3_OUT 11
#define LED 13 // HIGH = ENABLED
// TCS230 객체인 CS 사용 핀 선언
MD_TCS230 CS(S2_OUT, S3_OUT, /* S0_OUT, S1_OUT, */ LED);
// Calibrate 스케치 실행 얻은 영점 조정 데이터.
// TCS3200 컬러 감지 센서 1 게시물에서 나온 본인 결과값 적어야함.
sensorData sdBlack = { 40, 50, 50 };
sensorData sdWhite = { 2640, 1370, 1980 };
// 전역 변수들:
colorData rgb;
void setup()
{
// 시리얼 포트 초기화
Serial.begin(115200);
// 컬러 센서 초기화 begin()
// 영점 조정 위한 검정색, 흰색 값 설정
CS.begin();
CS.setDarkCal(&sdBlack);
CS.setWhiteCal(&sdWhite);
}
void loop()
{
// 색 감지, RGB 값 읽기
CS.read();
// 읽을 데이터 준비 때까지 기다림
while(!CS.available()) ;
// RGB 데이터 값 읽기
CS.getRGB(&rgb);
// 쉼표 분리된 값 출력
Serial.print(rgb.value[TCS230_RGB_R]);
Serial.print(",");
Serial.print(rgb.value[TCS230_RGB_G]);
Serial.print(",");
Serial.println(rgb.value[TCS230_RGB_B]);
delay(100);
}
프로세싱 스케치
import processing.serial.*;
int redValue = 0; // Red 컬러 값
int greenValue = 0; // Green 컬러 값
int blueValue = 0; // Blue 컬러 값
Serial myPort;
void setup() {
size(200, 200);
// 사용 가능 모든 시리얼 포트 출력
println(Serial.list());
// PC 두번째 시리얼 포트가 아두이노와 연결된 시리얼 포트라 Serial.list()[2] 사용
// 다른 포트를 사용 시 그 포트 숫자 작성
myPort = new Serial(this, Serial.list()[6], 115200);
// '\n' 받을 때까지 serialEvent() 발생 X
myPort.bufferUntil('\n');
}
void draw() {
// 아두이노 RGB 데이터 배경색 설정
background(redValue, greenValue, blueValue);
}
void serialEvent(Serial myPort) {
// 시리얼 포트 ~ 새 줄문자 = inString 문자열 받음
String inString = myPort.readStringUntil('\n');
if (inString != null) {
// 문자열 있다면 앞 뒤 공백 문자 삭제
inString = trim(inString);
// 쉼표 분리 integer 값 만듦
int[] colors = int(split(inString, ","));
// 3개의 값 받으면 RGB 모든 값 받아 들인 것
// 각 redValue, greenValue, blueValue 넣고 콘솔 출력
if (colors.length >=3) {
redValue = colors[0];
greenValue = colors[1];
blueValue = colors[2];
System.out.println(String.format("RGB(%d, %d, %d)", redValue, greenValue, blueValue));
}
}
}
+) [ ] 안에 들어가야 할 숫자
아두이노와 연결된 포트 = COM6
COM6 = 위에서부터 2번째에 있음
[ ] 안에 2가 들어가면 됨
아두이노 업로드 → 프로세싱 업로드
결과
'Arduino' 카테고리의 다른 글
프로세싱 설치 (Install Processing) (1) | 2022.08.30 |
---|---|
TCS3200 컬러 감지 센서 1 (0) | 2022.08.29 |
로터리형 엔코더 모듈 (Encoder Sensor) (0) | 2022.08.29 |
피에조 부저 (0) | 2022.08.19 |
리드 스위치 모듈 KY-025 (Dry Reed Switch Sensor) (0) | 2022.08.19 |