Мигание встроенным светодиодом Raspberry Pi Pico 2
Когда вы начинаете работать с embedded-программированием, первая периферия, с которой вы столкнётесь, — GPIO. «General-Purpose Input/Output» (ввод-вывод общего назначения) означает именно то, что написано: вывод можно использовать и для входа, и для выхода. Как выход Pico может посылать сигналы для управления компонентами, например светодиодами. Как вход компоненты, например кнопки, могут посылать сигналы Pico.
В этом упражнении мы будем управлять встроенным светодиодом, посылая ему сигналы. Если посмотреть на 8-ю страницу даташита Pico 2, видно, что встроенный светодиод подключён к GPIO 25.
Настроим вывод GPIO 25 как выход и зададим его начальное состояние в низкий уровень (выключено):
#![allow(unused)]
fn main() {
let mut led = Output::new(peripherals.PIN_25, Level::Low);
}
Большинство редакторов кода, например VS Code, имеют горячие клавиши для автоматического добавления импортов. Если в вашем редакторе такой функции нет или возникли проблемы, импорты можно добавить вручную:
#![allow(unused)]
fn main() {
use embassy_rp::gpio::{Level, Output};
}
Логика мигания
Теперь создадим простой цикл, который заставит светодиод мигать. Сначала включаем светодиод, вызывая функцию set_high() у нашего экземпляра GPIO. Затем добавляем короткую задержку с помощью Timer. Далее выключаем светодиод с помощью set_low() и добавляем ещё одну задержку. Так и создаётся эффект мигания.
Подключим Timer в проект:
#![allow(unused)]
fn main() {
use embassy_time::Timer;
}
Вот цикл мигания:
#![allow(unused)]
fn main() {
loop {
led.set_high();
Timer::after_millis(250).await;
led.set_low();
Timer::after_millis(250).await;
}
}