Isabelle Murollo
/
Projeto_CCM_Maquinas_MotorPasso
Centro de Controle de Motores
Diff: moto_passo_v2.txt
- Revision:
- 4:3bc68a7b299d
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/moto_passo_v2.txt Thu Dec 01 19:39:01 2022 +0000 @@ -0,0 +1,180 @@ +/******************************************* +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; + } + } +} \ No newline at end of file