Справочник UniDev
Класс для управления датчиками, адресными светодиодами (Световое кольцо) и другой периферией.
Определения портов
Значки у каждого порта показывают доступные возможности: аналоговый вход (ADC), цифровой ввод/вывод (DIG) и сервопривод/ШИМ (PWM). Ниже — назначение по умолчанию.
Кратко:
- Аналоговые датчики (
analogSensor,lineSensor): только P1–P4 и P7. На P5, P6, P8 АЦП нет — чтение вернет мусор. - Цифровой ввод/вывод (
digitalSensor, кнопка): любой порт P1–P8. - Серво / ШИМ (
servo): P1–P7. P8 технически умеет ШИМ, но занят светодиодным кольцом — использовать не стоит. - P7 — самый универсальный порт: единственный аналоговый на ADC1 (не конфликтует с Wi-Fi), без особенностей при загрузке.
Подробнее об аппаратных нюансах отдельных пинов (strapping-пины, конфликт ADC2 с Wi-Fi) см. страницу Ограничения.
Инициализация
Инициализирует экземпляр UniDev, создавая объект NeoPixel и настраивая режимы пинов. Эту функцию вызывать не обязательно, так как она вызывается автоматически при создании объекта UniDev.
Пример
UniDev module;
void setup() {
module.begin();
}
Датчики
Считывает расстояние с ультразвукового датчика (HC-SR04).
Параметры
trig: Trigger пин (P1-P8)echo: Echo пин (P1-P8)
Возвращает
Расстояние в миллиметрах.
Пример
int dist = module.ultraSonic(P6, P7);
if (dist < 100) {
// Препятствие обнаружено
}
Считывает аналоговое значение с датчика линии.
Параметры
port: Определение порта сенсора (P1-P8).
Возвращает
Аналоговое значение (0-4095).
Пример
int val = module.lineSensor(P3);
Считывает цифровое значение с порта.
Параметры
port: Определение порта (P1-P8).
Возвращает
0 (LOW) или 1 (HIGH).
Пример
if (module.digitalSensor(P5) == 1) {
// Датчик активен
}
Считывает общее аналоговое значение с порта.
Параметры
port: Определение порта (P1-P8).
Возвращает
Аналоговое значение (0-4095).
Пример
int lightLevel = module.analogSensor(P4);
Возвращает текущий настроенный режим GPIO пина.
Возвращает
OUTPUT, INPUT, INPUT_PULLUP,
INPUT_PULLDOWN, или -1 при ошибке.
Пример
int mode = module.getPinMode(P2);
Входы
Блокирующая функция, останавливающая выполнение программы до тех пор, пока кнопка не будет нажата и отпущена.
Параметры
port: Порт, к которому подключена кнопка (например,P5).
Пример
// Ждать нажатия кнопки
module.waitButton(P5);
Проверяет, нажата ли кнопка в данный момент.
Возвращает
true если нажата, false в противном случае.
Пример
if (module.getButtonState(P5)) {
Serial.println("Button Pressed!");
}
Сервопривод
Устанавливает угол сервопривода, подключённого к указанному порту.
Параметры
port: Порт, к которому подключён сервопривод (например,P1).angle: Угол поворота в градусах (0–180).
Пример
module.servo(P3, 0); // Начальное положение
module.servo(P3, 90); // Среднее положение
module.servo(P3, 180); // Конечное положение
Подключает сервопривод к порту и резервирует PWM-канал без задания угла. Опциональный вызов — servo() подключает автоматически при первом обращении. Используется, когда нужно занять канал заранее.
Параметры
port: Порт, к которому подключён сервопривод (например,P3).
Пример
module.servoAttach(P3); // Резервируем PWM-канал заранее
module.servo(P3, 90); // Затем используем
Отключает сервопривод: PWM-импульсы прекращаются, привод расслабляется и не держит нагрузку. Используется для защиты от поломки, когда механизм упирается или удерживает груз. Следующий вызов servo() снова включит его автоматически.
Параметры
port: Порт, к которому подключён сервопривод (например,P3).
Пример
module.servo(P3, 90); // Устанавливаем угол
delay(1000);
module.servoDetach(P3); // Отключаем — привод обмякает
Световое кольцо (Базовое)
Устанавливает цвет одного пикселя.
Параметры
index: Индекс светодиода (0-23).r, g, b: Компоненты цвета (0-255).
Пример
// Установить 1-й светодиод в Синий
module.pixel(0, 0, 0, 255);
Устанавливает все светодиоды кольца в указанный RGB цвет.
Пример
module.pixelsAll(255, 0, 0); // Все Красные
Выключает все светодиоды.
Пример
module.pixelsClear();
Отправляет текущий буфер на светодиодную ленту.
Пример
module.pixelsShow();
Устанавливает глобальное масштабирование яркости.
Параметры
brightness: от 0 до 100.
Пример
module.pixelsBrightness(50); // Приглушить светодиоды
Световое кольцо (Эффекты)
Это блокирующие анимации.
Отображает вращающуюся радугу.
Параметры
speed: Скорость вращения (0-100). Большие значения означают более быстрое вращение.duration: Общая длительность анимации в миллисекундах.
Пример
module.pixelsRainbow(50, 2000); // 2 секунды
Эффект бегущего огня: один пиксель пробегает по кругу один раз.
Параметры
r, g, b: Цвет бегущего пикселя (0-255).duration: Время в миллисекундах для завершения одного полного круга.
Пример
module.pixelsRunning(255, 0, 0, 1000); // Красный пиксель пробегает круг за 1с
Плавно меняет яркость светодиодов (эффект дыхания).
Параметры
r, g, b: Целевой цвет при максимальной яркости (0-255).duration: Общая длительность одного цикла дыхания (возрастание + затухание) в миллисекундах.
Пример
module.pixelsBreathing(0, 0, 255, 3000); // Синее дыхание в течение 3с
Постепенно заполняет кольцо цветом, затем постепенно очищает его.
Параметры
r, g, b: Цвет заполнения (0-255).duration: Общая длительность последовательности заполнения и очистки в миллисекундах.
Пример
module.pixelsFill(0, 255, 0, 1000); // Зеленое заполнение+очистка за 1с
Случайным образом мигает отдельными пикселями.
Параметры
r, g, b: Цвет вспышек (0-255).duration: Общая длительность эффекта в миллисекундах.count: Количество вспышек за указанную длительность.
Пример
module.pixelsSparkle(255, 255, 255, 2000, 20); // 20 белых вспышек за 2с
Вращает сегмент зажженных светодиодов вокруг кольца несколько раз.
Параметры
r, g, b: Цвет сегмента (0-255).duration: Общая длительность ВСЕХ вращений в миллисекундах.segmentLength: Количество светодиодов во вращающемся сегменте (например, 5).rotations: Количество полных оборотов на 360 градусов.
Пример
// Вращать сегмент из 5 красных светодиодов 3 раза за 2 секунды
module.pixelsRotating(255, 0, 0, 2000, 5, 3);
Анимация спиннера, зажигающая по одному пикселю, пока кольцо не заполнится, затем перезапускается.
Параметры
r, g, b: Цвет спиннера (0-255).duration: Время в миллисекундах для одного полного оборота.
Пример
module.pixelsSpinner(255, 255, 0, 1000);
Светофор
Устанавливает состояние модуля светофора.
Параметры
color:TRAFFIC_RED,TRAFFIC_YELLOW,TRAFFIC_GREEN, илиTRAFFIC_OFF.
Пример
module.setTrafficLight(TRAFFIC_GREEN);
Запускает стандартную последовательность светофора (Зеленый -> Желтый -> Красный -> Желтый -> Зеленый).
Пример
module.trafficLightSequence();