Raspberry Pi Pico로 버저를 사용하여 음악을 재생하는 방법
저렴한 피에조 버저를 사용하면 알람을 설정하거나 전체 곡을 재생할 수 있습니다.
방향을 잃었을 때 경고음이 울리는 게임을 만들거나, 잠에서 깨워주는 알람 시계를 만들거나, 8비트 음악을 재생하는 귀여운 디스플레이를 만들거나 관계없이 저렴한 피에조 부저가 Raspberry Pi Pico의 중요한 부분이 될 수 있습니다. 프로젝트. 개당 1달러 미만의 가격으로 흔히 찾을 수 있는 매우 저렴한 버저는 MicroPython에서 프로그래밍하기가 매우 간단하며 주파수를 변경하여 음표를 생성할 수도 있습니다.
피에조 부저에는 능동형과 수동형의 두 가지 유형이 있습니다. 액티브 버저는 마이크로컨트롤러 없이 전원에 연결만 하면 소음이 발생하지만 패시브 버저는 그렇지 않습니다. 패시브 버저는 더 나은 범위의 사운드를 제공하기 때문에 이러한 종류의 프로젝트에 선호되지만 테스트에서는 둘 다 작동했습니다.
아래에서는 Raspberry Pi Pico를 피에조 부저에 연결하고 MicroPython에서 프로그래밍하여 짧은 곡을 연주하는 방법을 보여줍니다.
이보다 더 간단할 수는 없습니다. 버저의 접지 핀을 Pico의 GND 핀에 연결하고 양극 버저 핀을 pico의 표준 GPIO 핀(이 경우 GP15)에 연결합니다. 우리의 패시브 버저에는 핀에 음수 또는 양수 라벨이 없으며 Pico 핀 중 하나에 연결하여 작동했습니다.
1. 머신 라이브러리에서 Pin 및 PWM을 가져와서 시작하고 utime 라이브러리에서 절전 모드로 전환합니다.
2.PWM 초기화(펄스 폭 변조라고도 함)을 핀 15에 연결하고 이를 가변 부저에 할당합니다.
3. 부저에 주파수 속성을 할당합니다. 10~12,000 사이의 숫자를 선택해야 합니다. 숫자가 높을수록 소리의 피치가 높아집니다. 500을 시도해 봅시다.
4.Duty_u16 속성 설정부저 개체의1000까지 . 이렇게 하면 부저가 최대한 크게 울립니다. 값이 낮을수록 조용하고 0이면 전혀 소리가 나지 않습니다. 이 버저가 얼마나 조용한지를 고려하면 최대 볼륨은 전혀 크지 않습니다.
5.1초 지연 설정그런 다음의무를 0으로 설정 소리가 멈추도록 말이죠. 이렇게 하지 않으면 프로그램 실행이 완료된 후에도 윙윙거리는 소리가 계속 울립니다.
이 간단한 테스트를 위한 최종 코드는 다음과 같습니다.
다양한 주파수를 사용할 수 있으므로 전체 음표 배열을 만들 수 있습니다. 온라인에는 음표 주파수 목록이 몇 개 있으며 그 중 다수는 Github에 있는 Brett Hagman의 Arduino 톤 라이브러리로 거슬러 올라갑니다. 이 값을 사용하여 코드 초기에 노래를 재생하는 데 사용할 수 있는 목록을 만듭니다.
1.필요한 라이브러리 가져오기그리고핀 15에서 PWM 초기화.
2.Notes라는 사전을 만듭니다.다음 값을 사용합니다.
삼.목록 만들기(일명 배열) 메모 중 당신의 노래를 위해. 문자 P를 사용하여 음악의 일시 정지를 나타냅니다. 각 메모는 따옴표로 묶어야 합니다.
이 유명한 리프에 대한 메모를 공유해 주신 이 스레드의 사람들에게 감사의 말을 전합니다.
4.playtone이라는 함수를 만듭니다.그것은 어떤 주파수라도 받아들이고 최대 볼륨으로 재생합니다.
5.bequiet이라는 함수를 만듭니다.Duty_u16을 0으로 변경하면 부저가 꺼집니다.
6.playsong이라는 함수를 만듭니다.음표 배열을 반복하고 각각을 재생하거나 P가 보이면 일시 중지하는 데 사용할 것입니다.
여기서 무슨 일이 일어나고 있는지 살펴보겠습니다. 먼저 mysong 배열의 모든 값을 반복하는 for 루프를 만듭니다. 값이 P와 같으면 be Quiet이 트리거되고, 그렇지 않으면 플레이톤이 트리거됩니다. playtone에는 숫자로 된 주파수 값이 필요하므로 톤 목록에서 각 음표의 번호를 가져와야 합니다. playtone(mysong[i])만 사용하면 필요한 정수인 주파수 659 대신 문자열 "E5"를 재생하려고 시도하므로 실패합니다.
각 신호음이나 일시 중지에 대해 시스템은 0.3초 동안 절전 상태를 유지합니다. 더 빠른 템포를 원한다면 시간을 낮출 수 있습니다. 더 느린 템포를 원하면 템포를 높이세요.