Воспроизведение песен на пассивном зуммере с помощью 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;
}