CENTRAL DE ATENDIMENTO
De segunda à sexta das 8:00 às 17:30
(11) 3522-7626 / vendas@robocore.net
Retornar
ao topo

Classifique este tópicoPéssimoRuimMedianoBomÓtimo
Autor
Mensagem
3
leandro.gama

Level 0
0 xp

Registrado em:
28/07/2020





Mensagens:
1
3
leandro.gama

Responder com citações
Mensagem Ter Jul 28, 2020 11:18 am
Controle de motores de passo
Bom dia pessoal

Eu preciso controlar 8 motores de passo com um arduino, escrevi o código e está rodando com uma falha.
Cada motor tem dois botões para frente e para traz, quando aciono os botões que deveriam controlar somente o motor 1 os outros motores acabam respondendo também dando algum tipo de pulso. Isso não pode ocorrer. 

Podem me ajudar?

Estou usando o mega 2560

segue o codico:


// define números de pinos do driver no Controlador

   #define buttom1 2
   #define buttom2 3
   
   #define buttom3 4
   #define buttom4 5
   
   #define buttom5 6
   #define buttom6 7
   
   #define buttom7 8
   #define buttom8 9
   
   #define buttom9 10
   #define buttom10 11
   
   #define buttom11 12
   #define buttom12 13
   
   #define buttom13 22
   #define buttom14 23
   
   #define buttom15 24
   #define buttom16 25
   
// Define controle por onda quadrada

   const int stepPin1 = 26;
   const int dirPin1 = 27;
   const int stepPin2 = 28;
   const int dirPin2 = 29;
   const int stepPin3 = 30;
   const int dirPin3 = 31;
   const int stepPin4 = 32;
   const int dirPin4 = 33;
   const int stepPin5 = 34;
   const int dirPin5 = 35;
   const int stepPin6 = 36;
   const int dirPin6 = 37;
   const int stepPin7 = 38;
   const int dirPin7 = 39;
   const int stepPin8 = 40;
   const int dirPin8 = 41;
   
// Seta os valores iniciais dos botções

int b1 = 0, b2 = 0, b3 = 0, b4 = 0, b5 = 0, b6 = 0, b7 = 0, b8 = 0, b9 = 0, b10 = 0, b11 = 0, b12 = 0, b13 = 0, b14 = 0, b15 = 0, b16 = 0;

//==============================================================================================================================================
//**********************************************************************************************************************************************

// Configurações de hardware

void setup() {
  
// Define os dois pinos como Entradas

   pinMode (buttom1, INPUT);
   pinMode (buttom2, INPUT); 
   pinMode (buttom3, INPUT);
   pinMode (buttom4, INPUT);
   pinMode (buttom5, INPUT);
   pinMode (buttom6, INPUT);
   pinMode (buttom7, INPUT);
   pinMode (buttom8, INPUT);
   pinMode (buttom9, INPUT);
   pinMode (buttom10, INPUT);
   pinMode (buttom11, INPUT);
   pinMode (buttom12, INPUT);
   pinMode (buttom13, INPUT);
   pinMode (buttom14, INPUT);
   pinMode (buttom15, INPUT);
   pinMode (buttom16, INPUT);
   
// Define os dois pinos como Saidas

   pinMode (stepPin1, OUTPUT);
   pinMode (dirPin1, OUTPUT);
   pinMode (stepPin2, OUTPUT);
   pinMode (dirPin2, OUTPUT);
   pinMode (stepPin3, OUTPUT);
   pinMode (dirPin3, OUTPUT);
   pinMode (stepPin4, OUTPUT);
   pinMode (dirPin4, OUTPUT);
   pinMode (stepPin5, OUTPUT);
   pinMode (dirPin5, OUTPUT);
   pinMode (stepPin6, OUTPUT);
   pinMode (dirPin6, OUTPUT);
   pinMode (stepPin7, OUTPUT);
   pinMode (dirPin7, OUTPUT);
   pinMode (stepPin8, OUTPUT);
   pinMode (dirPin8, OUTPUT);

}

//==============================================================================================================================================
//**********************************************************************************************************************************************

//Logica princial 

