코코아팹은 누구나 창의적 아이디어를 현실로 만들어 낼 수 있도록
만들고, 공유하고, 배울 수 있는 터전이
되고자 합니다.
아이디와 비밀번호를 잊으셨나요?아이디 / 비밀번호 찾기
코코아팹 회원이 아니신가요? 회원가입
2014-08-08 16:55:46
출처 : 전자기타 암(arm) - strat-talk.com
전자기타에는 암(arm)이라는 것을 올리고 내림으로써
기타의 장력을 조절하여 음의 높낮이를 조절하는 데요,
아두이노에서 간단한 코드를 통해 소리의 크기와 그 소리의 높낮이를 조절할 수 있습니다.
이 예제에서는 2개의 가변저항과 피에조부저를 이용하여 음을 생성하고 그 음의 높낮이(pitch)를 조절 해 보겠습니다.
NO | 부품명 | 수량 | 상세설명 |
1 | 아두이노 | 1 | 아두이노 |
2 | 피에조 | 1 | 피에조 |
3 | 브레드보드 | 1 | 브레드보드 |
4 | 점퍼 케이블 | 9 | 점퍼 케이블 |
5 | 가변저항 | 2 | 가변저항 |
부품명 | 아두이노 | 브레드보드 | 점퍼케이블 | 가변저항 | 피에조 |
파트 | x1 | x1 | x9 | x2 | x1 |
일반적으로 가운데 부분이 Data 핀과 연결되며
좌우에 각각 Ground 와 5V를 연결해주시면 됩니다.
아래의 코드를 아두이노에 업로드 합니다.
출처 : 아두이노 for 인터랙티브 뮤직
int pitch=0;//음정을 담당합니다.
int amp=0;//음량을 담당합니다.
void setup(){
pinMode(7,OUTPUT);//피에조를 7번핀과 연결하여 출력으로 설정합니다.
}
void loop(){
pitch = 1136 - analogRead(0);
amp = analogRead(1)/10;
digitalWrite(7,1);
delayMicroseconds(amp);
digitalWrite(7,0);
delayMicroseconds(2*pitch-amp);
}
pitch = 1136 - analogRead(0);
아날로그(A0) 입력값에 따라 음의 높낮이(Pitch)는 1136에서 113(1136-1023)까지 변하며 A4부터 C8이상의 음정을 표현할 수 있습니다.
amp = analogRead(1)/10;
아날로그(A1) 의 입력값을 10으로 나누었습니다. 이는 아날로그 입력값에 따라 최대 전압일경우 1:1 의 비율로 최대 출력을 지니며
입력값이 작아짐에 따라 1:5 , 1:10이 되면서 점차 음량이 작아지게 됩니다.
또한 음정 값이 1136부터 113까지 변하는데 이값을 뺏을때 음수가 발생하여 생길수 있는 오류를 방지하기 위한것입니다.
kocoafabeditor
항상 진취적이고, 새로운 것을 추구하는 코코아팹 에디터입니다!