버튼과 부저를 사용하여 멜로디를 반복해서 재생하는 아두이노 프로젝트를 만들어보겠습니다. 이 프로젝트에서는 버튼을 누르면 부저를 통해 미리 정의한 멜로디가 반복 재생됩니다.
1. 이론 소개:
- 이 프로젝트에서는 버튼을 누를 때마다 아두이노 코드에서 정의한 멜로디를 부저를 통해 연주합니다.
2. 준비물:
- 아두이노 보드 (예: Arduino Uno)
- 부저 (피에조 부저)
- 버튼
- 브레드보드
- 10k 옴 저항 (버튼 풀다운용)
- 점퍼 와이어 (메스-메스 및 메스-피스)
- USB 케이블 (아두이노 보드와 컴퓨터 연결용)
3. 비슷한 모델:
- 다양한 종류의 부저와 버튼을 사용할 수 있습니다.
4. 추천 보드 및 간단한 설명:
- Arduino Uno: 초보자 및 중급자에게 적합한 아두이노 보드로 다양한 라이브러리와 예제가 있습니다.
5. 회로 구성 (상세 설명):
- 회로를 구성하기 위해 다음 단계를 따르세요:
- 버튼을 브레드보드에 연결합니다. 버튼의 한쪽 단자는 아두이노의 디지털 핀 (예: 2번 핀)에 연결하고, 다른 단자는 GND에 연결합니다.
- 10k 옴 저항을 사용하여 버튼을 풀다운합니다. 저항의 한 단자는 아두이노의 디지털 핀과 연결되고, 다른 단자는 GND에 연결합니다.
- 부저의 긴 핀을 아두이노의 디지털 핀 (예: 8번 핀)에 연결하고, 짧은 핀을 GND에 연결합니다.
- 이렇게 연결된 회로를 확인하고 전원을 공급하기 위해 아두이노와 컴퓨터를 연결하세요.
6. 코딩 내용 (주석 포함):
#define BUTTON_PIN 2 // 버튼 핀 설정
#define BUZZER_PIN 8 // 부저 핀 설정
int melody[] = {
NOTE_C4, NOTE_G3, NOTE_G3, NOTE_A3, NOTE_G3, 0, NOTE_B3, NOTE_C4
}; // 멜로디 정의 (노트 주파수)
int noteDuration[] = {
4, 8, 8, 4, 4, 4, 4, 4
}; // 각 음표의 지속 시간 (4분 음표, 8분 음표 등)
int buttonState = 0;
int lastButtonState = 0;
void setup() {
pinMode(BUTTON_PIN, INPUT); // 버튼 핀을 입력 모드로 설정
pinMode(BUZZER_PIN, OUTPUT); // 부저 핀을 출력 모드로 설정
}
void loop() {
buttonState = digitalRead(BUTTON_PIN); // 버튼 상태 읽기
if (buttonState == HIGH && lastButtonState == LOW) {
// 버튼을 누를 때 멜로디 연주
for (int i = 0; i < 8; i++) {
int noteDurationMs = 1000 / noteDuration[i];
tone(BUZZER_PIN, melody[i], noteDurationMs);
int pauseBetweenNotes = noteDurationMs * 1.30;
delay(pauseBetweenNotes);
noTone(BUZZER_PIN);
delay(50);
}
}
lastButtonState = buttonState;
}
7. 코딩 내용 설명:
- 버튼을 누를 때 아두이노에서 정의한 멜로디를 부저를 통해 연주합니다.
8. 코드 업로드 및 테스트:
- 아두이노 보드를 컴퓨터에 연결하고 위의 코드를 아두이노 IDE에 복사하여 업로드합니다.
- 버튼을 누르면 멜로디가 반복 재생되는지 확인합니다.
9. 응용 업그레이드:
- 다양한 멜로디를 정의하거나 버튼을 누를 때 다른 동작을 추가할 수 있습니다.
10. 전문용어 설명:
- 부저 (Buzzer): 소리를 생성하는 디바이스로, 아두이노를 통해 다양한 음향 효과를 생성하는 데 사용됩니다.
11. 기타: - 멜로디와 음표는 코드에서 사용자가 수정할 수 있으며, 다양한 곡을 추가할 수 있습니다.
'아두이노' 카테고리의 다른 글
초음파 센서와 가변 저항기를 사용하여 무선 랜턴 만들기 (0) | 2023.12.01 |
---|---|
조도 센서와 LCD 화면으로 주변 환경 데이터 표시 (0) | 2023.12.01 |
온도 센서와 초음파 센서를 이용한 건물 환경 모니터링 (0) | 2023.12.01 |
가변 저항기와 서보 모터로 모터 각도 제어 (0) | 2023.12.01 |
조도 센서와 LED로 주변 밝기에 따라 LED 색상 변경 (0) | 2023.12.01 |