banner
뉴스 센터
정말로 놀라운 경험을 위해 당사의 다양한 세계적 수준의 제품과 서비스 중에서 선택하십시오.

Raspberry Pi Pico로 버저를 사용하여 음악을 재생하는 방법

Jul 13, 2023

저렴한 피에조 버저를 사용하면 알람을 설정하거나 전체 곡을 재생할 수 있습니다.

방향을 잃었을 때 경고음이 울리는 게임을 만들거나, 잠에서 깨워주는 알람 시계를 만들거나, 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초 동안 절전 상태를 유지합니다. 더 빠른 템포를 원한다면 시간을 낮출 수 있습니다. 더 느린 템포를 원하면 템포를 높이세요.