Driver motor adalah komponen elektronik yang mengatur arus dan tegangan untuk menggerakkan motor, khususnya saat dikendalikan oleh mikrokontroler seperti Arduino, ESP32, Raspberry Pi, dsb.
berikut ini adalah cara memprogram driver motor di esp32 dengan mudah:
untuk code bisa gunakan kode dibawah ini :
#include <Arduino.h>
const int in_motor_A = 18;
const int in_motor_B = 19;
void motor_berhenti() {
digitalWrite(in_motor_A, LOW);
digitalWrite(in_motor_B, LOW);
}
void motor_maju() {
digitalWrite(in_motor_A, HIGH);
digitalWrite(in_motor_B, HIGH);
}
void motor_kanan() {
digitalWrite(in_motor_A, HIGH);
digitalWrite(in_motor_B, LOW);
}
void motor_kiri() {
digitalWrite(in_motor_A, LOW);
digitalWrite(in_motor_B, HIGH);
}
int motor_kanan_status_max = 0;
void motor_kanan_max(int port_limit)
{
if (motor_kanan_status_max == 0)
{
if (digitalRead(port_limit) == 0)
{
motor_kanan_status_max = 1;
motor_berhenti();
motor_kanan();
delay(1000);
motor_berhenti();
}
else
{
motor_kiri();
}
}
}
int motor_kiri_status_max = 0;
void motor_kiri_max(int port_limit)
{
if (motor_kiri_status_max == 0)
{
if (digitalRead(port_limit) == 0)
{
motor_kiri_status_max = 1;
motor_berhenti();
motor_kiri();
delay(1000);
motor_berhenti();
}
else
{
motor_kanan();
}
}
}
void setup()
{
Serial.begin(9600);
pinMode(in_motor_A, OUTPUT);
pinMode(in_motor_B, OUTPUT);
motor_berhenti();
}
void loop(){
motor_kanan();
delay(1000);
motor_berhenti();
delay(1000);
motor_kiri();
delay(1000);
motor_berhenti();
}
🔧 Bagian #include
dan Deklarasi Pin
#include <Arduino.h>
const int in_motor_A = 18;
const int in_motor_B = 19;
#include <Arduino.h>
: Ini menyertakan pustaka standar Arduino yang dibutuhkan agar kode berjalan (biasanya otomatis diimpor di IDE Arduino).in_motor_A
danin_motor_B
adalah dua pin output (GPIO 18 dan 19) yang digunakan untuk mengontrol motor — kemungkinan motor DC menggunakan driver H-Bridge (misalnya L298N atau L293D).
⚙️ Fungsi Kendali Motor
void motor_berhenti() {
digitalWrite(in_motor_A, LOW);
digitalWrite(in_motor_B, LOW);
}
- Motor berhenti karena kedua input H-Bridge LOW.
void motor_maju() {
digitalWrite(in_motor_A, HIGH);
digitalWrite(in_motor_B, HIGH);
}
- Motor berjalan maju jika kedua input HIGH (tergantung wiring dan driver motor-nya).
void motor_kanan() {
digitalWrite(in_motor_A, HIGH);
digitalWrite(in_motor_B, LOW);
}
- Motor bergerak ke kanan (rotasi satu arah).
void motor_kiri() {
digitalWrite(in_motor_A, LOW);
digitalWrite(in_motor_B, HIGH);
}
- Motor bergerak ke kiri (rotasi arah sebaliknya dari kanan).
🧠 Logika Fungsi motor_kanan_max()
int motor_kanan_status_max = 0;
void motor_kanan_max(int port_limit)
{
if (motor_kanan_status_max == 0)
{
if (digitalRead(port_limit) == 0)
{
motor_kanan_status_max = 1;
motor_berhenti();
motor_kanan();
delay(1000);
motor_berhenti();
}
else
{
motor_kiri();
}
}
}
Fungsi ini digunakan untuk menggerakkan motor ke kanan sampai limit tertentu, menggunakan limit switch (sensor batas):
- Jika limit switch belum aktif (
digitalRead(port_limit) != 0
), motor bergerak kiri untuk mencari batas. - Jika limit switch aktif (
digitalRead(port_limit) == 0
), motor:- Berhenti,
- Gerak ke kanan selama 1 detik,
- Lalu berhenti.
- Setelah itu
motor_kanan_status_max
diset jadi 1 agar tidak dijalankan lagi.
🔁 Fungsi motor_kiri_max()
hampir sama:
int motor_kiri_status_max = 0;
void motor_kiri_max(int port_limit)
{
if (motor_kiri_status_max == 0)
{
if (digitalRead(port_limit) == 0)
{
motor_kiri_status_max = 1;
motor_berhenti();
motor_kiri();
delay(1000);
motor_berhenti();
}
else
{
motor_kanan();
}
}
}
Logika ini mirip, tapi untuk arah kiri.
🛠️ Fungsi setup()
void setup()
{
Serial.begin(9600);
pinMode(in_motor_A, OUTPUT);
pinMode(in_motor_B, OUTPUT);
motor_berhenti();
}
- Inisialisasi komunikasi serial (opsional),
- Atur pin A dan B sebagai output,
- Motor dihentikan saat awal dinyalakan.
🔁 Fungsi loop()
void loop(){
motor_kanan();
delay(1000);
motor_berhenti();
delay(1000);
motor_kiri();
delay(1000);
motor_berhenti();
}
- Program akan berjalan berulang:
- Motor kanan selama 1 detik
- Berhenti 1 detik
- Motor kiri 1 detik
- Berhenti
📝 Kesimpulan
Kode ini mengontrol sebuah motor untuk bergerak ke kiri dan kanan dengan pengendalian arah menggunakan dua pin. Fungsi motor_kanan_max()
dan motor_kiri_max()
digunakan untuk mengatur batas gerak motor menggunakan sensor limit switch, dan hanya dijalankan satu kali berkat variabel status (motor_kanan_status_max
/ motor_kiri_status_max
).
untuk diskusi bisa kontak dibawah ini :

Sosial media :