Centro de Controle de Motores

Dependencies:   TextLCD mbed

gabs.txt

Committer:
isabellemm
Date:
16 months ago
Revision:
4:3bc68a7b299d

File content as of revision 4:3bc68a7b299d:

/*******************************************
Motor de Passo
*******************************************/
#include "mbed.h"

// motor de passo
DigitalOut EN_A(D2);
DigitalOut IN1_A(D5);
DigitalOut IN2_A(D4);
DigitalOut EN_B(A4);
DigitalOut IN1_B(A0);
DigitalOut IN2_B(A1);

DigitalOut led(LED1);

InterruptIn enable(PB_6);
int estado = 0;
Timer debounce;

// botões retentivos
DigitalIn dir(D9);

AnalogIn POT(A5);
float tempo;

void muda_en(){
        if (debounce.read_ms()>200){
        estado=!estado;
    }
    debounce.reset();
}

void queda(){
    debounce.reset();
}

int main(){    
    enable.rise(&muda_en);
    debounce.start();
    
    // configurações iniciais
    EN_A = 0; 
    EN_B = 0; 
    IN1_A = 0;
    IN2_A = 0;
    IN1_A = 0;
    IN1_B = 0;

    while(1) {
        
        if (estado == 1){
            tempo = 0.005+(0.05*POT.read());
        
            //SENTIDO HORÁRIO     
            if (dir.read() == 0){
        
                // passo 0
                EN_A = 1;
                IN1_A = 1;
                IN2_A = 0;
                EN_B = 0;
                IN1_B = 1;
                IN2_B = 0;
                wait(tempo);
                
                // passo 1
                EN_A = 0;
                IN1_A = 0;
                IN2_A = 1;
                EN_B = 1;
                IN1_B = 1;
                IN2_B = 0;
                wait(tempo);
       
                // passo 2
                EN_A = 1;
                IN1_A = 0;
                IN2_A = 1;
                EN_B = 0;
                IN1_B = 0;
                IN2_B = 1;
                wait(tempo);
                
                // passo 3
                EN_A = 0;
                IN1_A = 1;
                IN2_A = 0;
                EN_B = 1;
                IN1_B = 0;
                IN2_B = 1;
                wait(tempo);
            }
            
            //SENTIDO ANTI-HORÁRIO
            else if (dir.read() == 1){ 
            
                // passo 0
                EN_A = 1;
                IN1_A = 1;
                IN2_A = 0;
                EN_B = 0;
                IN1_B = 1;
                IN2_B = 0;
                wait(tempo);
                
                // passo 1 ("passo 3")
                EN_A = 0;
                IN1_A = 1;
                IN2_A = 0;
                EN_B = 1;
                IN1_B = 0;
                IN2_B = 1;
                wait(tempo);
                
                // passo 2
                EN_A = 1;
                IN1_A = 0;
                IN2_A = 1;
                EN_B = 0;
                IN1_B = 0;
                IN2_B = 1;
                wait(tempo);
               
                // passo 3 ("passo 1")
                EN_A = 0;
                IN1_A = 0;
                IN2_A = 1;
                EN_B = 1;
                IN1_B = 1;
                IN2_B = 0;
                wait(tempo);
             }
        }
        
        else{
            EN_A = 0;
            EN_B = 0;
            IN1_A = 0;
            IN2_A = 0;
            IN1_A = 0;
            IN1_B = 0;
        }
    }
}