Motor Stepper ULN2003 merujuk pada driver motor stepper yang digunakan untuk mengontrol motor stepper jenis 4-pin (seperti 28BYJ-48).Berikut ini adalah cara memprogramnya :
#include <Arduino.h>
#include <Stepper.h>
const int stepsPerRevolution = 2048;
// ULN2003 Motor Driver Pins (ESP32)
#define IN1 19
#define IN2 18
#define IN3 5
#define IN4 17
Stepper myStepper(stepsPerRevolution, IN1, IN3, IN2, IN4);
void setup()
{
Serial.begin(9600);
// set the speed at 5 rpm
myStepper.setSpeed(5);
}
void loop(){
Serial.println("clockwise");
myStepper.step(stepsPerRevolution);
delay(1000);
Serial.println("counterclockwise");
myStepper.step(-stepsPerRevolution);
delay(1000);
}
Berikut ini adalah penjelasan dari kode di atas :
1. Library yang Digunakan:
#include <Arduino.h>
#include <Stepper.h>
Arduino.h
: Library dasar yang digunakan di semua proyek Arduino untuk komunikasi dengan mikrokontroler.Stepper.h
: Library untuk mengendalikan motor stepper. Library ini sudah menyediakan fungsi-fungsi yang mempermudah kontrol motor stepper, termasuk langkah per langkah dan pengaturan kecepatan.
2. Deklarasi Konstanta dan Pin Motor Stepper:
const int stepsPerRevolution = 2048;
// ULN2003 Motor Driver Pins (ESP32)
#define IN1 19
#define IN2 18
#define IN3 5
#define IN4 17
stepsPerRevolution
: Ini adalah jumlah langkah yang dibutuhkan motor stepper untuk menyelesaikan satu putaran penuh (satu revolusi). Pada motor 28BYJ-48, biasanya membutuhkan 2048 langkah untuk satu putaran penuh. Angka ini digunakan oleh libraryStepper
untuk mengetahui jumlah langkah yang harus ditempuh motor untuk berputar satu putaran.- Pin Motor:
- IN1, IN2, IN3, IN4: Pin kontrol dari motor stepper yang terhubung ke driver ULN2003 dan pada ESP32, masing-masing dipetakan ke pin GPIO 19, 18, 5, dan 17. Pin-pin ini digunakan untuk mengendalikan urutan sinyal yang diberikan kepada motor stepper agar bergerak dalam langkah-langkah kecil (step-by-step).
3. Inisialisasi Objek Stepper:
Stepper myStepper(stepsPerRevolution, IN1, IN3, IN2, IN4);
Stepper myStepper(...)
: Ini adalah inisialisasi objekmyStepper
yang akan digunakan untuk mengendalikan motor stepper. Parameter yang diberikan:stepsPerRevolution
: Jumlah langkah per satu putaran penuh motor (2048 langkah).IN1, IN3, IN2, IN4
: Pin-pin yang digunakan untuk mengendalikan motor stepper melalui driver ULN2003. Urutan ini mengikuti konvensi wiring standar motor stepper untuk ESP32.
4. Fungsi setup()
:
void setup()
{
Serial.begin(9600);
// set the speed at 5 rpm
myStepper.setSpeed(5);
}
Serial.begin(9600);
: Memulai komunikasi serial dengan baud rate 9600, sehingga Anda bisa melihat output di Serial Monitor.myStepper.setSpeed(5);
: Mengatur kecepatan motor stepper menjadi 5 RPM (putaran per menit). Ini berarti motor akan bergerak satu langkah setiap 12 detik, tergantung pada jumlah langkah per revolusi (2048).
5. Fungsi loop()
:
void loop(){
Serial.println("clockwise");
myStepper.step(stepsPerRevolution);
delay(1000);
Serial.println("counterclockwise");
myStepper.step(-stepsPerRevolution);
delay(1000);
}
Serial.println("clockwise");
: Menampilkan pesan “clockwise” di Serial Monitor yang menandakan motor akan berputar searah jarum jam.myStepper.step(stepsPerRevolution);
: Memerintahkan motor untuk berputar sebanyak 2048 langkah ke arah searah jarum jam. Karena kita menggunakan 2048 langkah per revolusi, motor akan menyelesaikan satu putaran penuh.delay(1000);
: Menunggu selama 1 detik (1000 ms) sebelum melanjutkan ke langkah berikutnya.Serial.println("counterclockwise");
: Menampilkan pesan “counterclockwise” di Serial Monitor yang menandakan motor akan berputar berlawanan arah jarum jam.myStepper.step(-stepsPerRevolution);
: Memerintahkan motor untuk berputar sebanyak -2048 langkah, yang artinya motor berputar berlawanan arah jarum jam. Dengan tanda minus, arah motor dibalik.delay(1000);
: Menunggu selama 1 detik (1000 ms) setelah putaran berlawanan arah jarum jam.
Keseluruhan Alur:
- Program ini akan menyebabkan motor stepper bergerak satu putaran penuh searah jarum jam (clockwise) dan kemudian satu putaran penuh berlawanan arah jarum jam (counterclockwise).
- Proses ini akan berulang terus menerus karena berada dalam loop() yang berjalan terus-menerus setelah fungsi setup() selesai.
Ringkasan:
- Motor stepper berputar satu putaran penuh (2048 langkah) searah jarum jam, menunggu 1 detik.
- Motor kemudian berputar satu putaran penuh berlawanan arah jarum jam, menunggu 1 detik.
- Ini terjadi berulang-ulang sepanjang program.
Catatan:
- Kecepatan putaran motor diatur menjadi 5 RPM. Anda bisa mengubah nilai ini untuk mempercepat atau memperlambat putaran motor.
- Motor stepper ini biasanya digunakan dalam aplikasi yang membutuhkan kontrol posisi yang tepat, seperti robotika, kendali pintu otomatis, atau proyek DIY lainnya.
Jika Anda ingin mengubah kecepatan atau mengubah jumlah langkah per putaran, cukup sesuaikan nilai stepsPerRevolution
atau parameter setSpeed()
sesuai kebutuhan.
untuk diskusi bisa kontak dibawah ini :

Sosial media :