Работа с ADC

Для оцифровки аналоговых значений у nRF52 есть SAADC (ADC). Самое время его изучить.

С SAADC могут работать только пины с A0 по A3.

В проект добавьте модули gpio и saadc в импорт crabik_board::hal. Напишите следующий код:


#![allow(unused)]
fn main() {
// Разделение GPIO на отдельные пины
let port0 = gpio::p0::Parts::new(periph.P0);
// Макрос который переименовывает пины микроконтроллера в названия пинов на плате
let pins = crabik_board::rename_pins!(port0);

// Подготовка пинов
let mut an_in = pins.a0.into_floating_input();

// Подготовка к работе SAADC
let mut adc = saadc::Saadc::new(periph.SAADC, saadc::SaadcConfig::default());

// Измеряет напряжение с длительностью указанной в конфигурации SAADC, по умолчанию это 20 микросекунд
let value = adc.read(&mut an_in).expect("Не удалось считать напряжение с пина");
}

В показанном выше примере мы настраиваем пины и сам SAADC. После настройки SAADC, производим измерение напряжения на пине A0.