1. 프로젝트 사용한 보드 종류
아두이노 메가
2. 사용한 개발 프로그램명
프로세싱
3. 사용한 센서 모델명
아두이노 택트 스위치, 초음파 센서
4. 연결한 회로 설명 (또는 이미지)
5. 소스코드 (주석 필수)
import processing.serial.*;
import ddf.minim.spi.*;
import ddf.minim.signals.*;
import ddf.minim.*;
import ddf.minim.analysis.*;
import ddf.minim.ugens.*;
import ddf.minim.effects.*;
Minim minim=new Minim(this);
AudioSample play_a1[6],play_a2[6],play_a3[6]; //40cm
AudioSample play_b2[6],play_b3[6],play_b4[6]; //30
AudioSample play_c3[6],play_c4[6],play_c5[6]; //20
int wait;
int a1[6],a2[6],a3[6]; //40
int b2[6],b3[6],b4[6]; //30
int c3[6],c4[6],c5[6]; //20
int Last_a1[6],Last_a2[6],Last_a3[6]; //40
int Last_b2[6],Last_b3[6],Last_b4[6]; //30
int Last_c3[6],Last_c4[6],Last_c5[6]; //20
Serial myPort;
string mp5[6]={"A_5.mp3","B_5.mp3","C_5.mp3","D_5.mp3","E_5.mp3","F_5.mp3"};
string mp4[6]={"A_4.mp3","B_4.mp3","C_4.mp3","D_4.mp3","E_4.mp3","F_4.mp3"};
string mp3[6]={"A_3.mp3","B_3.mp3","C_3.mp3","D_3.mp3","E_3.mp3","F_3.mp3"};
string mp2[6]={"A_2.mp3","B_2.mp3","C_2.mp3","D_2.mp3","E_2.mp3","F_2.mp3"};
string mp1[6]={"A_1.mp3","B_1.mp3","C_1.mp3","D_1.mp3","E_1.mp3","F_1.mp3"};
void setup(){
println(Serial.list());
myPort=new Serial(this,Serial.list()[0],9600);
for(int i=0;i<6;i++)play_c5[i]=minim.loadSample(mp5[i]);
for(int i=0;i<6;i++)play_c4[i]=minim.loadSample(mp4[i]);
for(int i=0;i<6;i++)play_b4[i]=minim.loadSample(mp4[i]);
for(int i=0;i<6;i++)play_c3[i]=minim.loadSample(mp3[i]);
for(int i=0;i<6;i++)play_b3[i]=minim.loadSample(mp3[i]);
for(int i=0;i<6;i++)play_a3[i]=minim.loadSample(mp3[i]);
for(int i=0;i<6;i++)play_b2[i]=minim.loadSample(mp2[i]);
for(int i=0;i<6;i++)play_a2[i]=minim.loadSample(mp2[i]);
for(int i=0;i<6;i++)play_a1[i]=minim.loadSample(mp1[i]);
for(int i=0;i<6;i++)Last_c5[i]=0; for(int i=0;i<6;i++)Last_c4[i]=0; for(int i=0;i<6;i++)Last_b4[i]=0;
for(int i=0;i<6;i++)Last_c3[i]=0; for(int i=0;i<6;i++)Last_b3[i]=0; for(int i=0;i<6;i++)Last_a3[i]=0;
for(int i=0;i<6;i++)Last_b2[i]=0; for(int i=0;i<6;i++)Last_a2[i]=0; for(int i=0;i<6;i++)Last_a1[i]=0;
}
void draw(){
if(myPort.available()>=1){
if(myPort.read()=='9'){
for(int i=0;i<6;i++)c5[i]=myPort.read(); for(int i=0;i<6;i++)c4[i]=myPort.read(); for(int i=0;i<6;i++)b4[i]=myPort.read();
for(int i=0;i<6;i++)c3[i]=myPort.read(); for(int i=0;i<6;i++)b3[i]=myPort.read(); for(int i=0;i<6;i++)a3[i]=myPort.read();
for(int i=0;i<6;i++)b2[i]=myPort.read(); for(int i=0;i<6;i++)a2[i]=myPort.read(); for(int i=0;i<6;i++)a1[i]=myPort.read();
}
}
background(255);
for(int i=0;i<6;i++){ print(c5[i]); print(" "); }
for(int i=0;i<6;i++){ print(c4[i]); print(" "); }
for(int i=0;i<6;i++){ print(b4[i]); print(" "); }
for(int i=0;i<6;i++){ print(c3[i]); print(" "); }
for(int i=0;i<6;i++){ print(b3[i]); print(" "); }
for(int i=0;i<6;i++){ print(a3[i]); print(" "); }
for(int i=0;i<6;i++){ print(b2[i]); print(" "); }
for(int i=0;i<6;i++){ print(a2[i]); print(" "); }
for(int i=0;i<6;i++){ print(a1[i]); print(" "); }
for(int i=0;i<6;i++){ if(c5[i]){ if(!Last_c5[i])play_c5[i].trigger(); } Last_c5[i]=c5[i]; }
for(int i=0;i<6;i++){ if(c4[i]){ if(!Last_c4[i])play_c4[i].trigger(); } Last_c4[i]=c4[i]; }
for(int i=0;i<6;i++){ if(b4[i]){ if(!Last_b4[i])play_b4[i].trigger(); } Last_b4[i]=b4[i]; }
for(int i=0;i<6;i++){ if(c3[i]){ if(!Last_c3[i])play_c3[i].trigger(); } Last_c3[i]=c3[i]; }
for(int i=0;i<6;i++){ if(b3[i]){ if(!Last_b3[i])play_b3[i].trigger(); } Last_b3[i]=b3[i]; }
for(int i=0;i<6;i++){ if(a3[i]){ if(!Last_a3[i])play_a3[i].trigger(); } Last_a3[i]=a3[i]; }
for(int i=0;i<6;i++){ if(b2[i]){ if(!Last_b2[i])play_b2[i].trigger(); } Last_b2[i]=b2[i]; }
for(int i=0;i<6;i++){ if(a2[i]){ if(!Last_a2[i])play_a2[i].trigger(); } Last_a2[i]=a2[i]; }
for(int i=0;i<6;i++){ if(a1[i]){ if(!Last_a1[i])play_a1[i].trigger(); } Last_a1[i]=a1[i]; }
6. 문제점 및 에러 내용
프로젝트가 스위치를 누를때 마다 소리가 나는 악기로 만들어 보았습니다.
문제는 프로세싱에서 코드가 길어져서 반응속도가 느려져 배열을 이용해서 다시 짜보았는데 에러가 났습니다. 에러 내용은 ① for문에서 int형 정수는 boolean 값과 대치될 수 없다 ② String[6] mp5 = 에서 6을 다 지우니까 에러가 없어지는데 그이유를 잘 모르겠습니다.
제가 원하는 방향은 프로세싱코드에서 속도를 높이고 싶은데 어떻게 하면 될지 의견을 물어보고 싶습니다.
|