Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Воспроизведение песен на пассивном зуммере с помощью Rust и Raspberry Pi Pico

В этом разделе мы будем воспроизводить песни на зуммере с помощью Raspberry Pi Pico.

Если вы не знакомы с нотами и нотным письмом, можно посмотреть краткую теорию. Эта часть необязательна и нужна лишь для того, чтобы дать базовые сведения, необходимые для понимания примера.

Для наглядности код разделён на модули Rust. Всё можно держать и в одном файле, как мы делали до сих пор, но разделение делает пример понятнее:

Для этого упражнения рекомендуется пассивный зуммер, хотя подойдёт и пассивный, и активный.

ШИМ

Мы используем ШИМ, чтобы управлять частотой сигнала, отправляемого на зуммер. Каждая частота соответствует музыкальной ноте. Частота (нота) удерживается заданное время, а затем происходит переход к следующей ноте согласно музыкальным данным.

Например, нота a4 — это 440 Гц. Чтобы её сыграть, мы настраиваем выход ШИМ на 440 Гц и держим его включённым нужное время, прежде чем перейти к следующей ноте.

Если вы не знакомы с ШИМ на Pico, рекомендую прочитать раздел о ШИМ, прежде чем продолжать.

Репозиторий песен

В этом упражнении в качестве демонстрации мы сыграем на зуммере музыкальную тему.

Также можно посмотреть репозиторий rust-embedded-songs и попробовать другие песни:

https://github.com/ImplFerris/rust-embedded-songs/

Подмодули

Обновите main.rs, объявив подмодули, а затем создайте соответствующие исходные файлы.

#![allow(unused)]
fn main() {
pub mod music;
pub mod got;
}