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

Мигание встроенным светодиодом 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;
}
}