코코아팹은 누구나 창의적 아이디어를 현실로 만들어 낼 수 있도록
만들고, 공유하고, 배울 수 있는 터전이
되고자 합니다.
아이디와 비밀번호를 잊으셨나요?아이디 / 비밀번호 찾기
코코아팹 회원이 아니신가요? 회원가입
아두이노 테레민 만드는데 음량과 반응이 너무느립니다 (소스첨부)
아두아두 | 2017-10-25
|
|
---|---|
int trigDigitalPin = 13; //초음파센서의 trig pin 번호 int echoDigitalPin = 12; //초음파센서의 echo pin 번호 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, HIGH); delayMicroseconds(2); digitalWrite(trigDigitalPin, LOW);
// 초음파 센서를 이용하여 거리를 측정한다. duration = pulseIn(echoDigitalPin, HIGH); 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 |