У Wokwi замість ULN2003 і двигуна — чотири світлодіоди з резисторами 220 Ом.
4 кроки · у власному темпі
1. Обмотки по черзі
Усередині крокового двигуна — чотири обмотки навколо магніту. Коли струм по черзі йде в наступну обмотку, магніт «перескакує» за нею на один крок. Плата ULN2003 дає обмоткам струм, якого не має пін Arduino. У Wokwi струм в обмотках показують світлодіоди IN1–IN4.
Відкрий новий проєкт Arduino Uno у Wokwi.
Заміни diagram.json файлом кроку.
Заміни sketch.ino скетчем кроку.
Натисни ▶.
Дивись на світлодіоди й монітор порту.
Підключення
Контакт
Куди з’єднати
Uno D11
LED IN1 через резистор 220 Ом
Uno D10
LED IN2 через резистор 220 Ом
Uno D9
LED IN3 через резистор 220 Ом
Uno D8
LED IN4 через резистор 220 Ом
Короткі ніжки LED
Лінія «−» макетки
Лінія «−» макетки
Uno GND
Файли для Wokwi
Відкрий новий Arduino Uno. Заміни sketch.ino і diagram.json файлами кроку. Бібліотеки не потрібні. Натисни ▶.
#include <Arduino.h>
const byte COIL_PINS[] = {11, 10, 9, 8}; // IN1, IN2, IN3, IN4 на платі ULN2003
const unsigned long PHASE_MS = 500; // Повільно, щоб побачити кожну обмотку
void setup() {
for (byte i = 0; i < 4; i++) {
pinMode(COIL_PINS[i], OUTPUT);
}
Serial.begin(115200);
}
void loop() {
for (byte coil = 0; coil < 4; coil++) {
for (byte i = 0; i < 4; i++) {
digitalWrite(COIL_PINS[i], i == coil ? HIGH : LOW); // Струм лише в одній обмотці
}
Serial.print("Coil IN");
Serial.println(coil + 1);
delay(PHASE_MS);
}
}
Очікуваний результат
Світлодіоди IN1, IN2, IN3, IN4 світять по черзі, кожен 0,5 с. У моніторі Coil IN1 … Coil IN4.
Перевір себе
Одночасно світить лише один світлодіод.
Що можна змінити
PHASE_MS: 100 — світло «бігає» швидше.
Якщо не працює
Світлодіоди йдуть не по порядку — перевір масив COIL_PINS: {11, 10, 9, 8}.
2. Повний оберт
Щоб вал крутився, фази треба перемикати швидко: кожні 3 мс. Дві сусідні обмотки разом дають сильніший крок. Через редуктор на один оберт вала потрібно приблизно 2048 кроків.
Заміни код скетчем кроку 2.
Запусти симуляцію.
Стеж за монітором.
Підключення
Контакт
Куди з’єднати
Uno D11
LED IN1 через резистор 220 Ом
Uno D10
LED IN2 через резистор 220 Ом
Uno D9
LED IN3 через резистор 220 Ом
Uno D8
LED IN4 через резистор 220 Ом
Короткі ніжки LED
Лінія «−» макетки
Лінія «−» макетки
Uno GND
Файли для Wokwi
Відкрий новий Arduino Uno. Заміни sketch.ino і diagram.json файлами кроку. Бібліотеки не потрібні. Натисни ▶.
#include <Arduino.h>
const byte COIL_PINS[] = {11, 10, 9, 8}; // IN1, IN2, IN3, IN4 на платі ULN2003
const int STEPS_PER_REV = 2048; // Приблизно: 32 кроки двигуна × редуктор ≈64
const byte STEP_MS = 3; // Менше 2 мс — двигун може пропускати кроки
const byte PATTERN[4][4] = {
{1, 1, 0, 0},
{0, 1, 1, 0},
{0, 0, 1, 1},
{1, 0, 0, 1},
}; // Дві сусідні обмотки разом — сильніший крок
int phase = 0;
void energize(int p) {
for (byte i = 0; i < 4; i++) {
digitalWrite(COIL_PINS[i], PATTERN[p][i]);
}
}
void stepOnce(int direction) {
phase = (phase + direction + 4) % 4; // Наступна або попередня фаза
energize(phase);
delay(STEP_MS);
}
void release() {
for (byte i = 0; i < 4; i++) {
digitalWrite(COIL_PINS[i], LOW); // Обмотки без струму не гріються
}
}
void rotateDegrees(long degrees) {
long steps = degrees * STEPS_PER_REV / 360;
int direction = steps > 0 ? 1 : -1;
for (long i = 0; i < abs(steps); i++) {
stepOnce(direction);
}
release();
}
void setup() {
for (byte i = 0; i < 4; i++) {
pinMode(COIL_PINS[i], OUTPUT);
}
Serial.begin(115200);
}
void loop() {
Serial.println("+90");
rotateDegrees(90);
delay(1000);
Serial.println("+90");
rotateDegrees(90);
delay(1000);
Serial.println("-180");
rotateDegrees(-180); // Мінус — у зворотний бік
delay(2000);
}
Очікуваний результат
Прапорець повертається на 90°, ще на 90° і назад на 180°. Світлодіоди на ULN2003 мерехтять під час руху.
Перевір себе
Після кожного циклу прапорець повертається в те саме положення.
Що можна змінити
Завантаж скетч кроку 1 з PHASE_MS = 500: вал робить крихітний крок за кожним світлодіодом.
Якщо не працює
Світлодіоди мерехтять, а вал лише дрижить — перевір порядок IN1–IN4 і роз’єм двигуна. Нічого не світить — перевір 5V, GND і перемичку живлення на ULN2003.