🛒
0 товаров
0 руб.

Интернет-магазин «Неглупый Дом»


🌀 Проект: POV-дисплей на вращающемся шаговом двигателе 28BYJ-48

Шаговый двигатель 28BYJ-48 и RGB-светодиод

Пока шаговый двигатель 28BYJ-48 непрерывно крутит диск, закреплённый на нём RGB-светодиод меняет цвет синхронно с текущим углом поворота — на скорости глаз видит вращающееся цветное кольцо.

Как это работает

Название POV расшифровывается как «persistence of vision» (инерция зрительного восприятия) — глаз и мозг на короткое время сохраняют яркое изображение, даже когда реальный источник света уже сдвинулся. Если быстро вращать одну точку света по кругу и менять её цвет синхронно с углом поворота, то вместо одной мигающей точки мозг воспринимает целое плавное кольцо градиента цвета — никакого реального "диска" или "экрана" физически не существует, это оптическая иллюзия от скорости вращения.

Код отслеживает `currentStep` — текущее положение в пределах одного полного оборота (от 0 до `stepsPerRevolution`), переводит его в угол через `map()`, и на основе этого угла вычисляет яркость красного и зелёного каналов светодиода: чем дальше от начала оборота, тем ярче один цвет и тем темнее другой, создавая плавный переход по кольцу.

Пошаговая сборка

Так как реализации данного модуля бывают разные, если у вас на плате нет тех контактов, что указаны ниже — сориентируйтесь по названиям контактов на своей плате.

  1. Подключите драйвер ULN2003: IN1-IN4 → D8, D9, D10, D11, VCC → отдельное 5V, GND → GND.
  2. Закрепите RGB-светодиод на вращающемся диске, подключив R и G через контактные кольца (slip ring) или достаточно длинный гибкий провод с запасом хода.
  3. Подключите R → D5, G → D6 (через контактные кольца или гибкий провод к неподвижной части схемы).
  4. Без контактных колец ограничьте число оборотов перед остановкой и раскручиванием в обратную сторону, чтобы провод не перекрутился и не оборвался.

Скетч

// ВНИМАНИЕ: рекомендую отладить код через монитор порта, так как я языковая
// модель, а не специализированный кодер, и могу что-то упустить. Основу
// и идею я накидал, но проверьте под свою схему.

#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: Электронные модули.

← 🕹️ управление цветом RGB-светодиода джойстико…📡 тренажёр азбуки Морзе на кнопке и зуммере →

🎁 Купить весь комплект со скидкой 10%

Все 2 товара сразу в корзину: 269 ₽ 242 ₽ (экономия 27 ₽)

Скидка применяется автоматически при оформлении заказа, если в корзине именно этот комплект.

Остались вопросы? Проконсультируйтесь с ИИ-инженером — он уже в курсе темы статьи и сразу ответит, ничего вводить не нужно.

Корзина


Поиск



Пример: понижающий или DC-DC или mini360 или aw-023 или арт. OZ/WB/YA