/*Proyek #37: Kendali kecepatan dan arah putaran Motor Stepper*/
#include <Stepper.h>
/*jumalh step 360/1,8 = 200(nilai ini tergangtung sudut langkah dari data sheet motor stepper yang digunakan */
int jumlah_step = 200;
// buat objek stepper pd pin 7, 8, 9, 10 (ke pin IC driver atau terhubung pin stepper B-, B+, A+, A-) 
Stepper syahwil (jumlah_step, 7, 8, 9, 10);
//inisialisasi pin saklar dan potensiometer
int tombol_CW = 2;//saklar putar kanan
int tombol_CCW = 3;//saklar putar kiri
int pinPot = A0;//pin potensiometer
 
void setup()
{
/*deklarasikan semua saklar sebagai input sekaligus aktifkan Pull-up resistor internal arduino */
pinMode(tombol_CW, INPUT_PULLUP);
pinMode (tombol_CCW,INPUT_PULLUP);
Serial.begin(9600);//buka port komunikasi serial
}
void loop(){
int val_pot = analogRead(pinPot);//baca potensiometer
//petakan pembacaan potensiometer kedlm RPM 0 s.d 200 rpm
int RPM = map(val_pot, 0, 1023, 0, 200); 
Serial.print(" Kecepatan RPM =");
Serial.print(RPM);//cetak nilai rpm pd serial monitor
Serial.println();
//cek penekanan saklar
int val_CW = digitalRead(tombol_CW);
int val_CCW = digitalRead(tombol_CCW);
//buat fungsi pengaturan
if (val_CW ==LOW && val_CCW==HIGH && RPM > 1){
  syahwil.setSpeed(RPM);//rpm sesuai posisi potensiometer
  syahwil.step(1);//putaran kekanan step one step, jika ingin 1 kali putaran penuh ke kanan ganti angka menjadi 200
  delay(10);
  }

if (val_CW ==HIGH && val_CCW==LOW && RPM > 1){
  syahwil.setSpeed(RPM);//rpm sesuai posisi potensiometer
  syahwil.step(-1);//putaran kekiri step one step, jika ingin 1 kali putaran penuh kekiri ganti angka menjadi -200
  delay(10);
  }
}