Isabelle Murollo
/
Projeto_CCM_Maquinas_MotorPasso
Centro de Controle de Motores
moto_passo_v2.txt
- Committer:
- isabellemm
- Date:
- 16 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 ligar = 'a'; char desligar = 'b'; char men_rec; // 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(){ //men_rec = envia.getc(); if (debounce.read_ms()>200){ if (estado == 1 || men_rec == 'c'){ // ou estado = 0; envia.printf("%c", desligar); } else{ estado = 1; envia.printf("%c", ligar); } } debounce.reset(); } void queda(){ debounce.reset(); } void RX_interrupt(){ while (envia.readable()){ men_rec = envia.getc(); } } int main(){ enable.rise(&muda_en); ena_all.rise(&muda_all); debounce.start(); envia.baud(9600); envia.attach(&RX_interrupt, Serial::RxIrq); // configurações iniciais EN_A = 0; EN_B = 0; IN1_A = 0; IN2_A = 0; IN1_A = 0; IN1_B = 0; while(1) { //men_rec = envia.getc(); if (estado == 1){ if (POT.read()>0.1f){ 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; } } }