Skip to content

Latest commit

 

History

History
77 lines (48 loc) · 1.89 KB

File metadata and controls

77 lines (48 loc) · 1.89 KB

📌 스피커

아날로그 출력

analogWrite()

✔ 스피커 출력 (라이브러리 "pitches.h")

  • PWM 신호를 사용해 단음 재생

    • 50% duty cycle

    • analogWrite는 duty cycle은 조절 가능 BUT, 주파수는 고정 -> tone함수

  • tone(핀, 주파수, 지속시간)

    • 한번에 한 음

    • 다른 핀을 통해 이미 재생 중이라면 호출해도 소용X

    • 동일한 핀을 통해 다시 호출하면 새로운 톤 재생

      image

    • 재생 시간 지정 가능(3번째 파라미터)

  • noTone(핀)

    • 정지
  • "pitches"라이브러리 설치

    tone함수 주파수 정의 헤더파일 라이브러리 설치!



✔ 연결 방법

image



✔ LAB

  • 멜로디 재생

    #include <pitches.h>
    
    int speakerPin = 57; // 스피커 연결 핀
    int melody[] = { // 학교 종 멜로디, 0은 쉼표
        NOTE_G4, NOTE_G4, NOTE_A4, NOTE_A4, NOTE_G4, NOTE_G4, NOTE_E4, 0, 
        NOTE_G4, NOTE_G4, NOTE_E4, NOTE_E4, NOTE_D4, 0, 
        NOTE_G4, NOTE_G4, NOTE_A4, NOTE_A4, NOTE_G4, NOTE_G4, NOTE_E4, 0, 
        NOTE_G4, NOTE_E4, NOTE_D4, NOTE_E4, NOTE_C4, 0 
    }; 
    int noteDuration = 4; // 4분 음표
    
    void setup() {};
    
    void loop() {
        for (int thisNote = 0; thisNote < sizeof(melody) / sizeof(int); thisNote++) {
            // 음표 길이를 시간으로 변환
            int noteLength = 1000 / noteDuration; 
            
            // 단음 재생 
            tone(speakerPin, melody[thisNote], noteLength); 
            delay(noteLength); 
            noTone(speakerPin); // 현재 음 재생 중지
        } 
        while (true); // 1회 재생 후 대기
    }