#include <AccelStepper.h>
/*Definição dos pinos de Direção e Pulsos para o Drive. OBS: Obrigatório Const int */
const int dir_pino = 2;
const int step_pino = 3;
//Se utilizado um Drive = 1
#define drive_motor 1
//criação do objeto de controle do motor
AccelStepper motor_1(drive_motor, step_pino, dir_pino);
#define SIX 13 //inicio de curso - eixo X
#define Red 11
#define Green 10
#define Blue 9
bool Ativa_Ferramenta = LOW;
void setup() {
pinMode(SIX, INPUT_PULLUP);
pinMode(Red, OUTPUT);
pinMode(Green, OUTPUT);
pinMode(Blue, OUTPUT);
//velocidade maxima - passos por segundos
motor_1.setMaxSpeed(1000);
//Taxa de Aceleração - passos por segundo ao quadrado - rampa de aceleração de 50 em 50
motor_1.setAcceleration(50);
Serial.begin(9600);
Homing();
}
void loop() {
float voltas = motor_1.currentPosition() / 200;
float posicao = voltas * 0.4;
if (motor_1.distanceToGo() != 0)
{
Serial.print("Posição: ");
Serial.print(posicao);
Serial.print("mm");
Serial.print(" - Voltas: ");
Serial.println(voltas);
}
char letra = Serial.read();
if (letra == 'A' || letra == 'a')
{
Serial.print("Posição A");
motor_1.moveTo(1000);
Ativa_Ferramenta = !Ativa_Ferramenta;
}
if (letra == 'B' || letra == 'b')
{
Serial.print("Posição B");
motor_1.moveTo(2000);
Ativa_Ferramenta = !Ativa_Ferramenta;
}
if (letra == 'C' || letra == 'c')
{
Serial.print("Posição C");
motor_1.moveTo(3000);
Ativa_Ferramenta = !Ativa_Ferramenta;
}
if (letra == 'D' || letra == 'd')
{
Serial.print("Posição D");
motor_1.moveTo(4000);
Ativa_Ferramenta = !Ativa_Ferramenta;
}
if (motor_1.distanceToGo() == 0 && Ativa_Ferramenta == HIGH)
{
Serial.println("Ferramenta Ativa");
ferramenta();
}
motor_1.run();
}
void Homing()
{
//Seta o motor em sentido anti-horário e prepara para ele rodar na velocidade
motor_1.setSpeed(-500);
//Enquanto o inicio de curso nao estiver acionado
while(digitalRead(SIX) == HIGH)
{
motor_1.runSpeed(); //Roda o motor
}
//zera a velocidade
motor_1.setSpeed(0);
//zera a posicao atual do motor de passo
motor_1.setCurrentPosition(0);
Serial.println("Homing Finalizado");
Serial.println("Selecione uma posição:");
}
void ferramenta()
{
analogWrite(Red, 255);
analogWrite(Green, 0);
analogWrite(Blue, 0);
delay(500);
analogWrite(Red, 0);
analogWrite(Green, 255);
analogWrite(Blue, 0);
delay(500);
analogWrite(Red, 0);
analogWrite(Green, 0);
analogWrite(Blue, 255);
delay(500);
analogWrite(Red, 255);
analogWrite(Green, 255);
analogWrite(Blue, 0);
delay(500);
analogWrite(Red, 0);
analogWrite(Green, 255);
analogWrite(Blue, 255);
delay(500);
analogWrite(Red, 255);
analogWrite(Green, 255);
analogWrite(Blue, 255);
delay(500);
analogWrite(Red, 0);
analogWrite(Green, 0);
analogWrite(Blue, 0);
delay(500);
Serial.println("Ferramenta concluida");
Ativa_Ferramenta = !Ativa_Ferramenta;
}