Motor de Passo com driver uln2003 e display de 7 segmentos


#1

Ola, estou fazendo um projeto onde desejo que o motor de passo rotacione e apareça números no display de segmentos.

Ao realizar os testes das duas partes separadamente ambas funcionam, contudo, ao junta-las em único codigo o motor de passo não gira. Alguém saberia alguma possivel causa para esse problema??

Valeu galera


#2

provavelmente uma definição dos pinos, coloque seu código para termos certeza


#3

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


#4

Tem 2 bons tutoriais pra esse motor de passo: