// Professor Cristiano Teixeira.
// Mudanças do original Sob Licença Apache 2.0
// Stepper Motor A4988 Driver
// cada passo tem 1,8 Graus de rotação num total de 200 passos para uma volta completa
bool DIR = 1; // direção do movimento: 0 = anti-horário, 1 = horário
bool controle = 0; // variável de controle para só permitir executar uma vez
// eu sei que era mais fácil fazer o setup, mas queria demonstrar o uso de uma lógica assim
void setup() {
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
digitalWrite(2, DIR); // Seta a direção para horário
}
void loop() {
// instrução abaixo faz o motor mover 50 passos 90 Graus
// um passo a cada 100 milésimos de segundo, depois para
if (controle == 0) {
for (int x = 0; x < 50; x++){
// para dar 1 passo, precisa intercalar um LIGADO e um DESLIGADO na sequência
// Cada combinação equivale a 1 passo
digitalWrite(3, HIGH);
digitalWrite(3, LOW);
delay(100);
}
delay (2000);
}
// agora vou fazer ele voltar
DIR = 0; // mudo a direção para anti-horário
digitalWrite(2, DIR); // Seta a direção
if (controle == 0) {
for (int x = 0; x < 50; x++){
digitalWrite(3, HIGH);
digitalWrite(3, LOW);
delay(100);
controle = 1; // Mudo o valor da variável de controle para não mais executar nenhum dos dois ifs
}
}
}