Isabelle Murollo
/
Projeto_CCM_Maquinas_MotorPasso
Centro de Controle de Motores
motor_passp_v3.txt
- Committer:
- isabellemm
- Date:
- 17 months ago
- Revision:
- 4:3bc68a7b299d
File content as of revision 4:3bc68a7b299d:
/******************************************* Motor de Passo *******************************************/ #include "mbed.h" Serial envia(PC_10, PC_11); Serial pc(USBTX, USBRX); // variáveis int estado = 0; float tempo; char desligar = 'a'; char cte = 'b'; // 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); // entradas InterruptIn ena_all(D11); InterruptIn enable(PB_6); DigitalIn dir(D9); AnalogIn POT(A5); // debouncing Timer debounce; void muda_en(){ if (debounce.read_ms()>200){ estado=!estado; } debounce.reset(); } void muda_all(){ envia.printf("%c", desligar); pc.printf("%c", desligar); estado = 0; debounce.reset(); } int main(){ enable.rise(&muda_en); ena_all.rise(&muda_all); debounce.start(); envia.baud(115200); pc.baud(115200); // configurações iniciais EN_A = 0; EN_B = 0; IN1_A = 0; IN2_A = 0; IN1_A = 0; IN1_B = 0; while(1) { //envia.printf("%c", cte); pc.printf("%c", cte); envia.putc('b'); if (estado == 1){ tempo = 0.005+(0.050*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; } } }