#define MS1 5
#define MS2 4
#define MS3 2
#define SMotor_X_Enable 15
#define SMotor_X_Step 14
#define SMotor_X_Dir 13
#define SMotor_Y_Enable 18
#define SMotor_Y_Step 17
#define SMotor_Y_Dir 16
#define joystick_X 26
#define joystick_Y 27
#define step_per_rev 200
#define timestep 50000
int valor_X, valor_Y;
void setup()
{
Serial.begin(115200);
pinMode(MS1, OUTPUT);
pinMode(MS2, OUTPUT);
pinMode(MS3, OUTPUT);
pinMode(SMotor_X_Enable, OUTPUT);
pinMode(SMotor_X_Dir, OUTPUT);
pinMode(SMotor_X_Step, OUTPUT);
pinMode(SMotor_Y_Enable, OUTPUT);
pinMode(SMotor_Y_Dir, OUTPUT);
pinMode(SMotor_Y_Step, OUTPUT);
delay(10);
digitalWrite(MS1, LOW);
digitalWrite(MS2, LOW);
digitalWrite(MS3, LOW);
digitalWrite(SMotor_X_Enable, LOW);
digitalWrite(SMotor_Y_Enable, LOW);
analogReadResolution(12);
}
void loop()
{
valor_X = analogRead(joystick_X);
valor_Y = analogRead(joystick_Y);
if ((valor_X<1000) || (valor_X>3000)){
digitalWrite(SMotor_X_Enable, HIGH);
if (valor_X >3000){
Serial.println("Sentido horario.");
digitalWrite(SMotor_X_Dir, HIGH);
}else if (valor_X < 1000){
Serial.println("Sentido anti-horario.");
digitalWrite(SMotor_X_Dir, LOW);
}
digitalWrite( SMotor_X_Step, HIGH);
delayMicroseconds(timestep);
digitalWrite( SMotor_X_Step, LOW);
delayMicroseconds(timestep);
}else{
digitalWrite(SMotor_X_Enable, LOW);
}
if ((valor_Y<1000) || (valor_Y>3000)){
digitalWrite(SMotor_Y_Enable, HIGH);
if (valor_Y >3000){
Serial.println("Sentido horario.");
digitalWrite(SMotor_Y_Dir, HIGH);
}else if (valor_Y < 1000){
Serial.println("Sentido anti-horario.");
digitalWrite(SMotor_Y_Dir, LOW);
}
digitalWrite( SMotor_Y_Step, HIGH);
delayMicroseconds(timestep);
digitalWrite( SMotor_Y_Step, LOW);
delayMicroseconds(timestep);
}else{
digitalWrite(SMotor_Y_Enable, LOW);
}
}