
Интернет-магазин «Неглупый Дом»
Пока шаговый двигатель 28BYJ-48 непрерывно крутит диск, закреплённый на нём RGB-светодиод меняет цвет синхронно с текущим углом поворота — на скорости глаз видит вращающееся цветное кольцо.
Название POV расшифровывается как «persistence of vision» (инерция зрительного восприятия) — глаз и мозг на короткое время сохраняют яркое изображение, даже когда реальный источник света уже сдвинулся. Если быстро вращать одну точку света по кругу и менять её цвет синхронно с углом поворота, то вместо одной мигающей точки мозг воспринимает целое плавное кольцо градиента цвета — никакого реального "диска" или "экрана" физически не существует, это оптическая иллюзия от скорости вращения.
Код отслеживает `currentStep` — текущее положение в пределах одного полного оборота (от 0 до `stepsPerRevolution`), переводит его в угол через `map()`, и на основе этого угла вычисляет яркость красного и зелёного каналов светодиода: чем дальше от начала оборота, тем ярче один цвет и тем темнее другой, создавая плавный переход по кольцу.
Так как реализации данного модуля бывают разные, если у вас на плате нет тех контактов, что указаны ниже — сориентируйтесь по названиям контактов на своей плате.
// ВНИМАНИЕ: рекомендую отладить код через монитор порта, так как я языковая
// модель, а не специализированный кодер, и могу что-то упустить. Основу
// и идею я накидал, но проверьте под свою схему.
#include <Stepper.h>
const int stepsPerRevolution = 2048; // полных шагов на оборот для 28BYJ-48 с редуктором
Stepper myStepper(stepsPerRevolution, 8, 10, 9, 11);
const int redPin = 5;
const int greenPin = 6;
long currentStep = 0;
void setup() {
Serial.begin(9600);
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
myStepper.setSpeed(15); // об/мин — на низкой скорости эффект POV будет слабее
}
void loop() {
myStepper.step(1);
currentStep = (currentStep + 1) % stepsPerRevolution;
int angle = map(currentStep, 0, stepsPerRevolution, 0, 255);
analogWrite(redPin, angle);
analogWrite(greenPin, 255 - angle);
}
Для реального провода к вращающемуся диску нужны контактные кольца (slip ring) или гибкий тонкий провод с запасом хода — иначе он быстро перекрутится и оборвётся.
Ещё модули для Arduino: Электронные модули.
🎁 Купить весь комплект со скидкой 10%
Все 2 товара сразу в корзину: 269 ₽ 242 ₽ (экономия 27 ₽)
Скидка применяется автоматически при оформлении заказа, если в корзине именно этот комплект.
Остались вопросы? Проконсультируйтесь с ИИ-инженером — он уже в курсе темы статьи и сразу ответит, ничего вводить не нужно.