정보나눔

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

아두이노 테레민 만드는데 음량과 반응이 너무느립니다 (소스첨부)
아두아두 | 2017-10-25

int trigDigitalPin = 13;      //초음파센서의 trig pin 번호

int echoDigitalPin = 12;   //초음파센서의 echo pin 번호
int  trigDigitalPin_right = 11;   //음길이
int  echoDigitalPin_right = 10;

int speakerpin = 3;        //피에조 부저 출력 디지털핀 번호

int note[] = {2093,2349,2637,2794,3136,3520,3951,4186};   //도레미파솔라시도

 

void setup()

{

  Serial.begin (9600);

  pinMode(echoDigitalPin, INPUT);    //echoPin을 입력모드

  pinMode(trigDigitalPin, OUTPUT);  //trigPin을 출력모드

   pinMode(echoDigitalPin_right, INPUT);    //echoPin_righr을 입력모드

  pinMode(trigDigitalPin_right, OUTPUT);  //trigPin_righr을 출력모드
 

  pinMode(speakerpin,OUTPUT);        //피에조부조 출력모드

}

 

void loop()

{

  int dist=0, duration =0, noteIndex = 0;

 

  digitalWrite(trigDigitalPin, LOW);   

  digitalWrite(trigDigitalPin, HIGH);
 
  digitalWrite(trigDigitalPin_right, LOW);   

  digitalWrite(trigDigitalPin_right, HIGH);
 

  delayMicroseconds(2);

  digitalWrite(trigDigitalPin, LOW);
  digitalWrite(trigDigitalPin_right, LOW);


 

  // 초음파 센서를 이용하여 거리를 측정한다.

  duration = pulseIn(echoDigitalPin, HIGH);
   duration = pulseIn(echoDigitalPin_rihgt, HIGH);

 
    int disCnt = 3;
if(duration_right<1000 && duration_right>=700) {delay(100);}
{
else if(duration_right<700 && duration_right>=500) {delay(50);}
else if(duration_right<500 && duration_right>=300) {delay(20);}
else if(duration_right<300) {delay(20);}
}
 

  dist = ( duration/2)/29.1;

    

  // 거리에 따라 음을 연주한다. 

  int distCnt  = 3;          // 연주 간격을 조절하기 위한 변수 선언, 기본 연주 간격  3cm

  if(dist > 0 && dist <= distCnt*1 )

  {

    noteIndex = 0;      // 도

   }

   else if(dist > distCnt*1 && dist <= distCnt*2)

   {

     noteIndex = 1;    // 레

   }

   else if(dist > distCnt*2 && dist <= distCnt*3)

  {

    noteIndex =  2;   // 미

    }

  else if(dist > distCnt*3 && dist <= distCnt*4)

  {

    noteIndex = 3;    // 파

  }

  else if(dist > distCnt*4 && dist <= distCnt*5)

  {

    noteIndex = 4;    // 솔

  }

  else if(dist > distCnt*5 && dist <= distCnt*6)

  {

     noteIndex = 5;   // 라

  }

  else if(dist > distCnt*6 && dist <= distCnt*7)

  {

   noteIndex = 6;   // 시

  }

  else if(dist > distCnt*7 && dist <= distCnt*8)

  {

    noteIndex = 7;  // 도

  }

  else

  {

    noteIndex = 8;

    noTone(speakerpin);

  }

 

  // 거리를 벗어나지 않는 경우만 피에조부저를 울린다.

  if( noteIndex < 8)

  {

     tone(speakerpin, note[noteIndex]);

     delay(200);

  }

}

 

 

 

 

위 소스에서 음량이 너무 작습니다... 그리고 반응속도를 빠르게 하려면 어디를 건드려야 할지 도움 부탁드려요 ㅠ

이전글   |    wifi쉴드랑 mp3쉴드를 2017-10-24
다음글   |    지그비통신 관련 질문합니다! 2017-10-26