void loop() {

// Carrega os vaolres das variaveis

   b1 = digitalRead(buttom1);
   b2 = digitalRead(buttom2);
   b3 = digitalRead(buttom1);
   b4 = digitalRead(buttom2);
   b5 = digitalRead(buttom1);
   b6 = digitalRead(buttom2);
   b7 = digitalRead(buttom1);
   b8 = digitalRead(buttom2);
   b9 = digitalRead(buttom1);
   b10 = digitalRead(buttom2);
   b11 = digitalRead(buttom1);
   b12 = digitalRead(buttom2);
   b13 = digitalRead(buttom1);
   b14 = digitalRead(buttom2);
   b15 = digitalRead(buttom1);
   b16 = digitalRead(buttom2);

//==============================================================================================================================================
//**********************************************************************************************************************************************

   //CONTROLE MOTOR 1

   
if (b1 == HIGH){
  
     // permite que o motor se mova em uma direção particular
     digitalWrite(dirPin1, HIGH);
 
     // faz pulsos para fazer uma rotação de ciclo 
     for(int x = 0; x < 5800; x++)
{
     digitalWrite(stepPin1,HIGH);
     delayMicroseconds(500);
     digitalWrite(stepPin1,LOW);
     delayMicroseconds(500);
}
}


if (b2 == HIGH){
  
    //Muda a direção da rotação
    digitalWrite(dirPin1,LOW);
 
    // faz pulsos para fazer duas rotações de ciclo
    for(int x = 0; x < 5800; x++)
{
    digitalWrite(stepPin1,HIGH);
    delayMicroseconds(500);
    digitalWrite(stepPin1,LOW);
    delayMicroseconds(500);
}
}

//==============================================================================================================================================
//**********************************************************************************************************************************************

   //CONTROLE MOTOR 2

 
   
if (b3 == HIGH){
  
     // permite que o motor se mova em uma direção particular
     digitalWrite(dirPin2, HIGH);
 
     // faz pulsos para fazer uma rotação de ciclo 
     for(int y = 0; y < 50; y++)
{
     digitalWrite(stepPin2,HIGH);
     delayMicroseconds(500);
     digitalWrite(stepPin2,LOW);
     delayMicroseconds(500);
}
}

  

if (b4 == HIGH){
  
    //Muda a direção da rotação
    digitalWrite(dirPin2,LOW);
 
    // faz pulsos para fazer duas rotações de ciclo
    for(int y = 0; y < 50; y++)
{
    digitalWrite(stepPin2,HIGH);
    delayMicroseconds(500);
    digitalWrite(stepPin2,LOW);
    delayMicroseconds(500);
}
}

//==============================================================================================================================================
//**********************************************************************************************************************************************

   //CONTROLE MOTOR 3

 
   
if (b5 == HIGH){
  
     // permite que o motor se mova em uma direção particular
     digitalWrite(dirPin3, HIGH);
 
     // faz pulsos para fazer uma rotação de ciclo 
     for(int z = 0; z < 50; z++)
{
     digitalWrite(stepPin3,HIGH);
     delayMicroseconds(500);
     digitalWrite(stepPin3,LOW);
     delayMicroseconds(500);
}
}

  

if (b6 == HIGH){
  
    //Muda a direção da rotação
    digitalWrite(dirPin3,LOW);
 
    // faz pulsos para fazer duas rotações de ciclo
    for(int z = 0; z < 50; z++)
{
    digitalWrite(stepPin3,HIGH);
    delayMicroseconds(500);
    digitalWrite(stepPin3,LOW);
    delayMicroseconds(500);
}
}

//==============================================================================================================================================
//**********************************************************************************************************************************************

   //CONTROLE MOTOR 4

   
if (b7 == HIGH){
  
     // permite que o motor se mova em uma direção particular
     digitalWrite(dirPin4, HIGH);
 
     // faz pulsos para fazer uma rotação de ciclo 
     for(int w = 0; w < 50; w++)
{
     digitalWrite(stepPin4,HIGH);
     delayMicroseconds(500);
     digitalWrite(stepPin4,LOW);
     delayMicroseconds(500);
}
}

   

if (b8 == HIGH){
  
    //Muda a direção da rotação
    digitalWrite(dirPin4,LOW);
 
    // faz pulsos para fazer duas rotações de ciclo
    for(int w = 0; w < 50; w++)
{
    digitalWrite(stepPin4,HIGH);
    delayMicroseconds(500);
    digitalWrite(stepPin4,LOW);
    delayMicroseconds(500);
}
}

//==============================================================================================================================================
//**********************************************************************************************************************************************

   //CONTROLE MOTOR 5

   
   
if (b9 == HIGH){
  
     // permite que o motor se mova em uma direção particular
     digitalWrite(dirPin5, HIGH);
 
     // faz pulsos para fazer uma rotação de ciclo 
     for(int a = 0; a < 50; a++)
{
     digitalWrite(stepPin5,HIGH);
     delayMicroseconds(500);
     digitalWrite(stepPin5,LOW);
     delayMicroseconds(500);
}
}

   

if (b10 == HIGH){
  
    //Muda a direção da rotação
    digitalWrite(dirPin5,LOW);
 
    // faz pulsos para fazer duas rotações de ciclo
    for(int a = 0; a < 50; a++)
{
    digitalWrite(stepPin5,HIGH);
    delayMicroseconds(500);
    digitalWrite(stepPin5,LOW);
    delayMicroseconds(500);
}
}

//==============================================================================================================================================
//**********************************************************************************************************************************************

   //CONTROLE MOTOR 6

   
   
if (b11 == HIGH){
  
     // permite que o motor se mova em uma direção particular
     digitalWrite(dirPin6, HIGH);
 
     // faz pulsos para fazer uma rotação de ciclo 
     for(int b = 0; b < 50; b++)
{
     digitalWrite(stepPin6,HIGH);
     delayMicroseconds(500);
     digitalWrite(stepPin6,LOW);
     delayMicroseconds(500);
}
}

   

if (b12 == HIGH){
  
    //Muda a direção da rotação
    digitalWrite(dirPin6,LOW);
 
    // faz pulsos para fazer duas rotações de ciclo
    for(int b = 0; b < 50; b++)
{
    digitalWrite(stepPin6,HIGH);
    delayMicroseconds(500);
    digitalWrite(stepPin6,LOW);
    delayMicroseconds(500);
}
}

//==============================================================================================================================================
//**********************************************************************************************************************************************

   //CONTROLE MOTOR 7

   
   
if (b13 == HIGH){
  
     // permite que o motor se mova em uma direção particular
     digitalWrite(dirPin7, HIGH);
 
     // faz pulsos para fazer uma rotação de ciclo 
     for(int c = 0; c < 50; c++)
{
     digitalWrite(stepPin7,HIGH);
     delayMicroseconds(500);
     digitalWrite(stepPin7,LOW);
     delayMicroseconds(500);
}
}

   

if (b14 == HIGH){
  
    //Muda a direção da rotação
    digitalWrite(dirPin7,LOW);
 
    // faz pulsos para fazer duas rotações de ciclo
    for(int c = 0; c < 50; c++)
{
    digitalWrite(stepPin7,HIGH);
    delayMicroseconds(500);
    digitalWrite(stepPin7,LOW);
    delayMicroseconds(500);
}
}

//==============================================================================================================================================
//**********************************************************************************************************************************************

   //CONTROLE MOTOR 8

  
   
if (b15 == HIGH){
  
     // permite que o motor se mova em uma direção particular
     digitalWrite(dirPin8, HIGH);
 
     // faz pulsos para fazer uma rotação de ciclo 
     for(int d = 0; d < 50; d++)
{
     digitalWrite(stepPin8,HIGH);
     delayMicroseconds(500);
     digitalWrite(stepPin8,LOW);
     delayMicroseconds(500);
}
}

   

if (b16 == HIGH){
  
    //Muda a direção da rotação
    digitalWrite(dirPin8,LOW);
 
    // faz pulsos para fazer duas rotações de ciclo
    for(int d = 0; d < 50; d++)
{
    digitalWrite(stepPin8,HIGH);
    delayMicroseconds(500);
    digitalWrite(stepPin8,LOW);
    delayMicroseconds(500);
}
}

    //delay(100); //1 segundo de delay para inverter a direção
  
}
Mostrar mensagens desde a última:




Ir para:  
Todos os horários são GMT - 3 HorasVocê não tem permissão para escrever novas mensagens
v não tem permissão para responder às mensagens
Você não tem permissão para editar suas mensagens
Você não tem permissão para deletar suas mensagens
Você não tem permissão para classificar tópicos
Você não tem permissão para classificar mensagens
Você não tem permissão para votar em enquetes
Anexar downloads : Proibido
Fazer Download de Arquivos: Permitido
Powered by phpBB © 2001 phpBB Group