#define JOY_1_PIN A0
#define JOY_2_PIN A1
#define MOTOR_STEP1_PIN 2
#define MOTOR_DIR1_PIN 3
#define MOTOR_STEP2_PIN 4
#define MOTOR_DIR2_PIN 5
#define MIN_SPEED 100 // micros
#define MAX_SPEED 2000 //micros
void setup() {
pinMode(MOTOR_STEP1_PIN, OUTPUT);
pinMode(MOTOR_DIR1_PIN, OUTPUT);
pinMode(MOTOR_STEP2_PIN, OUTPUT);
pinMode(MOTOR_DIR2_PIN, OUTPUT);
}
void loop() {
int joy1Value = analogRead(JOY_1_PIN);
int joy2Value = analogRead(JOY_2_PIN);
bool dir1 = (joy1Value > 512);
bool dir2 = (joy2Value > 512);
digitalWrite(MOTOR_DIR1_PIN, dir1);
digitalWrite(MOTOR_DIR2_PIN, dir2);
// Hız hesaplama (Joystick değeri 0-1023 → 100-2000 µs arasında ölçeklenir)
int motor1Speed = map(abs(joy1Value - 512), 0, 512, MAX_SPEED, MIN_SPEED);
int motor2Speed = map(abs(joy2Value - 512), 0, 512, MAX_SPEED, MIN_SPEED);
if (joy1Value != 512) moveMotor(MOTOR_STEP1_PIN, motor1Speed);
if (joy2Value != 512) moveMotor(MOTOR_STEP2_PIN, motor2Speed);
}
// Step motor adım fonksiyonu
void moveMotor(int stepPin, int speed) {
digitalWrite(stepPin, HIGH);
delayMicroseconds(speed);
digitalWrite(stepPin, LOW);
delayMicroseconds(speed);
}