O codigo é o seguinte:
#include <CustomStepper.h> //biblioteca para o motor de passo
#include <Wire.h> //biblioteca pra o display de 7 segmentos
#define endereco 0x3f // é do dispositivo que eu configurei
//Define os parametros iniciais de ligacao do motor de passo
CustomStepper stepper(8, 9, 10, 11, (byte[]){8, B1000, B1100, B0100, B0110, B0010, B0011, B0001, B1001}, 4075.7728395, 12, CW);
/* Os parametos sao 8,9,10,11 indicam a porta que eu liguei no arduino
- A partde de byte e os termos Bxxxx se referem a quais cores estarão habilitadas, ou seja, a sequência de ativação da bobina do motor
*/
byte seven_seg_digits[10][7] = { { 0,0,0,0,0,0,1 }, // = 0
{ 1,0,0,1,1,1,1 }, // = 1
{ 0,0,1,0,0,1,0 }, // = 2
{ 0,0,0,0,1,1,0 }, // = 3
{ 1,0,0,1,1,0,0 }, // = 4
{ 0,1,0,0,1,0,0 }, // = 5
{ 0,1,0,0,0,0,0 }, // = 6
{ 0,0,0,1,1,1,1 }, // = 7
{ 0,0,0,0,0,0,0 }, // = 8
{ 0,0,0,1,1,0,0 } // = 9
};
void setup() {
stepper.setRPM(12); //Define a velocidade do motor
stepper.setSPR(4075.7728395); //Define o numero de passos por rotacao
pinMode(2, OUTPUT); //acende o a
pinMode(3, OUTPUT); //acende o b
pinMode(4, OUTPUT); //acende o c
pinMode(5, OUTPUT); //acende o d
pinMode(6, OUTPUT); //acende o e
pinMode(7, OUTPUT); //acende o f
pinMode(12, OUTPUT); //acende o g
}
void loop() {
if (stepper.isDone()) { //verifica se o motor esta rodando ou não, se sim retorna TRUE e se não retora FALSE ( é um método booleano)
delay(1000); //Intervalo entre acionamentos do motor de passo
stepper.setDirection(CW); //Define o sentido de rotacao (CW = Horario)
stepper.rotateDegrees(30); //Define o angulo de rotacao, vai rotacionar de 30 em 30 graus, dessa forma, vai dar 12 voltas
}
stepper.run(); //run é o que foi implementado na função que vai fazer o motor girar
// escrever ‘9’ no display
digitalWrite(2, 0);
digitalWrite(3, 0);
digitalWrite(4, 0);
digitalWrite(5, 1);
digitalWrite(6, 1);
digitalWrite(7, 0);
digitalWrite(12, 0);
delay(1000);
// escrever ‘8’ no display
digitalWrite(2, 0);
digitalWrite(3, 0);
digitalWrite(4, 0);
digitalWrite(5, 0);
digitalWrite(6, 0);
digitalWrite(7, 0);
digitalWrite(12, 0);
delay(1000);
}
Estou pensando se pode ser um problema de alimentação também