정보나눔

오픈소스하드웨어 프로젝트에 대한 다양한 정보를 나누는 공간입니다.

아두이노와 프로세싱 통신을 하여 음악재생을 하고싶습니다.
오박사 | 2015-07-30

안녕하세요 우연히 구글 검색중 알게되어 많이 배워가는 아두이노 초심자입니다..

아두이노 mega로 버튼을 누르면 해당 버튼에 저장된 소리를 내는 '런치패드' 같은 기계를 만드려고하는데

일단 프로젝트에 있는 종이 피아노 게시글을 보고 따라해보았습니다.

 

스케치

#include <CapacitiveSensor.h>

//CapacitiveSensor라이브러리를 사용하여 좌표값을 지정하여 객체생성
CapacitiveSensor   cs_2_3 = CapacitiveSensor(2,3);       
CapacitiveSensor   cs_2_4 = CapacitiveSensor(2,4);       
CapacitiveSensor   cs_2_5 = CapacitiveSensor(2,5);       


int Do;
int Re;
int Mi;


byte ch = '9';

void setup()                   
{
   cs_2_4.set_CS_AutocaL_Millis(0xFFFFFFFF);
   Serial.begin(9600);
}

void loop()                   
{
    //손가락이 접촉되었을때 값을 측정. 접촉이 없을 경우 0을 반환하고 접촉이 있을 경우 0보다 큰값을 반환한다
    long total1 =  cs_2_3.capacitiveSensor(30);
    long total2 =  cs_2_4.capacitiveSensor(30);
    long total3 =  cs_2_5.capacitiveSensor(30);
 
    //각 건반마다 특정값 이상으로 출력될 경우 그 건반 상태를 1로 변경(신체와 접촉 상태)
    //접촉이 없을 경우 건반 상태를 0으로 변경
    if(total1 > 20)  Do = 1;
    else             Do = 0;
   
    if(total2 > 20)  Re = 1;
    else             Re = 0;
   
    if(total3 > 20)  Mi = 1;
    else             Mi = 0;
   
    //시리얼 통신을 통해 프로세싱으로 전송
    Serial.write(ch);
    Serial.write(Do);
    Serial.write(Re);
    Serial.write(Mi);
   
    delay(15);  //안정성을 위해 지연시간을 준다
}

 

프로세싱

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 playDo;
AudioSample playRe;
AudioSample playMi;

int wait;

int Do;
int Re;
int Mi;


Serial myPort;

void setup(){
  println(Serial.list());
  myPort = new Serial(this, Serial.list()[0],9600);
  playDo = minim.loadSample("DO.mp3");
  playRe = minim.loadSample("RE.mp3");
  playMi = minim.loadSample("ME.mp3");
 
 

}

void draw(){
 
  if(myPort.available() >=1) {     
    if(myPort.read() == '9') {
      Do = myPort.read();
      Re = myPort.read();
      Mi = myPort.read();
  
    
    }
  }

  background(255);
  print(Do);
  print(" ");

  print(Re);
  print(" ");
 
  print(Mi);
  print(" ");

  if(Do > 0)
    playDo.trigger();
  if(Re > 0)
    playRe.trigger();
  if(Mi > 0)
    playMi.trigger(); 
 
}

 

일단 3개의 음만 재생되도록 했는데 컴파일이 제대로 되는것을 보아 코드자체는 문제가 없는(?)듯 한데요

회로도 잘 만든것 같습니다. 그런데 눌러도 반응이 없네요

 

아 또 프로세싱 컴파일을 하면

COM4
==== JavaSound Minim Error ====
==== Don't know the ID3 code WXXX

==== JavaSound Minim Error ====
==== Don't know the ID3 code PRIV

==== JavaSound Minim Error ====
==== Don't know the ID3 code PRIV

==== JavaSound Minim Error ====
==== Don't know the ID3 code TOPE

==== JavaSound Minim Error ====
==== Don't know the ID3 code WXXX

==== JavaSound Minim Error ====
==== Don't know the ID3 code TOPE

==== JavaSound Minim Error ====
==== Don't know the ID3 code WXXX

==== JavaSound Minim Error ====
==== Don't know the ID3 code TOPE

이런 오류가 뜨고 시작합니다.

 

도와주세요!!

 

이전글   |    아두이노 MPU6050센서 이용 질문 2015-07-30
다음글   |    블루투스를 이용해서 안드로이드로 센서값 전송을 실습하려고 합니다.... 2015-07-31